Object类概述

Object是类层次结构的跟,每个类都可以将Object作为超类。所有类都直接或间接的继承自该类

构造方法:public Object()

回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法?
因为他们的顶级父类只有无参构造方法

冒泡排序

排序:将一组数据按照固定的规则进行排序

冒泡排序:一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序

  • 如果有n个数据进行排序,总共需要比较n-1次
  • 每一次比较完毕,下一次的比较就会少一个数据参与
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

package unit_18Array.test1;

import static unit_9zifuchuan.StringTest6.arrayToString;

/*
冒泡排序的代码实现
*/
public class BubbleSortDemo {
public static void main(String[] args) {
//定义一个数组
int[] arr = {20, 56, 89, 12, 30};
System.out.println("排序前:" + arrayToString(arr));

//双重循环
for (int x = 0; x < arr.length - 1; x++) {
for (int i = 0; i < arr.length - 1 - x; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
System.out.println("排序后:" + arrayToString(arr));
}


}

Arrays类的概述和常用方法

Arrays类包含用于操作数组的各个方法

方法名 说明
public static String toString(int[] a) 返回指定数组的内容的字符串表示形式
public static void sort(int[] a) 按照数字顺序排列指定的数组
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

package unit_18Array;

/*
Arrays类包含用于操作数组的各个方法

public static String toString(int[] a)|返回指定数组的内容的字符串表示形式|
public static void sort(int[] a)|按照数字顺序排列指定的数组|
*/

import java.lang.reflect.Array;
import java.util.Arrays;

public class ArraysDemo {
public static void main(String[] args) {
//定义一个数组
int[] arr = {25,61,21,95,75};

System.out.println("排序前:"+ Arrays.toString(arr));

Arrays.sort(arr);

System.out.println("排序后:"+Arrays.toString(arr));
}
}

工具类的设计思想:

  • 构造方法用 private 修饰
  • 成员用 public static 修饰

基本类型包装类

概述

将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据

常用的操作之一:用于基本数据类型与字符串之间的转换

基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

Integer类的概述和使用

Integer类的概述和使用

integer:包装一个对象中的原始类型int的值

方法名 说明
public Integer(int value) 根据int值创建Integer对象(过时)
public Integer(String s) 根据String值创建Integer对象(过时)
public static Integer valueOf(int i) 返回值表示指定的int值的Integer实例
Public static Integer valueOf(String s) 返回一个保存指定值的Integer对象String

int 和 String的相互转换

基本类型包装类的最常见操作就是:用于基本类型和字符串之间的相互转换

  1. int 转换为String
    1. public static String valueOf(int i):返回int参数的字符串表示形式。该方法是String类中的方法
  2. String转换为int
    1. public static int parselnt(String s):将字符串解析为int类型。该方法时Integer类中的方法

案例:字符串中数据排序

需求:有一个字符串:“91 27 46 38 50”,请写程序实现最终输出结果是:“27 38 46 50 91”

思路:

  • 定义一个字符串
  • 把字符串中的数字数据存储到一个int类型的数组中
    • 得到字符串中每一个数字数据?
      • public String[] split(String regex)
    • 定义一个int数组,把String[]数组中的每一个元素存储到int数组中
      • public static int parselnt(String s)
  • 对int数组进行排序
  • 把排序后的int数组中的元素进行拼接得到一个字符串,这里拼接采用StringBuilder来实现
  • 输出结果
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

package unit_19Integer;

import java.util.Arrays;

public class Demo {
public static void main(String[] args) {
//定义一个字符串
String s = "91 25 86 46 26";

//把字符串中的数字存储到一个int类型的数组中
String[] strArray = s.split(" ");

//定义一个int数组,把String[]数组中的每一个元素存储到int数组中
int[] arr = new int[strArray.length];
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(strArray[i]);
}

//对int数组进行排序
Arrays.sort(arr);

//把排序后的int数组中的元素进行拼接得到一个字符串,这里拼接采用StringBuilder来实现
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
sb.append(arr[i]);
} else {
sb.append(arr[i]).append(" ");
}
}
String result = sb.toString();

//输出结果
System.out.println("result:" + result);

}
}

