Java之Integer类

Integer类简介:

Integer类是基本数据类型int的包装器类,是抽象类Number的子类,位于java.lang包中。
Integer类在对象中包装了一个基本类型int的值,也就是每个Integer对象包含一个int类型的字段。在Integer源码中如下定义:
private final int value;

字段:

  • [static int] MAX_VALUE:值为 231-1 的常量,它表示 int 类型能够表示的最大值。
  • [static int] MIN_VALUE:值为 -231 的常量,它表示 int 类型能够表示的最小值。
  • [static int] SIZE: 用来以二进制补码形式表示 int 值的比特位数。
  • [static Class] TYPE:表示基本类型 int 的 Class 实例。
  • [static int] BYTES:返回int值所占的字节数。

构造方法
Integer类提供了两种构造方法:它们都会返回一个Integer对象

(1)Integer(int value);

(2)Integer(String s); //要注意的是字符串不能包含非数字字符,否则会抛出NumberFormatException

(3)除此之外,还可以给Integer对象直接赋值,如:Integer a = 10;

一些重要的方法

返回值 方法名 方法的描述
[static int] bitCount(int i) 返回指定 int 值的二进制补码表示形式的 1 位的数量
[static int] compare(int x,int y) 比较x和y的值,当x大于y时返回1,当x等于y时返回0,否则返回-1
[int] compareTo(Integer anotherInteger) 在数值上比较两个Integer对象
[boolean] equals(Object obj) 比较此对象与指定对象
[int] hashcode() 返回此对象的哈希码
[static int] parseInt(String str) 将字符串参数作为有符号十进制数进行解析
[static String] toBinaryString(int i) 以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式
[String] toString() 返回该Integer值得String对象
[static Integer] valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例

特别注意

(1)“==”和equals()方法:在Integer类中,“==”用来比较对象地址是否相同,并且Integer类重写了equals(Object obj)方法,在equals(Object obj)方法中,会先判断参数中的对象obj是否是Integer类型的对象,如果是则判断值是否相同,值相同则返回true,值不同则返回false,如果obj不是Integer类的对象,则返回false。
需要注意的是:当参数是基本类型int时,编译器会给int自动装箱成Integer类,然后再进行比较。

