Java常用类
Object类
Java可以自动装箱/拆箱:即自动实现基本数据类型和包装类的相互转换
Object类是所有类的父亲,所有类都可以使用Object的所有方法
-
hashCode( )
作用:获取对象的hash值
两个对象相等,哈希值也相等
1 //object.hashCode() 2 //Object、String、ArrayList 可以使用 3 import java.util.ArrayList; 4 public class MyClass { 5 public static void main(String[] args) { 6 Object obj1 = new Object(); 7 System.out.println(obj1.hashCode());//输出2083562754 8 String str = new String(); 9 System.out.println(str.hashCode()); //输出0 10 ArrayList<Object> list = new ArrayList<>(); 11 System.out.println(list.hashCode());//输出1 12 } 13 }
-
toString( )
作用:返回对象的字符串表示形式
通常可以通过重写输出我们希望输出的值
1 //object.toString() 2 //默认返回格式:对象的 class 名称 + @ + hashCode 的十六进制字符串 3 // 4 import java.util.ArrayList; 5 public class MyClass { 6 public static void main(String[] args) { 7 Object obj1 = new Object(); 8 System.out.println(obj1.toString()); //输出java.lang.Object@7c30a502 9 ArrayList<Object> list = new ArrayList<>(); 10 System.out.println(list.toString()); //输出[list中的所有元素,逗号分隔] 11 String str = "12345"; 12 System.out.println(str.toString()); //输出12345 13 } 14 }
-
clone( )
作用:创建并返回对象的副本
-
getClass( )
作用:获取对象的类
1 public class MyOtherClass extends MyClass{ 2 } 3 public class MyClass { 4 public static void main(String[] args) { 5 Object obj1 = new Object(); 6 System.out.println(obj1.getClass()); 7 //输出class java.lang.Object 8 MyClass myOtherClass = new MyOtherClass(); //父类的引用指向子类 9 System.out.println(myOtherClass.getClass()); 10 //输出class com.myClass.demo01.MyOtherClass 11 } 12 }
-
notify( )
作用:唤醒一个在此对象监视器上等待的线程
-
wait( )
作用:让当前线程进入等待状态。直到其他线程调用此对象的notify() 方法或notifyAll() 方法
wait(long timeout)
wait(long timeout,int nanos)
-
equals( )
作用:比较两个对象是否相等
注意如果子类重写了equals方法,就需要重写hashCode方法
1 public class MyClass { 2 public static void main(String[] args) { 3 4 Object obj1 = new Object(); 5 Object obj2 = new Object(); 6 // 不同对象,内存地址不同,不相等,返回 false 7 System.out.println(obj1.equals(obj2)); // false 8 9 // String 重写了 equals() 方法 10 // 对象引用,内存地址相同,相等,返回 true 11 Object obj3 = obj1; 12 System.out.println(obj1.equals(obj3)); // true 13 14 // String 类使用 equals() 方法 15 String obj4 = new String(); 16 String obj5 = new String(); 17 // 初始化的两个对象都为 null,所以是相等,返回 true 18 System.out.println(obj4.equals(obj5)); // true 19 obj4 = "Runoob"; 20 obj5 = "Google"; 21 // 两个值不同,内存地址也不同,所以不相等,返回 false 22 System.out.println(obj4.equals(obj5)); // false 23 } 24 }
Math类
Random类
生成随机数
1 import java.util.Random; 2 3 public class MyClass { 4 public static void main(String[] args) { 5 //Random rand = new Random(); //以默认的种子生成伪随机数 6 Random rand = new Random(System.currentTimeMillis()); 7 //以当前时间作种子生成(真)随机数 8 System.out.println(rand.nextBoolean()); //true ~ false 9 System.out.println(rand.nextDouble()); //0 ~ 1的double 10 System.out.println(rand.nextFloat()); //0 ~ 1的float 11 System.out.println(rand.nextInt()); //int 12 System.out.println(rand.nextInt(20)); //0 ~ 20 数字不能为负 13 System.out.println(rand.nextLong()); //long 14 15 //生成随机数组 16 int[] ints = new int[10]; 17 for (int i = 0; i <10 ; i++) { 18 ints[i] = rand.nextInt(100); 19 System.out.println(ints[i]); 20 } 21 } 22 } 23 //引用数据类型+.MIN_VALUE =最小值 24 //引用数据类型+.MAX_VALUE =最大值
File类
File对象代表磁盘中实际存在的文件和目录
创建文件、查看文件、修改文件、删除文件
包装类
Date类
new Date();
1 //创建日期对象并打印日期 2 Date date = new Date(); 3 System.out.println(date);//格式:Wed Mar 03 21:49:33 CST 2021 4 5 //getTime得到一个long型整数,表示从1970到现在的毫秒数 6 System.out.println(date.getTime);//1614857518917 7 System.out.println(System.currentTimeMillis());//结果同上 8 9 //格式化日期并转成字符串 10 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); 11 Date date1 = new Date(); 12 String s = simpleDateFormat.format(date1); //不转成字符串会按原本日期格式输出 13 System.out.println(s); 14 15 //字符串转日期 16 //日期模式必须和字符串一致,否则会抛出异常
String类
String 没有提供修改字符串的方法,字符串具有不可变性
String 不能被继承(修饰符为final),表现为一个常量
1 //数字转字符串 2 //方法一:valueOf 3 int i = 5; 4 String str = String.valueOf(i); 5 //方法二:数字封箱为对象,再调用对象的toString 6 Integer it = i; 7 String str1 = it.toString(); 8 9 //字符串转数字:parseInt 10 String str = "99"; 11 int i = Integer.parseInt(str); 12 13 //获取字符串长度length 14 str.length(); 15 16 //获取字符charAt(指定位置) 17 str.charAt(1); 18 19 //获取对应字符数组toCharArray 20 21 //获取子串subString 22 23 //从字符x处分割split("x") 24 25 //判断字符串是否相等 26 a.equals(b); 27 a.equalsIgnoreCase(b);//忽略大小写 28 29 //格式化字符串 30 String sentenceFormat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n"; 31 String sentence2 = String.format(sentenceFormat,name,kill,title); 32 System.out.println(sentence2);//输出:name 在进行了连续 kill 次击杀后,获得了 title 的称号
StringBuffer
单线程适用
1 //用法和StringBuilder基本相同
StringBuilder
多线程适用
1 //追加append 2 //删除delete 3 //插入insert 4 //反转reverse 5 StringBuilder stringBuilder = new StringBuilder(); 6 stringBuilder.append("This is a string!"); 7 stringBuilder.delete(2,3);//Ths is a string! 8 stringBuilder.insert(2,"e");//Thes is a string! 9 stringBuilder.reverse();//!gnirts a si sehT