zoukankan      html  css  js  c++  java
  • 【Java常用类之integer包装类 22】

    一、八种基本类型对应的包装类型

    基本数据类型         包装类型(引用数据类型)

    byte           java.lang.Byte;

    short            java.lang.Short;

    int             java.lang.Integer;

    long           java.lang.Long;

    float           java.lang.Float;

    double          java.lang.Double;

    booblean         java.lang.Booblean;

    char           java.lang.Character;

    引入包装类的作用:方便编程

    自动装箱可以简单理解为:基本数据类型转换为引用数据类型

    自动拆箱可以简单理解为:引用数据类型转换为基本数据类型

    二、详细介绍integer类型

    1、Integer类在对象中包装了一个基本类型int的值,integer类在对象中包含了一个int类型的字段

    static int MAX_VALUE  : 值为 2^31-1 的常量,它表示 int 类型能够表示的最大值。
    static int MIN_VALUE:值为 -2^31 的常量,它表示 int 类型能够表示的最小值。

    ……

    2、提供了多个方法,能在int和string类型之间相互转换,还提供了处理int类型时非常有用的其他一些常量和方法

    package com.JavaStudy.wrapperInteger0623;
    
    /**
     * @Author wufq
     * @Date 2020/6/23 16:58
     */
    public class IntegerTest01 {
        public static void main(String[] args){
            //关于常量
            System.out.println("int的最大值:"+Integer.MAX_VALUE);// 2147483647
            System.out.println("int的最小值:"+Integer.MIN_VALUE);// -2147483648
    
            //构造integer类型对象
            //将int -->integer类型   包装过程(装箱)
            Integer i1 = new Integer(10);
            //integer --> int 拆箱
            int i2 = i1.intValue();
            System.out.println("i2:"+i2);
    
            //Integer(String s)构造方法:表示String参数所指示的int值,并且重写了toString方法
            Integer i3 = new Integer("123");
            System.out.println("i3:"+i3.toString());
    
            //此例可以看出构造方法String参数表示的只能是int值,如果是字符串就会报NumberFormatException异常
            Integer i4 = new Integer("中国");
            System.out.println("i4:"+i4.toString());
    
            //Integer类重写了equals方法(equals是Object类的方法,比较的是内存地址),重写以后比较的是值
            Integer i5 = new Integer(10);
            Integer i6 = new Integer(10);
    
            System.out.println(i5==i6);//false
            System.out.println(i5.equals(i6));//true
            
        }
    }

    3、JDK5.0特性(JDK1.5之后,包含1.5在内,可以进行自动装箱和拆箱)

    自动装箱:auto.boxing

    自动拆箱:auto_unboxing

    注意:自动装箱和自动拆箱属于编译期间功能,这种功能会方便程序编写,但是程序真正运行依然用的是new Integer();

    package com.JavaStudy.wrapperInteger0623;
    
    /**
     * @Author wufq
     * @Date 2020/6/23 17:26
     */
    public class IntegerTest02 {
        public static void main(String[] args){
            //JDK1.5版本之前的装箱和拆箱
            Integer i1 = new Integer(10);
            int i2 = i1.intValue();
    
            //JDK1.5版本之后的装箱和拆箱
            Integer i3 = 10;
            int i4 = i3;
    
            //自动装箱、拆箱程序真正运行仍然是new
            Integer i5 = 300;
            Integer i6 = 300;
            System.out.println(i5 == i6);//false  -->底层仍然是:Integer i5 = new Integer(300);
            System.out.println(i5.equals(i6));//true
    
            Integer i7 = 100;
            Integer i8 = 100;
            System.out.println(i7==i8);//true
            
        }
    }

    对比i5 == i6和i7==i8结果发现前者是false,后者是true    为什么会有这样不同的结果?

    原因:integer的缓存问题:integer默认的缓存区间是-128~127,但是可以手动设置缓存区间(设置vm arguments参数 -XX:AutoBoxCacheMax=2008)

    4、int、String、integer三者之间相互转换

    package com.JavaStudy.wrapperInteger0623;
    
    /**
     * @Author wufq
     * @Date 2020/6/24 09:55
     */
    public class IntegerTest03 {
        public static void main(String[] args){
            //Integer ---> String
            Integer i1 = 10;
            String s1 = i1.toString();
            System.out.println(s1);
            //String ---> Integer
            Integer i2 = Integer.valueOf("123");
            System.out.println(i2);
    
            //int ---> String
            int i3 = 10;
            String s2 = i3+"";
            //String ---> int
            int i4 = Integer.parseInt("11");
            System.out.println(i4);
    
            //int --->Integer
            Integer i5 = Integer.valueOf(10);
            //Integer ---> int
            int i6 = i5.intValue();
            System.out.println(i6);
        }
    }
  • 相关阅读:
    三大主流负载均衡软件对比(LVS+Nginx+HAproxy)
    nginx 提示the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
    centos安装nginx并配置SSL证书
    hadoop创建目录文件失败
    The server time zone value 'EDT' is unrecognized or represents more than one time zone.
    脚本启动SpringBoot(jar)
    centos做免密登录
    数据库远程连接配置
    Bash 快捷键
    TCP三次握手四次断开
  • 原文地址:https://www.cnblogs.com/frankruby/p/13186359.html
Copyright © 2011-2022 走看看