public static void main(String[] args) {int t1 = 128;int t2 = 128;Integer t3 = 127;Integer t4 = 127;Integer t5 = 100;int t6=100;System.out.println(t5.equals(t6)); //trueString s1 = "123";String s2 = "123";String s3 = new String("123");String s4 = new String("123");System.out.println(t1 == t2);       //trueSystem.out.println(t3 == t4);       //falseSystem.out.println(t3.equals(4));    //falseSystem.out.println(s1 == s2);      //trueSystem.out.println(s1.equals(s2));    //trueSystem.out.println(s3 == s4);       //falseSystem.out.println(s3.equals(s4));   //true}
//Integer类中的equals(Object obj)源代码public boolean equals(Object obj) {if (obj instanceof Integer) {return value == ((Integer)obj).intValue();}return false;}
//int和Integer对象用构造方法、直接赋值方法赋值比较
int a = 200;
Integer b = new Integer(200);
Integer c = 200;//b和c都是Integer对象,所以用“==”比较时,就是比较内存地址值是否相等
System.out.println(b == c);  //false
System.out.println(b.equals(c));  //true//a在进行比较时,会自动装箱
System.out.println(b.equals(a));  //true//因为b是Integer对象,a是基本数据类型int的变量,当进行“==”比较时,b会自动拆箱成int,从而比较的就是变量的值是否相等System.out.println(b == a);   //true

(2)Integer直接赋值和valueOf()方法,下面来看下面两段代码的不同:

Integer i02 = 59;
Integer i03 = Integer.valueOf(59);
Integer i04 = new Integer(59);System.out.println(i02 == i03);  //true
System.out.println(i02 == i04);  //false
System.out.println(i03 == i04);  //false
Integer i02 = 200;
Integer i03 = Integer.valueOf(200);
Integer i04 = new Integer(200);System.out.println(i02 == i03);  //false
System.out.println(i02 == i04);  //false
System.out.println(i03 == i04);  //false

我们可以看到上面两段代码只是赋给对象的值不同,但是在判断”i02 == i03“时得到的结果却不同,这是为何:当使用直接赋值如”Integer i01 = 59“的时候,会调用Integer的valueOf()方法,这个方法就是返回一个Integer对象,但是在返回前,作了一个判断,判断要赋给对象的值i是否在[-128,127]区间中,且IntegerCache(是Integer类的内部类,里面有一个Integer对象数组,用于存放已经存在的且范围在[-128,127]中的对象)中是否存在此对象,如果存在,则直接返回引用,否则,创建一个新对象返回。那么我们就可以知道,200这个数字不在[-128,127]中,所以会直接创建一个新对象返回,i02和i03就是两个不同的对象。而59属于[-128,127]中,当创建i03时,会直接返回引用,此时i02和i03都指向同一个地址。

以第一段代码为例:”Integer i02 = 59":因为程序初次运行,没有59,所以直接创建一个对象返回;“Integer i03 = Integer.valueOf(59)”:因为IntegerCache中已经存在59,所以直接返回引用;“Integer i04 = new Integer(59)”:直接创建一个新对象。

JVM中一个字节一下的整型数据(即[128,127])会在JVM启动时加载进内存,除非用new Integer()显示的创建对象,否则都是同一对象。

//Integer类中的valueOf()源代码 public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}

参考文献

https://www.cnblogs.com/zwxblog/p/7788573.html

Java语言之Integer类相关推荐

  1. java对象与类ppt,JAVA语言对象与类.ppt

    JAVA语言对象与类.ppt 第三章 对象与类,3.1 类与对象 3.2 定义类 3.3 成员变量的作用域 3.4 方法重载 3.5 创建对象 3.6 构造方法 3.7 this关键字 3.8 初始化 ...

  2. java类描述_java笔记2:Java语言中的类和对象的描述

    在Java 语言中,除8 个基本数据类型值之外, 一切都是对象,而对象就是面向对象程序设计的中心. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还 ...

  3. jdbc是java语言编写的类和接口_JDBC——Java语言连接数据库的标准

    JDBC概述 API JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  4. Java快速入门学习笔记7 | Java语言中的类与对象

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  5. java语言特点解释类_Java语言特点

    Java语言特点 引导语:Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.那么你知道Java语言的特点吗,以下是百分网小编分享给大家的Java语言特点,欢迎阅读! Java语言的特点 1 ...

  6. java integer_Java之Integer类

    Integer类简介: Integer类是基本数据类型int的包装器类,是抽象类Number的子类,位于java.lang包中. Integer类在对象中包装了一个基本类型int的值,也就是每个Int ...

  7. java anotherstring_徐葳【2019版最新】40小时掌握Java语言之06String类

    第1章:String类详解 1.1 String概述 从今天开始我们学习一些java中已有对象的使用, 首先学习一个比较常用的对象,String(字符串)对象 字符串对象不用new就可以直接使用 如图 ...

  8. Java中的Integer类

    常见对象(Integer类的概述和构造方法) 如果有两个需求: 需求: 将100转换成二进制, 八进制, 十六进制 判断一个数是否在int的范围内 当然,可以使用最基本的方法累除取余来求一个十进制数的 ...

  9. java中intvalue_Java Integer类intValue()方法的示例

    java中intvalue 整数类intValue()方法 (Integer class intValue() method) intValue() method is available in ja ...

  10. 学习-Java包装类之Integer类(1)

    任务描述 本关任务:掌握 Integer 类的定义与方法的使用. 相关知识 Java 是个面向对象语言,所有的操作都是基于对象.Object 类是 Java 中的对象基础,所有 Java 中的类都有个 ...

最新文章

  1. 海蜘蛛如何手工升级到最新版
  2. 大整数乘法(POJ2389)
  3. UI设计入门书籍(未整理)
  4. log4j无法显示mybatis sql
  5. Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp
  6. python 将一个字符list的列表扁平化成了一个list
  7. MySQL字符集小结
  8. 深入浅出LVM on linux
  9. Postman 导出 curl命令 到命令行运行 Mac OS
  10. java流传输_Java 运用流传输文件
  11. seaweedfs使用说明
  12. 关于dijistra算法的理解
  13. 近期你已经授权登录过_原来我的微信、QQ 授权登录过这么多应用!(附查找及解绑方法)...
  14. 分布式事务与RocketMq 事务消息
  15. 2.9Unicode 文本标准化
  16. IC卡与磁条卡的数据区别
  17. 记使用腾讯TIM开发聊天通讯遇到的问题及解决方案
  18. K860i的109升级需要的PinyinIME.apk和QuickSearchBox.apk两个文件
  19. QM的计算机专业,PCM5-QM170
  20. java opts utf 8_Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8

热门文章

  1. 【阮一峰ES6入门教程学习笔记】函数的扩展
  2. 华为薪资等级结构表_华为内部考核体系
  3. yb3防爆电机型号含义_YBX3防爆电机
  4. linux 系统开启火狐命令_linux安装火狐命令
  5. 数据驱动下的客群经营逻辑
  6. NLP - snownlp
  7. java 添加 psd_psd缩略图生成上传解决方案
  8. 基于STM32单片机电阻电容电感检测仪设计
  9. mysql常用的开发软件下载_强烈推荐!14款经典的MySQL客户端软件
  10. mac下安装pyaudio