JAVA基础(常用API) —— 包装类

经过之前对于API的学习:JAVA基础 —— API

接下来的文章让我们来了解一下不同类下的方法,但是这些方法不要去背。

而是要去记一下类名和类作用,也可以在以后去查阅API帮助文档。

Math、System、Runtime和ObjectJAVA基础 (常用API)—— Math、System、Runtime和Object

BigInteger和BigDecimal

JAVa基础(常用API) —— BigInteger和BigDecimal
正则表达式JAVA基础(常用API) —— 正则表达式
时间相关类JAVA基础(常用API) —— 时间相关类
包装类JAVA基础(常用API) —— 包装类

目录

 一、什么是包装类

二、如何理解包装类 

三、基本数据类型对应包装类

1. 获取Integer对象的方式(了解)

1.1  自动装箱和自动拆箱

1.2  如何使用包装类对象

 2.  Integer常用成员方法

 四、练习:键盘录入


 一、什么是包装类

包装类:基本数据类型对应的引用数据类型(就是把基本数据类型变成对象)

二、如何理解包装类 

  •  包装类就是引用数据类型
  • 包装类本质上就是创建了一个对象,对象当中记录对应数据值。

综上:我们可以理解包装类就是:用一个对象把基本数据类型给包起来。

三、基本数据类型对应包装类

基本数据类型对应包装类
byteByte
shortShort
charCharacter
intlnteger
longLong
floatFloat
doubleDouble
booleanBoolean

1. 获取Integer对象的方式(了解)

方法名说明
public Integer (int value)根据传递的整数创建一个Integer对象
public Integer (String s)根据传递的字符串创建一个Integer对象
public static Integer valueOf (int i)根据传递的整数创建一个Integer对象
public static Integer valueOf (String s)根据传递的字符串创建一个Integer对象
public static Integer valueOf (String s,int radix)根据传递的字符串和进制创建一个Integer对象
public class IntegerTest {
	public static void main(String[] args) {
		// 1.用构造方法获取Integer的对象(JDK5以前方式)
		Integer i1 = new Integer(1); // (int value)
		Integer i2 = new Integer(1); // (String s)
		System.out.println(i1); // 1
		System.out.println(i2); // 1

		// 2.利用静态方法获取Integer对象(JDK5以前方式)
		Integer i3 = Integer.valueOf(123);
		Integer i4 = Integer.valueOf("123");
		Integer i5 = Integer.valueOf("123", 8); // (String s,int radix)
		System.out.println(i3); // 123
		System.out.println(i4); // 123
		System.out.println(i5); // 83

		// 3.以下两种方式获取对象的区别(掌握)
		// 在实际开发中,-128~127之间数据,用的多
		// 如果每次都new对象,浪费内存
		// 所以,提前把这个范围之间的每个数据在底层已经创建好对象
		// 如果用到了就不会创建新的,而是直接调用已经创建好了的对象
		Integer i6 = Integer.valueOf(127); // (int value)
		Integer i7 = Integer.valueOf(127); // (int value)
		System.out.println(i6 == i7); // true

		// 所以128 超出范围 会new一个新对象
		Integer i8 = Integer.valueOf(128);
		Integer i9 = Integer.valueOf(128);
		System.out.println(i8 == i9); // false

		// 看到new关键字,在java中,每一次new都是创建一个新的对象
		// 所以下面的两个对象都是new出来的,地址值不一样
		Integer i10 = new Integer(127);
		Integer i11 = new Integer(127);
		System.out.println(i10 == i11); // false

	}
}

1.1  自动装箱和自动拆箱

在JDK5的时候,由于代码的冗余,所以提出了自动装箱和自动拆箱的机制。

  • 自动装箱:把基本数据类型会自动变成其对应的包装类
  • 自动拆箱:把包装类自动变成其对象的基本数据类型
public class IntegerTest {
	public static void main(String[] args) {
		// 自动装箱的动作
		Integer i1 = 10;
		// 在底层,此时还会自动去调用静态方法valueOf得到一个Integer对象
		// 只不过这个动作不需要我们去操作了

		Integer i2 = new Integer(10);
		// 自动拆箱的动作
		int i = 12;

		// 在JDK5以后,int 和 Integer可以看做是同一个东西
		// 在内部可以自动转化
	}
}

