1. 数组元素排序
## 1. 1 冒泡排序
图解
代码演示
public static void main(String[] args) {
int[] arr = {25, 69, 80, 57, 13};
// 遍历数组
int count = 0;
// 外层循环中arr.length-1 就是告诉我们如果五个数字已经确定了4个最后一轮不用比
for (int i = 0; i < arr.length - 1; i++) {
// 内层循环中arr.length - 1,防止和j+1进行比较时数组越界
// 内层循环中arr.length - i, 已经比较到最大值的数据没有必要再次比较
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
count++;
}
}
// 打印结果
System.out.println(Arrays.toString(arr));
System.out.println(count);
}
1.2 Arrays
• 已知数组int[] arr = {25, 69, 80, 57, 13}.
• 通过Arrays#sort()方法, 对其升序排列.
• 打印排序后的结果.
Arrays 是一个工具类:
工具类的特点:
1.构造方法私有
2.都是静态成员方法
toString: 将数组转换为字符串
sort: 排序 默认升序
public class Demo01 {
public static void main(String[] args) {
// 创建数组
int[] arr = {25, 69, 80, 57, 13};
// 使用sort进行排序
Arrays.sort(arr);
// 使用tostring打印数组中的内容
System.out.println(Arrays.toString(arr)); // [13, 25, 57, 69, 80]
}
}
2. 包装类
2.1 基本类型-->包装类
| 1.| byte| Byte|
|--|--|--|
| 2.| short| Short|
| 3. |int | Integer|
| 4. |long| Long|
| 5. |char | Character|
| 6. |flat | Float|
| 7. |double| Double|
| 8.| boolean | Boolean|
包装类: 就是基础数据类型包装成一个引用类型的==class==
基础数据类型没有对应的属性和方法,但是我们有很多常用的方法或者功能需要调用,并且最好可以使用.语法调用
所以我们就需要将基础数据类型转换为引用类型,方便我们的开发工作,此时就出现了包装类
包装类中有一些常用的方法 我们以Integer为例
构造方法:
public Integer(int a);
public Ingeter(String s);
静态变量:
MAX_VALUE
MIN_VALUE
SIZE
TYPE
成员方法:
toString: 重写了object中的tostring 输出的是对象的内容
equals: 重写了Object中的方法,对比两个对象中的值是否相等,而不是对比地址
parseInt: 将字符串类型数据转换为int类型数据的方法,在之前用过
所有的包装类,除了Character 都有parse方法
parseFloat
parseDouble
parseBoolean
3. 自动拆装箱
自动拆装箱:
在这里我们把基础数据类型转换为引用类型的方式比喻为装到箱子里,叫做装箱
我们把引用类型转换为基础数据类型,比喻成从箱子里拆除来,叫做拆箱
public class Demo02 {
public static void main(String[] args) {
// 我们以Integer为例进行拆装箱演示
// 装箱:
Integer i1 = new Integer(12);
// 自动装箱:
Integer i2 = 12;
// 拆箱
int int1 = i1.intValue();
// 自动拆箱
int int2 = i1;
System.out.println(i1);
System.out.println(i2);
System.out.println(int1);
System.out.println(int2);
// 在jdk 1.5之后出现了自动拆装箱. 在这之前都是使用手动拆装箱的方式完成的.
}
}
练习:
/*
需求
• 已知字符串String s = "91 27 45 38 50";
• 请通过代码实现最终输出结果是: "27, 38, 45, 50, 91"
思路:
1. 定义字符串s
2. 将字符串进行切割 ,按照空格拆分
增加内容:
1.将拆分后的数组中的字符串转斗转换为int类型的数据
2.对数组进行排序
3. 将拆分后的数字转换为字符串类型
4. 删除收尾的[]
*/
public class Demo03 {
public static void main(String[] args) {
// 1. 定义字符串s
String s = "91 27 45 38 50";
// 2. 将字符串进行切割 ,按照空格拆分
String[] sArray = s.split(" ");
//增加内容
//定义了一个空的数组,指定长度为5
int[] arr = new int[sArray.length];
for (int i = 0; i < sArray.length; i++) {
// 将sArray中的字符串数字,转换为int类型传入arr中的相应位置
arr[i] = Integer.parseInt(sArray[i]);
}
Arrays.sort(arr);
// 3. 将拆分后的数字转换为字符串类型
String sString = Arrays.toString(arr);
// 4. 删除收尾的[]
//方法一:
// String result = sString.replace("[", "\"").replace("]", "\"");
//方法二:
String result = sString.substring(1, sString.length() - 1);
// 打印结果
System.out.println(result);
}
}
3. Date类
- 构造方法
成员方法
- getTime
- setTime
Date:时间类:Date类型数据只能精确到毫秒 Date类现在已经被其他类取代(Calendar) 所以大部分方法已经过期 构造方法:
public Date(); 获取当前时间 public Date(long time); 成员方法: settime:
对象添加日期 gettime: 获取日期 toString: 重写了object中的 方法,打印指定格式的时间值 例如:Tue Jan
25 11:15:38 CST 2022
public class Demo01 {
public static void main(String[] args) {
// 创建一个Date对象
Date d1 = new Date();
// 打印时间数据
System.out.println(d1); // 获取的是当前的系统时间
// 使用date对象获取其时间的时间戳
// 时间戳: 从1970年1月1日到指定时间的毫秒值
System.out.println(d1.getTime()); // 1643080538673
// 通过一个时间戳初始化一个时间对象
Date d2 = new Date(1643080538673L);
System.out.println(d2);
// 通过时间戳修改当前的时间对象的值
d1.setTime(1643080538673L);
System.out.println(d1);
// 在开发中不适用上述方式获取当前时间,因为不方便,不好用,不优雅
// 1643080827419 System.currentTimeMillis()获取的是时间戳
System.out.println(System.currentTimeMillis());
}
}