![](/img/trans.png)
[英]Calculating length in UTF-8 of Java String without actually encoding it
[英]Java - calculating String length
在初始化數組時,Java 會詢問該數組的長度。 否則我們會得到編譯時錯誤。
char[] b = new char[3];
這里3是數組b的長度。我們可以從b.length得到它
當我們看到 String 類的構造函數時
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
String 構造函數中的原始參數來自哪里? 那怎么得到它的長度?
在字符串長度方法中
public int length() {
return value.length;
}
我的問題 #1
我們如何在沒有初始化數組的情況下獲得長度(因為構造函數內部沒有數組初始化)?
我的問題 #2
String s = new String("MyString");
在上面的行中,我正在為String
類創建實例,當我檢查String
類的構造函數時,我遇到了以下構造函數代碼
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
我的疑問是在構造函數中他們如何將 String 類本身作為參數? 從哪里加載?
下面的語句構造一個String
實例s
在這種情況下,“字符串文字”出"MyString"
String s = new String("MyString");
它等效且不太可取
String s = "MyString";
根據官方文檔
特別是關於"MyString"
的長度,編譯器會在解析源代碼時計算文字中的字符數,並用適當的長度初始化該字符串中的char[]
。 然后它將創建一個具有相同長度的新String s
作為旁注,您可以(出於類似原因)創建一個數組而無需自己指定長度。 編譯器將計算元素的數量並相應地設置長度 例如
char[] b = {'a', 'b', 'c'};
Java 允許提供您正在編寫構造函數或其他方法的同一類對象的參數。
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
String 類從 hash 中獲取長度,因為 hash 有一個唯一的代碼,它告訴你有多少個字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.