java-包装类

包装类的作用,就是将基本数据类型改写为类的方式,例如:我们写double d = 1.2; 这个不是类和对象的写法。那么就将double类型包装成一个类Double,因为类名首字母要大写。创建对象也就变成了Double d = new Double(1.2) ;

包装类和基本数据类型的区别和相同点

  • 基本数据类型 对应的包装类
  • short Short
  • byte Byte
  • int Integer
  • long Long
  • float Float
  • double Double
  • char Character
  • boolean Boolean
    就是char和int这两个有点不同
    包装类里面有方法,基本数据类型没有方法
    包装类默认值都是null,基本数据类型都有默认值
    包装类使用==比较的是地址,用equals()比较的是值,基本数据类型用= =比较。
    推荐使用equals来比较
public static void main(String []args) {
		//基本数据类型
		int num1 = 5 ;
		//定义包装类对象只能调用一个参数的构造方法,也就是给对象必须传递一个值
		Integer num2 = new Integer(5);
		
		Integer num3 = 5 ;
		System.out.println(num2 == num3); //这行会输出false
		System.out.println(num2.equals(num3)); //这行输出true
	} 

在这里插入图片描述

包装类的对象进行类型转化

public class Test {
	public static void main(String []args) {
		
		//类型转化
		String s = "5";
		int num4 = Integer.parseInt(s); //只能将字符串类型变量转化为int类型
		double d = Double.parseDouble(s);
	} 
}

**类型转化的代码就一句。例如上面的:String s = “5”; int num4 = Integer.parseInt(s); 这个 类型.parse类型(变量名) ,这个变量名就是好像只有字符串,当然只是目前有这点发现,以后发现新特新再写。 **

整数缓冲池

Short Integer Long 这三个都有缓冲区。大写开头对应类型。
默认会在内存中创建256个大小的缓冲池,对应的数值区间为:-128到127这些整数。那么也就是说你给上面这些类型变量直接赋值(例如Short s1 = 123 ;),也会给你创建对象,但是这个对象s1在缓冲池里创建的,如果还有一个Short s2 = 123 ; 这个数值也会在缓冲池里创建对象s2,而且很重要的一点,因为数值是一样的(即123),那么这个对象存得地址也相等。所以等号进行判断地址相等,equals判断值也相等。

		Integer i5 = 124 ;
		Integer i6 = 124 ;
		System.out.println(i5 == i6);
		System.out.println(i5.equals(i6));
		
		Integer i7 = 421 ;
		Integer i8 = 421 ;
		System.out.println(i7 == i8);
		System.out.println(i7.equals(i8));

在这里插入图片描述
在这里插入图片描述
然后charater只有在对应ASCLL码在 0 - 127之间也会判断相等。

Character c1 = 92 ;
		Character c2 = 92 ;
		System.out.println(c1 == c2);
		System.out.println(c1.equals(c2));
		
		Character c3 = 128 ;
		Character c4 = 128 ;
		System.out.println(c3 == c4);
		System.out.println(c3.equals(c4));

在这里插入图片描述
在这里插入图片描述
下面的例子和上面的是一样的

Character c6 = Character.valueOf('x');
		Character c7 = Character.valueOf('x');
		System.out.println(c6 == c7);
		System.out.println(c6.equals(c7));
		
		Character c8 = Character.valueOf((char)(129)); //因为整数129对应ACSLL码是什么我不知道,我这样转型一下
		Character c9 = Character.valueOf((char)(129));
		System.out.println(c8 == c9);
		System.out.println(c8.equals(c9));

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值