1:StringBuffer(掌握) (1)用字符串做拼接,比較耗時并且也耗內存,而這種拼接操作又是比較常見的,為了解決這個問題,java就提供了 一個字符串緩沖區類。StringBuffer供我們使用。 (2)StringBuffer的構造方法 A:StringBuffer() B:StringBuffer(int size) C:StringBuffer(String str)
/* * 線程安全(多線程講解) * 安全 -- 同步 -- 數據是安全的 * 不安全 -- 不同步 -- 效率高一些 * 安全和效率問題是永遠困擾我們的問題。 * 安全:醫院的網站,銀行網站 * 效率:新聞網站,論壇之類的 * * StringBuffer: * 線程安全的可變字符串。 * * StringBuffer和String的區別? * 前者長度和內容可變,后者不可變。 * 如果使用前者做字符串的拼接,不會浪費太多的資源。 * * StringBuffer的構造方法: * public StringBuffer():無參構造方法 * public StringBuffer(int capacity):指定容量的字符串緩沖區對象 * public StringBuffer(String str):指定字符串內容的字符串緩沖區對象 * * StringBuffer的方法: * public int capacity():返回當前容量。 理論值 * public int length():返回長度(字符數)。 實際值 */public class StringBufferDemo { public static void main(String[] args) { // public StringBuffer():無參構造方法 StringBuffer sb = new StringBuffer(); System.out.2:Integer(掌握) (1)為了讓基本類型的數據進行更多的操作,Java就為每種基本類型提供了對應的包裝類類型 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean (2)Integer的構造方法 A:Integer i = new Integer(100); B:Integer i = new Integer(“100”); 注意:這里的字符串必須是由數字字符組成/* * Integer的構造方法: * public Integer(int value) * public Integer(String s) * 注意:這個字符串必須是由數字字符組成 */public class IntegerDemo { public static void main(String[] args) { // 方式1 int i = 100; Integer ii = new Integer(i); System.out.println("ii:" + ii); // 方式2 String s = "100"; // NumberFormatException // String s = "abc"; Integer iii = new Integer(s); System.out.println("iii:" + iii); }}(3)String和int的相互轉換 A:String -- int Integer.parseInt("100"); B:int -- String String.valueOf(100);/* * int類型和String類型的相互轉換 * * int -- String * String.valueOf(number) * * String -- int * Integer.parseInt(s) */public class IntegerDemo { public static void main(String[] args) { // int -- String int number = 100; // 方式1 String s1 = "" + number; System.out.println("s1:" + s1); // 方式2 String s2 = String.valueOf(number); System.out.println("s2:" + s2); // 方式3 // int -- Integer -- String Integer i = new Integer(number); String s3 = i.toString(); System.out.println("s3:" + s3); // 方式4 // public static String toString(int i) String s4 = Integer.toString(number); System.out.println("s4:" + s4); System.out.println("-----------------"); // String -- int String s = "100"; // 方式1 // String -- Integer -- int Integer ii = new Integer(s); // public int intValue() int x = ii.intValue(); System.out.println("x:" + x); //方式2 //public static int parseInt(String s) int y = Integer.parseInt(s); System.out.println("y:"+y); }}(4)其他的功能(了解) 進制轉換/* * 常用的基本進制轉換 * public static String toBinaryString(int i) * public static String toOctalString(int i) * public static String toHexString(int i) * * 十進制到其他進制 * public static String toString(int i,int radix) * 由這個我們也看到了進制的范圍:2-36 * 為什么呢?0,...9,a...z * * 其他進制到十進制 * public static int parseInt(String s,int radix) */public class IntegerDemo { public static void main(String[] args) { // 十進制到二進制,八進制,十六進制 System.out.println(Integer.toBinaryString(100)); System.out.println(Integer.toOctalString(100)); System.out.println(Integer.toHexString(100)); System.out.println("-------------------------"); // 十進制到其他進制 System.out.println(Integer.toString(100, 10)); System.out.println(Integer.toString(100, 2)); System.out.println(Integer.toString(100, 8)); System.out.println(Integer.toString(100, 16)); System.out.println(Integer.toString(100, 5)); System.out.println(Integer.toString(100, 7)); System.out.println(Integer.toString(100, -7)); System.out.println(Integer.toString(100, 37)); System.out.println(Integer.toString(100, 36)); System.out.println("-------------------------"); //其他進制到十進制 System.out.println(Integer.parseInt("100", 10)); System.out.println(Integer.parseInt("100", 2)); System.out.println(Integer.parseInt("100", 8)); System.out.println(Integer.parseInt("100", 16)); System.out.println(Integer.parseInt("100", 23)); //NumberFormatException //System.out.println(Integer.parseInt("123", 2)); }}(5)JDK5的新特性 自動裝箱 基本類型--引用類型 自動拆箱 引用類型--基本類型 把下面的這個代碼理解即可: Integer i = 100; i += 200;/* * JDK5的新特性 * 自動裝箱:把基本類型轉換為包裝類類型 * 自動拆箱:把包裝類類型轉換為基本類型 * * 注意一個小問題: * 在使用時,Integer x = null;代碼就會出現NullPointerException。 * 建議先判斷是否為null,然后再使用。 */public class IntegerDemo { public static void main(String[] args) { // 定義了一個int類型的包裝類類型變量i // Integer i = new Integer(100); Integer ii = 100; ii += 200; System.out.println("ii:" + ii); // 通過反編譯后的代碼 // Integer ii = Integer.valueOf(100); //自動裝箱 // ii = Integer.valueOf(ii.intValue() + 200); //自動拆箱,再自動裝箱 // System.out.println((new StringBuilder("ii:")).append(ii).toString()); Integer iii = null; // NullPointerException if (iii != null) { iii += 1000; System.out.println(iii); } }}(6)面試題 -128到127之間的數據緩沖池問題/* * 看程序寫結果 * * 注意:Integer的數據直接賦值,如果在-128到127之間,會直接從緩沖池里獲取數據 */public class IntegerDemo { public static void main(String[] args) { Integer i1 = new Integer(127); Integer i2 = new Integer(127); System.out.println(i1 == i2); System.out.println(i1.equals(i2)); System.out.println("-----------"); Integer i3 = new Integer(128); Integer i4 = new Integer(128); System.out.println(i3 == i4); System.out.println(i3.equals(i4)); System.out.println("-----------"); Integer i5 = 128; Integer i6 = 128; System.out.println(i5 == i6); System.out.println(i5.equals(i6)); System.out.println("-----------"); Integer i7 = 127; Integer i8 = 127; System.out.println(i7 == i8); System.out.println(i7.equals(i8)); // 通過查看源碼,我們就知道了,針對-128到127之間的數據,做了一個數據緩沖池,如果數據是該范圍內的,每次并不創建新的空間 // Integer ii = Integer.valueOf(127); }}新聞熱點
疑難解答