| 基本類型 | 對應的包裝類 |
| byte | Byte |
| short | Short |
| int | integer |
| long | Long |
| float | Float |
| double | Double |
| char | Charcter |
| boolean | Boolean |
1. 基本數據類型對象包裝類中的方法 static String toString(基本類型);2. String類中的方法: static String valueOf(基本類型)3. 基本類型數據 +“ ”;【重點要掌握的就是:】 字符串---->基本類型數據。 返回值類型——>基本類型 ;參數——>字符串。 基本數據類型 變量名 = 基本數據類型包裝類.parseXxx(XxxString); Long l = Long.parseLong("4546545646546"); System.out.PRintln(Integer.parseInt("23") + 1); 在八個基本類型對象包裝類中只有一個對象沒有parse方法,就是Character.【類型轉換錯誤】——NumberFormatException——數字格式異常——我碰到了,因為我多加了一個 空格。【Integer中要掌握的方法】涉及到一個進制轉換的問題。十進制-->其他進制。二進制:static String toBinaryString(int);16進制:static String toHexString(int);八進制:static String toOctalString(int);其他進制——>轉成十進制; Integer.toString(6 , 2); 將6轉換為二進制。 parseInt(intString , radix); System.out.println(Integer.parseInt("110") , 2);————————————————————————————————【基本數據類型值 和 基本類型數據對象之間的轉換】 使用構造函數——Integer(); 即可以接受基本數值,也可以接收基本數值的字符串形式。 可以使用基本類型對象中的方法。 static Integer valueOf(int);【基本類型的對象 和 基本數據類型數值】 int intValue();如: Integer i = new Integer(34); int num = i.intValue( ); System.out.println(num);————————————————————————————————————————————【如果兩數被封裝成了對象該如何比較呢?】 【 基本數據類型的比較——用比較運算符; 引用數據類型使用compareTo進行比較。】 int compareTo( Integer anotherInteger ) 在數字上比較兩個Integer對象。在數值上比較兩個Integer對象。以0 正數 負數 比較兩個數多的大小。Integer a = new Integer(7);Integer b = new Integer(5);System.out.println(a.compareTo(b));【重點】對象想要進行比較,必須通過方法來完成,這個方法就是compareTo。而很多對象都可以進行比較。所以這個方法定義在Comparable接口中。想要對象具備比較功能,只要實現Comparable接口。【練習題】。————————————————————————————————————————————————【基本數據類型對象包裝類JDk1.5以后的新特性】——【自動拆箱,裝箱】簡化書寫。Integer i = new Integer(5);基本數據類型對象包裝類,對象創建的簡化寫法Integer i = 5;1. Integer i = 5;(其實在內存中也是通過 new Integer(5)這種方式創建的!)這種方式成為——自動裝箱,Integer.valueOf(5)自動完成了對象創建的動作。2. 在進行 i = i + 5,運算時——= 右邊的i 會先轉成基本數據值(自動拆箱)i.intValue(),其實質為:i = i.intValue() + 5 ;然后再和5進行加法運算。= 右邊運算完的結果,再次被自動裝箱變成Integer對象賦給i.一旦簡化就有弊端:多具備一個值null. 使用自動裝箱拆箱時,要進行null的健壯性判斷。【實例】Integer x = null;x = x.intValue() + 4; x為null 不能調用方法,此時會發生:NullPointerException異常。————————————————————————————————Boolean b = true; boolean b = true;的區別答:前者:類類型變量指向一個對象,true為一個對象; 后者:true為基本類型變量。————————————————————————————————在JdK1.5的新特性自動裝箱中,如果數值在byte類型范圍內(-128 ~ 127)。如果該對象數值重復出現多個引用其實是指向同一個Integer對象,節省空間!但是超出了byte范圍,都會生產新的Integer對象。Integer m = 127;Integer n = 127;System.out.println( m == n); //trueSystem.out.println(m.equals(n)); //true____________________________________Object x = 5;Object x 接受到了一個Integer對象,自動裝箱。然而 Object不可以接受基本數據類型。——————————————————————————————————————【面試題】——"34 9 -7 67 25"要求對這個字符串中的數值進行從小到大的排序,生成一個數值有序的字符串。【必須會】思路:1. 把其中的數拿出來,——對字符串進行切割。2. 對數進行排序3. 再追加成字符串。步驟:1.split;——這個方法我還沒掌握,怎么用。【】——數組排序 2.定義一個int數組 將 字符串數組——>int數組 3.對int數組排序; 4. 將int數組轉成字符串數組。代碼體現:[java] view plain copy print?/** * 需求:"34 9 -7 67 25"要求對這個字符串中的數值進行從小到大的排序,生成一個數值有序的字符串。 * @author Administrator * */ public class StringTestint { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //要操作的目標 String s = "34 9 -7 67 25"; //用空格對原字符串進行切割,轉成字符串數組; String[] s1 = s.split(" "); //定義int[]數組,用來存放整型數據 int[] arr = new int[s1.length]; //將字符串數組轉成int類型的數組。 for(int i = 0 ; i < s1.length; i++) arr[i] = Integer.parseInt(s1[i]); //對int類型的數組進行排序 for(int i = 0 ; i < s1.length;i++){ for(int j = i+1 ; j < s1.length;j++){ if(arr[i] > arr[j]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } //定義字符串緩沖區,并將int類型的數組轉換為 字符串類型的數組。 StringBuilder sb = new StringBuilder(); for (int i = 0; i < arr.length; i++) { if(i != arr.length - 1) sb.append(arr[i] + " "); else sb.append(arr[i]); } System.out.println(sb); } } 代碼優化:[java] view plain copy print?import java.util.Arrays; public class WrapperTest2 { private static final String SPACE = " "; /** * @param args */ public static void main(String[] args) { /* * 綜合練習: * "34 9 -7 12 67 25"要求對這個字符串中的數值進行從小到大的排序, * 然后生成一個數值有序的字符串。 * * 思路: * 1,看到排序,就想要到了數組 * 2,那數組中的元素怎么獲取呢?數值都在字符串中。 * 3,先從字符串中獲取到這些具體的數值。怎么獲取呢? * 4,發現這個字符串居然有規律。數值之間都是由空格隔開的。 * 可以對字符串進行切割。 * 5,將獲取的數據存儲到數組中并排序,在將數組轉成字符就可以了。哦了。 * * * 步驟: * 1,將字符串切割成字符串數組。split。 * 2,定義一個int數組將字符串數組中的元素轉成整數存儲到int數組中。 * 3,對int數組排序。 * 4,將int數組排序后轉成一個字符串。 * */ String str = "34 9 -7 12 67 25"; str = sortStringNumber(str); System.out.println(str); } public static String sortStringNumber(String str) { //1,將字符串中的數值通過指定的規則進行切割獲取字符串數組。 String[] str_nums = toStringArray(str); //2,將字符串數組轉成int數組。 int[] nums = toIntArray(str_nums); //3,對int數組排序; sortIntArray(nums); //4,將int數組變成字符串。 return arrayToString(nums); } /* * 將int數組變成字符串。 */ private static String arrayToString(int[] nums) { //1,創建字符串緩沖區。 StringBuilder sb = new StringBuilder(); for (int i = 0; i < nums.length; i++) { if(i!=nums.length-1) sb.append(nums[i]+SPACE); else sb.append(nums[i]); } return sb.toString(); } /* * 對int數組排序。 */ private static void sortIntArray(int[] nums) { Arrays.sort(nums); } /* * 將字符串數組轉成int數組。 */ private static int[] toIntArray(String[] str_nums) { //1,先定義一個int數組。 int[] arr = new int[str_nums.length]; //2,對字符串數組進行遍歷。 for (int i = 0; i < str_nums.length; i++) { //將數組格式的字符串轉成整數。存儲到arr數組中。 arr[i] = Integer.parseInt(str_nums[i]); } return arr; } /* * 將字符串轉成字符串數組。 */ private static String[] toStringArray(String str) { return str.split(SPACE); } }2.適當練習valueOf()、xxxValue()、parseXxx()方法。3.類型轉換(以下為該周作業)。public class StudyDiary01 { public static void main(String[] args){ //String --> int String s = "111"; int i1 = Integer.parseInt(s); //直接使用靜態方法,不會產生多余的對象,但會拋出異常 System.out.println("String --> int : i1=" + i1); int i2 = Integer.valueOf(s).intValue(); //Integer.valueOf(s) 相當于 new Integer(Integer.parseInt(s)),也會拋異常,但會多產生一個對象 System.out.println("String --> int : i2=" + i2); int i3 = Integer.parseInt(s,10);//若int i = Integer.parseInt("123",16);即可以看成i = 1*16*16+2*16+3 System.out.println("String --> int : i3=" + i3 + '/n'); //int --> String int j = 222; String t1 = String.valueOf(j);//直接使用String類的靜態方法,只產生一個對象 System.out.println("int --> String : t1=" + t1); String t2 = Integer.toString(j); //直接使用靜態方法,產生新的對象,會拋出異常 System.out.println("int --> String : t2=" + t2); String t3 = "" + j; //會產生兩個String對象 System.out.println("int --> String : t3=" + t3 + '/n'); //int --> Integer int m = 333; Integer n1 = m; //裝箱 System.out.println("int --> Integer:n1=" + n1); Integer n2 = new Integer(n1); System.out.println("int --> Integer:n2=" + n2); Integer n3 = Integer.valueOf(n2); System.out.println("int --> Integer:n3=" + n3 + '/n'); //Integer --> int Integer x=444; int y1 = x; //拆箱 System.out.println("Integer --> int:y1=" + y1); int y2 = x.intValue(); System.out.println("Integer --> int:y2=" + y2); int y3 = Integer.valueOf(x); System.out.println("Integer --> int:y3=" + y3 + '/n'); //String --> Integer String r = "555"; Integer k1 = Integer.valueOf(r); //這種方法常用 System.out.println("String --> Integer:k1=" + k1); Integer k2 = new Integer(r); System.out.println("String --> Integer:k2=" + k2); Integer k3 = Integer.parseInt(r); System.out.println("String --> Integer:k3=" + k3); Integer k4 = Integer.parseInt(r,10); System.out.println("String --> Integer:k4=" + k4 + '/n'); //Integer --> String Integer l = 666; String z1 = String.valueOf(l); System.out.println("Integer -->Stringf:z1=" + z1); String z2 = l.toString(); System.out.println("Integer -->Stringf:z2=" + z2); String z3 = "" + l; System.out.println("Integer -->Stringf:z3=" + z3 + '/n'); } }(1)String轉換為intint i = Integer.parseln(str);int i = Integer.valueOf(str).intValue();(2)String轉換為Integer 兩種構造方法的區別,Character只有一種(3)int轉換為String String s = s.valueOf(i); String s = Integer.toString(i); String s = “”+i;(4)int轉換為Integer(5)Integer轉換為String(6)Integer轉換為int(7)Integer轉換為String4.通過鍵盤輸入,初始化兩個數將這兩個數值交換后,輸出顯示后的數據。import java.util.Scanner; public class StudyDiary02 { public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("請輸入第一個值:"); int a = input.nextInt(); System.out.print("請輸入第二個值:"); int b = input.nextInt(); System.out.println("交換之前的兩個值為"+a+","+b); int c; c = a; a = b; b = c; System.out.println("交換之后的兩個值為"+a+","+b); } } 5.定義一個五位整數,求各個位上的數的和import java.util.Scanner; public class StudyDiary03 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("請輸入一個五位整數:"); int i = in.nextInt(); int sum = 0; if (i < 10000 || i > 99999) { System.out.println("輸入有誤!"); } else { for (int j = 0; j < 5 ; j++ ) { sum += i % 10; i = i / 10; } System.out.println("該五位整數各位數上之和為sum=" + sum ); } } } 6.根據天數計算周數和剩余的天數。天數通過鍵盤輸入。import java.util.Scanner; public class StudyDiary04 { public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.print("請輸入要轉換的天數:"); int day = in.nextInt(); int week = day / 7; day = day % 7; System.out.println("為" + week + "周," + day + "天。"); } } 7.學會使用API文檔,看一看String類的所有方法。(ing......)8.明確什么是引用類型,和C++的指針有什么異同,掌握java中數組的基本知識,例如(動態/靜態)初始化,賦值,求大小,關于大小改變與C/C++中的區別。
新聞熱點
疑難解答