1.介紹 Random庫Python中用於生成隨機數的一個標準庫。電腦沒有辦法產生真正的隨機數,但它可以產生偽隨機數。 偽隨機數是電腦按照一定的運算規則產生的一些數據,只不過這些數據表現為隨機數的形式。電腦中採用梅森旋轉演算法生成為隨機序列,序列中的每一個元素就是偽隨機數,由於電腦不能產生真正 ...
String類部分源碼
//被final修飾不可被繼承
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
//String維護char[] 所以不可修改
private final char value[];
創建String對象的方式
- str1它首先會去方法區的常量池中找,有“hello”這個對象就直接引用,沒有就創建一個新的對象“hello”,存放在常量池中。
- 而new的方式首先會在堆中創建一個對象,然後再去常量池中找,有直接引用,沒有就創建一個新的對象“hello”。
兩者區別
- 直接賦值創建0或1個對象,而new的方式創建1或2個對象。
- 為了提升Java虛擬機的性能和減少記憶體的開銷,避免字元串的重覆創建,儘量少使用new的方式創建String對象
代碼分析
public static void main(String[] args) {
String str1 = "hello";//指向常量池中的引用
String str2 = new String("hello");//指向堆中的引用
String str3 = str2;//str3==str2 true
String str4 = "hello";//str1==str4 true
}
字元串拼接
String a="A";
String b="B";
String c=new String("C");
a="A"+b;//變數拼接 指向變為堆中地址
a="A"+c;//變數拼接 指向變為堆中地址!
a="A"+"A";//常量拼接依舊指向常量池中的地址 a=="AA" true
final String d="D";//這是常量
a="A"+d//a=="AD" true
+號變數拼接底層原理 StringBuidlerd構造初始化容量為16的char[] 然後調用append()進行拼接 最後將結果new String()的形式賦給左邊變數