1.Collections集合工具类
内置了大量对集合操作的静态方法,可以通过类名直接调用方法。
方法的种类:最大值max、最小值min、sort排序...详见API帮助文档
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class CollectionTest {public static void main(String[] args) {List l = new ArrayList();l.add("c");l.add("e");l.add("m");l.add("o");l.add("g");l.add("f");//最大值String max = (String) Collections.max(l);System.out.println(max);//最小值String min = (String) Collections.min(l);System.out.println(min);//排序Collections.sort(l);System.out.println(l);}
}
2. 泛型
是对集合类型的一种约束,保证集合中只存放一种类型的数据
约束的范围:集合、方法、类
import java.util.ArrayList;
import java.util.List;public class 泛型测试 {public static void main(String[] args) {List<String> l = new ArrayList();
// List l = new ArrayList<String>();l.add("a");
// 不符合类型,会报错👇
// l.add(1);
// l.add(true);System.out.println(l);List<Student> studentList = new ArrayList();Student s1 = new Student();Student s2 = new Student();Student s3 = new Student();studentList.add(s1);studentList.add(s2);studentList.add(s3);
// studentList.add(1);不是学生类型,会报错}public static double getSum(ArrayList<? extends Number> value){return 0;}
}
3.Object类(超类)
是Java中所有类的父类,是唯一没有父类的类
常用的方法:
- toString() -- 转换字符串
- hashCode() -- 一个对象的唯一十进制数列
- equals() -- 判断两个字符串是否相等
3.1 模拟hashCode()
public class Test {public static void main(String[] args) {Student student1 = new Student();student1.id = 1;student1.name = "za";Student student2 = new Student();student2.id = 2;student2.name = "ci";System.out.println(student1.hashCode()); //189568618System.out.println(student2.hashCode()); //793589513String s1 = "Hello";String s2 = "World";System.out.println(s1.equals(s2)); //false}
}
3.2 模拟equals
实现属性匹配,根据classId属性判断两名同学是否来自同一个班
public class EqualsDemo {private String classId;private String name;public EqualsDemo(String classId, String name) {this.classId = classId;this.name = name;}public String getClassId() {return classId;}public void setClassId(String classId) {this.classId = classId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public boolean equals(Object o){if(o instanceof EqualsDemo){int i = 0;EqualsDemo e = (EqualsDemo)o;if (e.getClassId().equals(this.getClassId())){return true;}else{return false;}}return false;}
}
测试文件: 返回true
public class EqualsDemoTest {public static void main(String[] args) {EqualsDemo tom = new EqualsDemo("1234","Tom");EqualsDemo jack = new EqualsDemo("1234","Jack");System.out.println(tom.equals(jack));}
}
4. 包装类
是基于基本类型封装的工具类,提供了大量对数据进行操作的方法。如:类型转换方法
包装类的种类:
- 所有基本类型都有对应的包装类
- 包装类中父类中的提供了valueOf()方法,可用于类型转换
- 各包装类中提供了自己的类型转换方法parseInt()、parseFoalt()等
- 包装类和对应的基本类型提供了自动装箱、自动拆箱功能,因此可以直接转换
public class 包装类测试 {public static void main(String[] args) {int a = 1;Integer b = 2;System.out.println(a + b);//3
// 该写法JDK1.8支持👇
// Integer c = new Integer(500);String c = "500";System.out.println(c+1);//5001//字符串转数字,该字符串必须为可计数类型Integer d = Integer.valueOf(c);System.out.println(d+1);//501Integer e = Integer.parseInt(c);System.out.println(e+1);//501}
}
5. 字符串
种类:
- Sting:将字符串存到常量池中,查询快,修改、追加慢。
- StringBuffer:将字符串存放在堆中,查询慢,修改和追加快,线程安全的
- StringBuilder:将字符串存放在堆中,查询快,修改和追加快,线程非安全的
5.1 equals内容比较
public class 字符串测试1 {public static void main(String[] args) {String str1 = "hello";String str2 = new String("hello");System.out.println(str1 == str2);//false//equals可以对字符串的内容进行比较System.out.println(str1.equals(str2));//trueSystem.out.println(1+2+str1);//3helloSystem.out.println(str1+1+2);//hello12System.out.println(str1+(1+2));//hello3StringBuffer sb = new StringBuffer("abc");sb.append("efg");System.out.println(sb);//abcefgSystem.out.println(sb.length());//6System.out.println(sb.reverse());//gfecba
5.2 三种字符串追加比较
计算并打印出三种字符串拼接操作所花费的时间。
public class 字符串测试2 {public static void main(String[] args) {//String测试String s = "doudou";//获得系统当前的毫秒数long start = System.currentTimeMillis();for (int i = 0; i < 50000; i++) {s+="doudou";}long end = System.currentTimeMillis();System.out.println("String使用了:"+(end-start));//StringBuffer测试StringBuffer strb = new StringBuffer("doudou");long start1 = System.currentTimeMillis();for (int i = 0; i < 50000; i++) {strb.append("doudou");}long end1 = System.currentTimeMillis();System.out.println("StringBuffer使用了:"+(end1-start1));//StringBuilder测试StringBuilder strbu = new StringBuilder("doudou");long start2 = System.currentTimeMillis();for (int i = 0; i < 50000; i++) {strbu.append("doudou");}long end2 = System.currentTimeMillis();System.out.println("StringBuilder使用了:"+(end2-start2));}
}
输出结果:
String使用了:1356
StringBuffer使用了:2
StringBuilder使用了:1
6. 数学运算类
6.1 Math数学运算类
public class 数学运算类 {public static void main(String[] args) {System.out.println(Math.ceil(1.2)); //向上取整(2.0)System.out.println(Math.floor(1.8));//向下取整(1.0)System.out.println(Math.round(1.5));//四舍五入(2)}
}
6.2 产生10个1-10的随机数
import java.util.Random;
public class 数学运算类 {public static void main(String[] args) {//方法1for (int i=0;i<10;i++){double result = (Math.random()*10)+1;System.out.println((int)result);}//方法2Random r = new Random();for (int i=0;i<10;i++){int result = r.nextInt(10)+1;System.out.println(result);}}
}
7. 日期时间类
7.1 获得系统时间
import java.util.Date;
public class 日期时间类1 {public static void main(String[] args) {//获得当前系统时间Date now = new Date();System.out.println(now); //此刻时间//系统初始时间+1000msDate d = new Date(1000);System.out.println(d); //Thu Jan 01 08:00:01 CST 1970
7.2 比较时间前后
public class 日期时间类 {public static void main(String[] args) {//调用者日期是否在输出者之后/前System.out.println(now.after(d)); //trueSystem.out.println(now.before(d)); //false//调用者日期在参数者之后,返回1,否则返回-1,相等返回0System.out.println(now.compareTo(d)); //1System.out.println(d.compareTo(now)); //-1}
}
7.3 设置日历工具
import java.util.Calendar;
public class 日期时间类3 {public static void main(String[] args){//显示此时此刻的日期时间Calendar calendar = Calendar.getInstance();System.out.println(calendar.get(Calendar.YEAR));System.out.println(calendar.get(Calendar.MONTH)+1);//默认初始值为0,而非1月System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//使用日历工具设置日期calendar.set(2025,6,3);System.out.println(calendar.get(Calendar.YEAR)); //2025System.out.println(calendar.get(Calendar.MONTH)); //6System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); //3}
}
7.4 日期时间格式化
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
public class 日期时间类4 {public static void main(String[] args) throws ParseException {//日期时间格式化DateFormat df = DateFormat.getInstance();//设置格式DateFormat df1 = DateFormat.getDateInstance(DateFormat.LONG);System.out.println(df1.format(new Date())); //2025年1月14日//自定义日期时间格式化工具SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//将日期格式的数据转换成字符串System.out.println(sdf.format(new Date())); //2025-01-14 10:43:47//字符串转换成日期格式Date date1 = sdf.parse("2025-01-14 10:43:47");System.out.println(date1);}
}