Java 基本类型包装类 Integer为例

本文深入探讨了Java中基本类型包装类的作用和必要性,包括如何使用Integer类进行String与int之间的转换,介绍了自动装箱和拆箱的概念及其潜在问题,并通过实例展示了包装类的字段和方法。

目录

一、为什么要有基本类型包装类?

 二、以Interger 为例子将String 与 int 相互转换

1.String--->int

2.int--->String

三、字段

四、自动装箱和自动拆箱

五、自动装箱的题目


一、为什么要有基本类型包装类?

在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的。而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等。那么,想实现字符串与基本数据之间转换怎么办呢?

Java中提供了相应的对象来解决该问题,基本数据类型对象包装类:java将基本数据类型值封装成了对象。封装成对象有什么好处?可以提供更多的操作基本数值的功能。

将字符串类型转换为这8中基本类型就需要用到基本类型包装类

其中注意int 的基本类型包装类为Integer,char的基本类型包装类为Character

 二、以Interger 为例子将String 与 int 相互转换

1.String--->int

构造函数:

Integer(int i);

Integer(Sting s);

构造对象后可以使用,对象调用inValue方法返回int 类型的数值

 intintValue()
          以 int 类型返回该 Integer对象 的值。
	public static void main(String[] args) {
		Integer in1 = new Integer(1);
		Integer in2 = new Integer("2");
		int i1 = in1.intValue();
		int i2 = in2.intValue();
		
	}

在不创建对象的情况下使用静态方法将String ---->int

 

 

 

static int parseInt(String s, int radix)

 

 

使用第二个参数指定进制数,将字符串参数解析为有符号的整数。

static int parseInt(String s) 

 

 将字符串参数作为有符号的十进制整数进行解析。

 

 

2.int--->String

 

成员方法调用

 

 StringtoString()
          返回一个表示该 Integer 值的 String 对象。

 

静态方法调用

 

static StringtoString(int i)
          返回一个表示指定整数的 String 对象。
static StringtoString(int i, int radix)
          返回用第二个参数指定进制数表示的第一个参数的字符串表示形式。
static StringtoBinaryString(int i)
          以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
static StringtoHexString(int i)
          以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
static StringtoOctalString(int i)
          以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。

 

三、字段

 

static intMAX_VALUE
          值为 231-1 的常量,它表示 int 类型能够表示的最大值。
static intMIN_VALUE
          值为 -231 的常量,它表示 int 类型能够表示的最小值

 

 

四、自动装箱和自动拆箱

好处:基本类型和引用类型直接运算

装箱:将基本类型直接变成引用类型

拆箱:将引用类型变回基本类型

	public static void main(String[] args) {
		Integer in1= 1;
		//in1+1 = intValue()+1; 自动拆箱,将Integer对象使用intValue()拆箱
		//将int 对象自动装箱成 Integer对象
		in1 = in1+1;
		
	}

弊端:可能会出现空指针的异常

五、自动装箱的题目

1.==

2.equals

3.数据在byte范围内,JVM不会重新new 对象

public static void main(String[] args) {
		//数据在byte范围内,JVM不会重新new 对象
		Integer in1 = 1;
		Integer in2 = 1;
		//==比的是对象的地址
		System.out.println(in1 == in2);
		//equals比的是对象的内容
		System.out.println(in1.equals(in2));
		
		System.out.println("----------------------");
		//129大于byte的范围,所以创建两个不同的对象
		Integer in3 = 129;
		Integer in4 = 129;
		//两个对象所以,两个对象的地址是不同的,false
		System.out.println(in3 == in4);
		//两个对象,但是equals()比较的是对象的内容,对象的内容是129相同的,true
		System.out.println(in3.equals(in4));
	}	

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值