1.2  如何使用包装类对象

  • 不需要new,不需要调用方法,直接赋值即可。

 2.  Integer常用成员方法

方法名说明
public static string toBinaryString (int i)得到二进制
public static string toOctalString (int i)得到八进制
public static string toHexstring (int i)得到十六进制
public static int parselnt (String s)将字符串类型的整数转成int类型的整数

注意:为什么返回值要设置为String类型呢?

  • 二进制返回结果(例如:010101),但是如果我们是一个整数Int类型或者Long类型,0不能作为开头。
  • Long类型和Int类型有长度限制。
public class IntegerTest {
	public static void main(String[] args) {
		//1.把整数转化为二进制、八进制、十六进制
		String str1 = Integer.toBinaryString(100);
		System.out.println(str1); //1100100
		
		String str2 = Integer.toOctalString(100);
		System.out.println(str2); //144
		
		String str3 = Integer.toHexString(100);
		System.out.println(str3); //64
		
		//2.将字符串类型的整数转换成int类型的整数
		//强类型语音:每种数据在java中都有各自的数据类型
		//在计算的时候,如果不是用一种数据类型,是无法直接计算的
		
		int i = Integer.parseInt("123");
		System.out.println(i); //123
		System.out.println( i + 1); //124
		//细节:
		//1.在类型转换的时候,括号里面的参数只能是数字不能是其他,否则会代码报错
		//2.八种包装类中,除了Character都有对应的parseXxx的方法,进行类型转换
		String str = "true";
		boolean b = Boolean.parseBoolean(str);
		System.out.println(b); //true
	}
}

跟上:所以我们要修改一下键盘录入的代码:

public class IntegerTest {
	public static void main(String[] args) {
		//键盘录入
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String str = sc.next();
		System.out.println(str);  //123
		
		//弊端:
		//当我们在使用next、nextInt、nextDouble在接受数据的时候,
		//遇到空格、回车、制表符时就会停止
		//键盘录入的是123 132 ,那么此时就只能接收到空格前的数据
		//但是我们想要的是一整行数据

		//所以在以后当我们再进行键盘录入操作时
		//不管什么类型,都统一使用nextLine
		//特点是遇到回车才停止
		
		Scanner sc1 = new Scanner(System.in);
		System.out.println("请输入一个字符串:");
		String str1 = sc.nextLine();
		System.out.println(str1); //123 123
	}
}

  • 所以在以后当我们再进行键盘录入操作时,不管什么类型,都统一使用nextLine
  • 特点是遇到回车才停止。

 四、练习:键盘录入

键盘录入一些1~100之间的整数,并添加到集合中。

直到集合中所有数据和超过200为止。

public class IntegerTest {
	public static void main(String[] args) {
		// 1.创建集合用来添加整数
		ArrayList<Integer> list = new ArrayList<>();
		// 2.键盘录入数据并添加到集合中
		Scanner sc = new Scanner(System.in);
		while (true) {

			System.out.println("请输入一个整数:");
			String numStr = sc.nextLine();
			int number = Integer.parseInt(numStr);
			// 先把异常数据进行过滤
			if (number < 1 || number > 100) {
				System.out.println("当前数据超出范围,请重新输入");
				continue;
			}
			// 添加到集合中
			// 细节:
			// number :基本数据类型
			// 集合里面数据是Integer类型
			// 在添加数据的时候出发自动装箱
			list.add(number);

			// 统计集合中数据和
			int sum = getSum(list);
			if (sum > 200) {
				System.out.println("集合中所有数据和已经满足要求");
				break;
			}
		}

		// 验证结论
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i) + ",");
		}

	}

	private static int getSum(ArrayList<Integer> list) {
		int sum = 0;
		for (int i = 0; i < list.size(); i++) {
			int num = list.get(i);
			sum = sum + num;
		}
		return sum;
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hgngy.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值