API(应用程序接口):java帮我们写好的一些程序,如类、方法等
1. String
1.1. 创建String对象并封装字符串
// 1. 直接用双引号得到字符串对象,封装字符串数据
String name = "xiaoming";
System.out.println(name); // xiaoming
// 2. 使用new String创建对象, 并调用构造器来初始化
String s = new String(); // 无参构造器
System.out.println(s); // ""
// 3. 使用字符数组构造器
char[] chars = {'a', 'b', 'c'};
String s1 = new String(chars); // 字符数组构造器
System.out.println(s1); // abc
// 4. 使用字节数组构造器
byte[] bytes = {97, 98, 99};
String s2 = new String(bytes); // 字节数组构造器
System.out.println(s2); // abc
1.2. String的常用方法
String a = new String("test");
String b = new String("test");
System.out.print(a == b); // false 比较地址
System.out.print(a.equals(b)); // true
1.3. 注意事项
- String的对象是不可变的字符串对象
- 只要是以""写出的字符串对象,都会存在堆的常量池中,且相同内容只存储一份
- 通过new创建的字符串对象,每new一次都会产生一个新对象放在堆内存中。
2. ArrayList
3. Object
- Object类是Java中所有类的祖宗类,Java中所有的对象都可以使用Object类提供的方法
- ,equals比较的是地址
- toString()和equals()方法主要是为了让子类去重写,实现新的逻辑。
- 子类对clone()方法重写时,需要实现Cloneable接口(一个标记接口),克隆的对象是一个新对象
4. Objects
objects是一个工具类,提供了许多静态方法,可以使用类名直接调用
5. 包装类
- 把基本类型的数据包装成对象
- 使用valueOf()方法,将基本类型数据转换为对象
- Java中提供自动装箱,可以自动的把基本数据类型转化为对象;自动拆箱,将封装的对象自动转换为基本数据类型。
- 包装类可以将基本数据类型转换为字符串(如Integer.toString()),可以将字符串对应的数值转化为基本数据类型(如 parseInt()),推荐直接使用valueOf("123")。
6. StringBuilder
- StringBuilder是一个可变字符串对象,相当于是一个容器,里边的字符串是可以改变的,就是用来造作字符串的。
- StringBuilder支持链式编程,如s.append(123).append("123");
- 为什么使用StringBuilder,因为如果有对字符串频繁的拼接和修改,StringBuilder的效率更高,因其每次返回的都是对象本身,而String是创建新的对象。
7. StringBuffer
- StringBuffer的用法与StringBuilder一模一样
- StringBuffer是线程安全的,StringBuilder是线程不安全的
8. StringJoiner
- 不仅能提高字符串的操作效率,在某些场景下使用它来操作字符串,代码会更简洁
9. Math
- 是一个数学工具类,提供了一些对数据操作的静态方法
10. System
- 一个系统工具类
从1970-1-1 0:0:0 开始到此的毫秒值
11. Runtime
- 代表程序所在的运行环境
- 是一个单例类
12. BigDecimal
- 用于解决浮点运算时,结果失真的问题。
- 把小数转换为字符串,利用BigDecimal进行运算
13. Date
- 代表的是日期和时间。
14. SimpleDateFormat
- 简单日期格式化,用于把日期对象和毫秒值格式化为我们想要的格式。
- 将字符串转换为日期对象
15. Calendar
- 代表系统此刻时间对应的日历,可以通过它单独获取和修改时间中的年、月、日、时、分、秒等。
16. LocalDate、LocalTime、LocalDateTime
16.1. LocalDate
代表本地日期,年、月、日、星期(Year、Month、DayOfMonth、DayOfWeek)
16.2. LocalTime
代表本地时间,时、分、秒、纳秒(Hour、Minute、Second、Nano)
16.3. LocalDateTime
代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)
// 1. 获取本地日期对象
LocalDate localDate = LocalDate.now();
// 2. 获取日期信息
System.out.println(localDate.getYear()); // 2024 年
System.out.println(localDate.getMonthValue()); // 11 月
System.out.println(localDate.getDayOfMonth()); // 10 日
System.out.println(localDate.getDayOfWeek().getValue()); // 7 周几
System.out.println(localDate.getDayOfYear()); // 315 一年中的第几天
// 3. 修改日期信息 withYear、withMonth、withDayOfMonth、withDayOfWeek
LocalDate localDate1 = localDate.withYear(2099); // 修改后返回的是一个新对象, 原对象会被保留
System.out.println(localDate1); // 2099-11-10
// 4. 把某个信息加多少 plusYears、plusMonths、plusDays、plusWeeks
LocalDate localDate2 = localDate.plusWeeks(7);
System.out.println(localDate2);
// 5. 把某个信息减多少 minusYears、minusMonths、minusDays、minusWeeks
LocalDate localDate3 = localDate.minusYears(10);
System.out.println(localDate3);
// 6. 获取指定日期的LocalDate对象 of(year, month, dayOfMonth)
LocalDate of = LocalDate.of(2002, 01, 01);
// 7. 判断两个日期对象是否相等, 在前还是在后 equals、isBefore、isAfter
boolean flag = of.isBefore(localDate1); // true
System.out.println(flag);
17. ZoneId、ZonedDateTime
17.1. ZoneId
获取时区Id
// 1. ZoneId的常用方法
// 1.1 获取当前系统默认时区
ZoneId zoneId = ZoneId.systemDefault();
System.out.println(zoneId);
// 1.2 获取所有时区列表
Set<String> availableZoneIds = ZoneId.getAvailableZoneIds();
System.out.println(availableZoneIds);
// 1.3 将时区id封装成ZoneId对象
ZoneId of = ZoneId.of("America/New_York");
17.2. ZonedDateTime
带时区的时间
// 2. ZonedDateTime 带时区的时间
// 2.1 获取某个时区的ZonedDateTime对象
ZonedDateTime now = ZonedDateTime.now(of);
System.out.println(now);
// 2.2 获取系统默认的时区的ZonedDateTime对象
ZonedDateTime now1 = ZonedDateTime.now();
System.out.println(now1);
18. Instance
时间线上的某一个时刻/时间戳,由两部分组成:从1970-01-01 00:00:00 开始到此的总秒数 + 不到1秒的纳秒数
19. DateTimeFormatter
格式化器,用于时间的格式化、解析
20. Period、Duration
20.1. Period
用于计算两个LocalDate对象相差的年数、月数、天数。
20.2. Duration
用于计算两个时间对象相差的天数、小时数、分钟数、秒数、纳秒数
21. Arrays
- 用来操作数组的一个工具类
- 如何解决不能对自定义对象的排序
A. 让该对象的类实现Comparable接口,重写CompareTo()方法,自定义比较规则
// 学生类
public class Student implements Comparable<Student>{
private String name;
private int age;
private double score;
public Student() {
}
public Student(String name, int age, double score) {
this.name = name;
this.age = age;
this.score = score;
}
@Override
public int compareTo(Student o) {
// 约定
// 1. 如果左边对象大于右边对象, 返回正整数
// 2. 如果左边对象小于右边对象, 返回负整数
// 3. 如果左边对象等于右边对象, 返回0
if(this.score > o.score){
return 1;
}else if(this.score < o.score){
return -1;
}
return 0;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
}
// 主类
public static void main(String[] args) {
Student[] students = new Student[3];
students[0] = new Student("小明", 20, 99.5);
students[1] = new Student("小红", 21, 89.4);
students[2] = new Student("小绿", 22, 89.3);
Arrays.sort(students);
System.out.println(Arrays.toString(students));
}
B. 使用下面这个sort方法,创建Comparator比较接口的匿名内部类对象,自定义比较规则
public static <T> void sort(T[] arr, Comparator<? super T> c)
// public static <T> void sort(T[] arr, Comparator<? super T> c)
// 参数1 比较的数组
// 参数2 比较器对象, 用于制定比较规则
Student1[] students1 = new Student1[3];
students1[0] = new Student1("小明", 20, 99.5);
students1[1] = new Student1("小红", 21, 89.4);
students1[2] = new Student1("小绿", 22, 89.3);
Arrays.sort(students1, new Comparator<Student1>() {
@Override
public int compare(Student1 o1, Student1 o2) {
// 制定比较规则
return Double.compare(o1.getScore(), o2.getScore());
}
});
System.out.println(Arrays.toString(students1));
标签:常用,Java,String,对象,System,API,println,new,out
From: https://blog.csdn.net/weixin_68853331/article/details/143664710