Java学习笔记(25)——基本类型的包装类

这里将自己学习java及其应用的一些笔记、积累分享一下,如果涉及到了文章、文字侵权,请联系我删除或调整。


一、基本类型的包装类

1.1 概述

  • 用来封装一个基本类型值
  • 有时需要把基本类型值,当做引用类型来使用

1.2 Number类

  • 数字包装类的抽象父类
  • 子类

Byte,Short,Integer,Long

Float,Double

BigDecimal,BigInteger

  • 取值方法

byteValue()

shortValue()

intValue()

longValue()

floatValue()

doubleValue()

1.3 Integer类

1.3.1 创建对象

  • new Integer(6)
  • Integer.valueOf(6)

Integer类中,有一个 Integer 对象缓存数组,其中缓存了 256 个对象,封装的值

范围 [-128, 127]

指定范围内的值,直接访问缓存对象

指定范围外的值,新建对象

1.3.2 字符串解析成int

  • 十进制解析成十进制

Integer.parseInt("255") 255

  • 二进制解析成十进制

Integer.parseInt("11111111", 2) 255

  • 十六进制解析成十进制

Integer.parseInt("ff", 16) 255

  • 八进制解析成十进制

Integer.parseInt("377", 8) 255

1.3.3 int整数,转成其他进制字符串

  • 十进制解析成二进制字符串

Integer.toBinaryString(255) "11111111"

  • 十进制解析成八进制字符串

Integer.toOctalString(255) "377"

  • 十进制解析成十六进制字符串

Integer.toHexString(255) "ff"

1.3.4 练习:基本类型包装类

package 基本类型包装类;

public class Test1_Integer {
	public static void main(String[] args) {
		Integer a = new Integer(127); // 新分配内存
		/*
		 *	Integer中有一个缓存数组256位,其中保存着-128-127的数字,当封装的值
		 *	位于缓存区间内时,不创建新对象,直接返回对应值的内存地址 
		 */
		Integer b = Integer.valueOf(127);// 访问存在的缓存对象
		Integer c = Integer.valueOf(127);// 访问存在的缓存对象,与b访问的是同一个地址

		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		
		System.out.println(a==b);// 地址不等,因为一个是新对象,一个在缓存区
		System.out.println(b==c);// 相等,都在缓存区
		System.out.println(a.equals(b));// 值相等
		
		System.out.println(a.byteValue()); // 转化为byte,截断取值
		System.out.println(a.shortValue());
		System.out.println(a.intValue());
		System.out.println(a.longValue());
		System.out.println(a.floatValue());// 转化为float,补0
		System.out.println(a.doubleValue());
		
		// 字符串解析,将10,2,8,16进制字符串解析成整数
		System.out.println("---------------------------------------");
		System.out.println(Integer.parseInt("254"));
		System.out.println(Integer.parseInt("11111110",2));
		System.out.println(Integer.parseInt("376",8));
		System.out.println(Integer.parseInt("fe",16));
		
		// 进制转化,10进制转化为2,8,16进制
		System.out.println(Integer.toBinaryString(254));
		System.out.println(Integer.toOctalString(254));
		System.out.println(Integer.toHexString(254));
	}
}

1.3.5 练习:

package 二分法插入数据;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
import java.util.Scanner;

public class Test1 {
	public static void main(String[] args) {
		/*
		 *	集合、泛型都不支持基本类型
		 *	用基本类型的包装类 
		 */
		ArrayList<Integer> list = new ArrayList<Integer>();
		while(true) {
			System.out.println("回车继续!");
			new Scanner(System.in).nextLine();
			int n = new Random().nextInt(100);
			// 二分法查找,在list中找n所在的位置
			// 找不到,返回-(插入点+1)
			int index = Collections.binarySearch(list, n);
			// 判断是否在现有数组列表中找到了目标值
			if(index<0) {
				index = -(index)-1;
			}
			// 将目标值插入至当前数组列表
			list.add(index, n); // int类型的n被自动装箱为Integer
			System.out.println(list);
		}
	}
}

1.4 Double类

1.4.1 创建对象

  • new Double(3.14)
  • Double.valueOf(3.14)    new 相同

​​​​​​​​​​​​​​1.4.2 方法

  • 字符串解析成 double

Double.parseDouble("3.14") 3.14

  • 其他包装类的“字符串解析方法”

Byte.parseByte()

Short.parseShort()

Integer.parseInt()

Long.parseLong()

Float.parseFloat()

Double.parseDouble()

Boolean.parseBoolean()

  • 判断特殊值

​​​​​​​​​​​​Infinity 无穷大

3.14/0

Double.isInfinite(double d)

  • NaN,not a number

Math.sqrt(-5)

Double.isNaN(double d)​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值