zoukankan      html  css  js  c++  java
  • java基础-Integer类常用方法介绍

                      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
    ",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 */
  • 相关阅读:
    网络流
    Link-Cut-Tree题集
    动态点分治
    斜率优化DP
    【Python学习之旅】---继承的方式完成包装(授权、item系列、str&repr、format 自定义格式方法)
    【Python学习之旅】---动态导入模块
    【Python学习之旅】---封装与反射(类的相关知识,面向对象三大特性:继承-多态-封装)
    【Python学习之旅】---多态(类的相关知识,面向对象三大特性:继承-多态-封装)
    【Python学习之旅】---多态(类的相关知识)
    【Python学习之旅】---继承(类的相关知识)
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/8878866.html
Copyright © 2011-2022 走看看