java基礎-Integer類常用方法介紹
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
在實際程序使用中,程序界面上用戶輸入的數據都是以字符串類型進行存儲的。而程序開發中,我們需要把字符串數據根據需求轉換成指定的基本數據類型,如年齡需要轉換成int類型,考試成績需要轉換成double類型等。那么,想實現字符串與基本數據之間轉換應該怎么辦呢?接下來我們就一起學習一下Java的包裝類吧。
一.基本類型包裝類概述
Java中提供了相應的對象來解決該問題,基本數據類型對象包裝類:java將基礎數據類型值封裝成了對象。封裝成對象有什么好處?當然是可以提供更多的操作基本數值的功能啦~
其中需要注意int對應的是Integer,char對應的Character,其它6個都是基本類型首字母大寫即可。基本數據類型的特點是用於在基本數據和字符串之間進行轉換。我們主要研究的類就是其中一個,即Integer,因為其它的類的方法跟它幾乎一致。要學會舉一反三喲~
二.Integer類常用方法
1>.ParseInt(String s)方法(將基本類型轉換成字符串。)
a>.用於將字符串轉換成基本數據類型(int),要求字符串必須是數字格式。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class ArrayListDemo { 10 public static void main(String[] args) { 11 String year = "2018"; 12 int i = Integer.parseInt(year); 13 System.out.println(i/2); 14 } 15 } 16 17 18 /* 19 以上代碼執行結果如下: 20 1009 21 */
b>.parseInt(String s,int radix)方法
將字符串s按照radix進行轉換相應的進制數,然后運行的結果都是以十進制的形式打印。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class ArrayListDemo { 10 public static void main(String[] args) { 11 String year = "1110"; 12 String age = "A"; 13 //指定year的進制為2進制 14 int i = Integer.parseInt(year,2); 15 //指定age的進制為16進制 16 int i2 = Integer.parseInt(age,16); 17 System.out.println(i); 18 System.out.println(i2); 19 } 20 } 21 22 /* 23 以上代碼執行結果如下: 24 14 25 10 26 */
2>.基本數據類型int轉換成字符串
a>.任何類型+"" 變成String類型(推薦使用)
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class Demo1 { 10 public static void main(String[] args) { 11 int src = 3; 12 String dest = src + ""; 13 System.out.println(dest+1); 14 } 15 } 16 17 18 19 /* 20 31 21 */
b>.Integer類中的靜態方法toString()轉換成字符串
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class Demo1 { 10 public static void main(String[] args) { 11 int src = 50; 12 String dest = Integer.toString(src); 13 System.out.println(dest+1); 14 } 15 } 16 17 18 19 /* 20 501 21 */
c>.toString(int ,int 進制),將int整數轉成指定的進制數
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class Demo1 { 10 public static void main(String[] args) { 11 int src = 32; 12 //將int整數轉換成指定的進制數 13 String dest = Integer.toString(src,2); 14 System.out.println(dest); 15 } 16 } 17 18 19 20 /* 21 100000 22 */
3>.Integer的兩個靜態成員變量
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class Demo1 { 10 public static void main(String[] args) { 11 int max = Integer.MAX_VALUE; 12 int min = Integer.MIN_VALUE; 13 System.out.println("int最大值是:"+max); 14 System.out.println("int最小值是:"+min); 15 16 //根據上面的估計你就會做出舉一反三的動作,如下: 17 System.out.println("Long最大值是:"+Long.MAX_VALUE); 18 System.out.println("Long最小值是:"+Long.MIN_VALUE); 19 System.out.println("Double最大值是:"+Double.MAX_VALUE); 20 System.out.println("Double最小值是:"+Double.MIN_VALUE); 21 } 22 } 23 24 25 26 /* 27 以上代碼執行結果如下: 28 int最大值是:2147483647 29 int最小值是:-2147483648 30 Long最大值是:9223372036854775807 31 Long最小值是:-9223372036854775808 32 Double最大值是:1.7976931348623157E308 33 Double最小值是:4.9E-324 34 */
4>.十進制轉成不同的進制,三個靜態方法的返回值都是以字符串的形式返回
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class Demo1 { 10 public static void main(String[] args) { 11 int src = 1000; 12 String Binary = Integer.toBinaryString(src); 13 String OctalNumberSystem = Integer.toOctalString(src); 14 String Hexadecimal = Integer.toHexString(src); 15 System.out.printf("%d的二進制是:%s,八進制是:%s,十六進制是:%s\n",src,Binary,OctalNumberSystem,Hexadecimal); 16 } 17 } 18 19 20 21 /* 22 以上代碼執行結果如下: 23 int最大值是:2147483647 24 int最小值是:-2147483648 25 Long最大值是:9223372036854775807 26 Long最小值是:-9223372036854775808 27 Double最大值是:1.7976931348623157E308 28 Double最小值是:4.9E-324 29 */
三.Interger類構造方法
常用的構造方法Integer(String s)是將數字格式的字符串,傳遞到Integer類的構造方法中,創建Integer對象,包裝的是一個字符串。將構造方法中的字符串轉成基本數據類型,調用非靜態方法。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class Demo1 { 10 public static void main(String[] args) { 11 String s1 = new String("1000"); 12 Integer src = new Integer(s1); 13 int dest = src.intValue(); 14 System.out.println(dest--); 15 System.out.println(--dest); 16 } 17 } 18 19 20 21 /* 22 1000 23 998 24 */
四.自動裝箱和自動拆箱
從JDK1.5后出現的特性,即自動拆箱和自動裝箱。自動裝箱就是將基本數據類型直接變成Integer包裝類。自動拆箱和裝箱動作相反,即將對象中的數據變回基本數據類型。自動拆箱和裝箱的好處就是基本類型和引用類型可以直接運算,代碼如下:
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class Demo1 { 10 public static void main(String[] args) { 11 Integer src = 100; //這里就是自動裝箱的過程,相當於Integer src = new Integer(100); 12 13 int dest = src + 5; //我們知道src本身是引用數據類型,不能直接跟基本數據類型運算,首先它會自動進行拆箱操作,相當於:int dest = src.intValue() + 5 ; 14 System.out.println(dest); 15 16 } 17 } 18 19 20 21 /* 22 以上代碼執行結果如下: 23 105 24 */
當然,一個事物都具有兩面性,雖然說自動拆箱和自動裝箱可以減少代碼的書寫量,還可以直接跟引用數據類型進行運算,但是它也存在一個弊端,即可能出現空指針異常。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class Demo1 { 10 public static void main(String[] args) { 11 Integer src = null; //任何引用數據類型都可以指向空 12 src = src + 10; 13 System.out.println(src); 14 } 15 } 16 17 18 19 /* 20 以上代碼執行結果如下: 21 Exception in thread "main" java.lang.NullPointerException 22 at cn.org.yinzhengjie.demo.Demo1.main(Demo1.java:12) 23 */
五.小試牛刀
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 package cn.org.yinzhengjie.demo; 8 9 public class Demo1 { 10 public static void main(String[] args) { 11 Integer i = new Integer(100); 12 Integer j = new Integer(100); 13 System.out.println(i==j); //false 14 System.out.println(i.equals(j)); //true 15 System.out.println("---------------"); 16 17 Integer a = 500; //此時a進行了裝箱操作 18 Integer b = 500; //此時b也進行了裝箱操作,兩個數值上是相等的,但是並不是同一個對象。 19 System.out.println(a == b); //false 20 System.out.println(a.equals(b)); //true 21 System.out.println("---------------"); 22 23 24 //數據在byte范圍內,JVM不會重新new對象。(可以查看源碼) 25 Integer x = 127; 26 Integer y = 127; 27 System.out.println(x==y); //true 28 System.out.println(x.equals(y)); //true 29 System.out.println("---------------"); 30 } 31 } 32 33 34 35 /* 36 以上代碼執行結果如下: 37 false 38 true 39 --------------- 40 false 41 true 42 --------------- 43 true 44 true 45 --------------- 46 */