java中常見對象——基本包裝類
為了對基本數據類型進行更多的操作,更方便的操作,Java就針對每一種基本數據類型提供了對應的類類型。包裝類類型:
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
用於基本數據類型與字符串之間的轉換。
demo: |
public class IntegerDemo { public static void main(String[] args) { // 不麻煩的就來了 // public static String toBinaryString(int i) System.out.println(Integer.toBinaryString(100)); // public static String toOctalString(int i) System.out.println(Integer.toOctalString(100)); // public static String toHexString(int i) System.out.println(Integer.toHexString(100));
// public static final int MAX_VALUE System.out.println(Integer.MAX_VALUE); // public static final int MIN_VALUE System.out.println(Integer.MIN_VALUE); } } |
Integer的構造方法:
public Integer(int value)
public Integer(String s)
註意:這個字符串必須是由數字字符組成
demo: |
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); } } |
int類型和String類型的相互轉換:
int -- String
String.valueOf(number)
String -- int
Integer.parseInt(s)
Demo: |
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); } } |
Integer中進制轉換的操作
常用的基本進制轉換
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)
demo: |
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, 70)); System.out.println(Integer.toString(100, 1)); System.out.println(Integer.toString(100, 17)); System.out.println(Integer.toString(100, 32)); 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)); } } |
JDK5的新特性——自動裝箱/自動拆箱:
自動裝箱:把基本類型轉換為包裝類類型
自動拆箱:把包裝類類型轉換為基本類型
註意一個小問題:
在使用時,Integer x = null;代碼就會出現NullPointerException。
建議先判斷是否為null,然後再使用。
demo: |
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); } } } |
Integer的數據直接賦值,如果在-128到127之間,會直接從緩沖池裏獲取數據:
demo: |
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); } } |
java中常見對象——基本包裝類