自动装箱和拆箱

  • 装箱:把基本数据类型转换为对应的包装类类型
  • 拆箱:把包装类类型转换为对应的基本数据类型
1
2
3
4
5
6
7
8
9

//装箱
Integer i = Integer.valueOf(100);
Integer i = 100; //自动装箱

//拆箱
i = i.intValue() + 200;
i + = 200; //自动拆箱

**注意:**在使用包装类类型的时候,如果做操作,最好先判断是否为null,推荐的是,只要是对象,在使用前就必须进行不为null的判断

日期类

Date类概述和构造方法

Date代表了一个特定的时间,精确到毫秒

方法名 说明
public Date() 分配一个Date对象,并初始化,以便它代表被分配的时间,精确到毫秒
public Date(long date) 分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数

Date类的常用方法

方法名 说明
public long getTime() 获取的是日期对象从1970年1月1日00:00:00到现在的毫秒值
public void setTime(long time) 设置时间,给的是毫秒值

SimpleDateFormat类概述

SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。我们重点学习日期格式化和解析

日期和时间格式由日期和时间模式字符串指定,在日期和时间字符串中,从’A’到’Z’以及’a’到’z’引号的字母被解释为表示日期或时间字符串的组件的模式字母

常用的模式字母以及对应关系如下:

  • y:年
  • M:月
  • d:日
  • H:时
  • m:分
  • s:秒

SimpleDateFormat的构造方法

方法名 说明
public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认模式和日期格式
public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat使用给定的模式和默认的日期格式

SimpleDateFormat格式化和解析日期

  • 格式化(从Date到String)
    • public final String format(Date date):将日期格式化成日期/时间字符串
  • 解析(从String到Date)
    • public Date parse(String source):从给定字符串的开始解析文本以生成日期

案例:日期工具类

需求:定义一个日期工具类(DateUtils),包含两个方法:把日期转换为指定格式的字符串;把字符串解析为指定格式的日期,然后定义一个测试类(DateDemo),测试日期工具类的方法

思路:

  • 定义日期工具类(DateUtils)
  • 定义一个方法dateToString,用于把日期转换为指定格式的字符串
    • 返回值类型:String
    • 参数:Date date,String format
  • 定义一个方法stringToDate,用于字符串解析为指定格式的日期
    • 返回值类型:Date
    • 参数:String s,String format
  • 定义测试类DateDemo,调用日期工具类中的方法
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

package unit_20Date.Demo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
//构造方法私有
//成员方法静态
public class DateUtils {
private DateUtils(){}
/*
把日期转为指定格式的字符串
返回值类型:String
参数:Date date,String format
*/
public static String dateToString(Date date, String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
String s = sdf.format(date);
return s;
}

/*
把字符串解析为指定格式的日期
返回值类型:Date
参数:String s,String format
*/
public static Date stringToDate(String s,String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d = sdf.parse(s);
return d;
}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

package unit_20Date.Demo;

import java.text.ParseException;
import java.util.Date;

public class DateDemo {
public static void main(String[] args) throws ParseException {
//创建日期对象
Date d = new Date();

String s1 = DateUtils.dateToString(d,"yyyy年MM月dd日 HH:mm:ss");
System.out.println(s1);

String s2 = DateUtils.dateToString(d,"yyyy年MM月dd日");
System.out.println(s2);

String s3 = DateUtils.dateToString(d,"HH:mm:ss");
System.out.println(s3);
System.out.println("----------------------");

String s = "2022-08-01 16:58:30";
Date dd = DateUtils.stringToDate(s, "yyyy-MM-dd HH:mm:ss");
System.out.println(dd);
}
}