这里将自己学习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)