包装类
包装类其实就是8种基本数据类型对应的引用类型。
基本数据类型 | 引用数据类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
为什么需要包装类?
Java为了实现一切皆对象,为8种基本类型提供了对应的引用类型。
后面的集合和泛型其实也只能支持包装类型,不支持基本数据类型。
自动装箱:
基本类型的数据和变量可以直接赋值给包装类型的变量。
public static void main(String[] args) {
int num1 = 10;
// 自动装箱(将int基本数据类变量赋值给包装类型变量)
Integer res1 = num1;
System.out.println(res1);
}
自动拆箱:
包装类型的变量可以直接赋值给基本数据类型的变量。
public static void main(String[] args) {
Integer num2 = 100;
// 自动拆箱(将包装类型变量赋值给基本类型变量)
int res2 = num2;
System.out.println(res2);
}
包装类的特有功能:
包装类的变量的默认值可以是null,容错率更高, 而基本类型不可以。
public static void main(String[] args) {
Integer num3 = null;
}
可以把基本类型的数据转换成字符串类型(用处不大)
- 调用toString()方法得到字符串结果。
- 或者调用Integer.toString(基本类型的数据)。
public static void main(String[] args) {
Integer number = 100;
// 方式一
String result1 = number.toString();
// 方式二
String result2 = Integer.toString(101);
// 方式三: 最简单常用
String result3 = number + "";
System.out.println(result1 + 1); // 1001
System.out.println(result2 + 1); // 1011
System.out.println(result3 + 2); // 1002
}
可以把字符串类型的数值转换成真实的数据类型(非常有用)
- teger.parseInt(“字符串类型的整数”)
- Double.parseDouble(“字符串类型的小数”)。
public static void main(String[] args) {
String strNum1 = "123";
String strNum2 = "12.123";
// 字符串转整数
int intNum = Integer.parseInt(strNum1);
// 字符串转小数
double doubleNum = Double.parseDouble(strNum2);
System.out.println(intNum + 1); // 124
System.out.println(doubleNum + 1); // 13.123
}
将字符串类型的数字转为真实的数据, 我们也可以调用包装类的valueOf方法
public static void main(String[] args) {
String strNum1 = "123";
String strNum2 = "12.123";
// 字符串转整数
int intNum = Integer.valueOf(strNum1);
// 字符串转小数
double doubleNum = Double.valueOf(strNum2);
System.out.println(intNum + 1); // 124
System.out.println(doubleNum + 1); // 13.123
}
小结:
包装类是什么,作用是什么?
基本数据类型对应的引用类型,实现了一切皆对象。
后期集合和泛型不支持基本类型,只能使用包装类。
包装类有哪些特殊功能?
可以把基本类型的数据转换成字符串类型(用处不大)
可以把字符串类型的数值转换成真实的数据类型(非常有用)
Arrays类
Arrays类的概述
数组操作工具类,专门用于操作数组元素的。
Arrays类的常用API
方法名 | 说明 |
---|---|
toString(类型[] a) | 返回数组的内容(字符串形式) |
sort(类型[] a) | 对优质的数组默认进行升序排序 |
sort(类型[] a, Comparator<? super T> c) | 使用比较器对象自定义排序 |
binarySearch(int[] a, int key) | 二分搜索数组中的数据,存在返回索引,不存在返回-1 |
toString方法
public static void main(String[] args) {
int[] arr = {10, 20, 30, 40, 0, 100};
// 返回数组内容
String res = Arrays.toString(arr);
System.out.println(res); // [10, 20, 30, 40, 0, 100]
}
sort方法
public static void main(String[] args) {
int[] arr = {20, 10, 900, 40, 0, 100};
// 升序排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // [0, 10, 20, 40, 100, 900]
}
binarySearch方法, 二分查找法搜索数组中的数据, 找到返回索引, 找不到返回-1
注意: 前提被查找的数组必须是排好序的
public static void main(String[] args) {
int[] arr = {20, 10, 900, 40, 0, 100};
// 升序排序
Arrays.sort(arr);
// 查找数组
int index = Arrays.binarySearch(arr, 10);
System.out.println(index); // 1
}
sort方法自定义规则:
sort方法第二个参数是Comparator, 设置Comparator接口对应的比较器对象,可以来自己定制比较规则。
注意: 自定义比较器对象只支持引用型类型的排序
如果认为左边数据大于右边数据, 返回正整数
如果认为左边数据小于右边数据, 返回负整数
如果认为左边数据等于右边数据, 返回0
默认的升序是o1 - o2; 降序是o2 - o1
public static void main(String[] args) {
// 只支持引用类型, 因此定义包装类数据类型
Integer[] arr = {10, 0, 30, 50, 100, 67};
// 调用sort方法, 降序
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println(Arrays.toString(arr)); // [100, 67, 50, 30, 10, 0]
}
总结
到此这篇关于Java中包装类和Arrays类的详细介绍的文章就介绍到这了,更多相关Java 包装类和Arrays类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!