java常用类
java常用类
1.Object类
1.1getClass()
返回引用中存储的实际对象类型
应用:用于判断了对象是否是同一类型
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class StudentTest {
public static void main(String[] args) {
Student student1 = new Student();
Student student2 = new Student();
Class class1=student1.getClass();
Class class2=student2.getClass();
if(class2==class1){
System.out.println("True");
}
}
}
1.2hasCode()
返回对象的哈希码值
应用:判断是否是同一个对象
Student student1 = new Student();
Student student2 = new Student();
Student s3=student1;
System.out.println(student1.hashCode());
System.out.println(student2.hashCode());
System.out.println(s3.hashCode());
/*793589513
1313922862
793589513
*/
1.3toString()
返回对象的字符串表示
可进行覆盖,输出对象属性
Student s1 = new Student();
Student s2 = new Student();
Student s3=s1;
System.out.println(s1.toString());
System.out.println(s2.toString());
/*
Demo6.Student@2f4d3709
Demo6.Student@4e50df2e
*/
//重写该方法
public class Student {
private String name;
private int age;
//alt+insert
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
1.4equals()
比较两个对象地址是否相同
可进行覆盖,比较两个对象的内容是否相同
Student s1 = new Student();
Student s2 = new Student();
Student s3=s1;
System.out.println(s1.equals(s2));//false
System.out.println(s1.equals(s3));//true
//方法重写
@Override
public boolean equals(Object obj) {
//判断两个对象是否是同一个引用
if(this==obj)
{
return true;
}
//判断obj是否为null
if(obj==null){
return false;
}
//判断是否是同一个类型
// if(obj.getClass()==this.getClass())
// {
//
// }
//判断对象是否是某种类型
if(obj instanceof Student){
//强制类型转换
Student s1=(Student) obj;
//判断内容
if(this.name.equals(s1.getName())&&this.age==s1.getAge())
{
return true;
}
}
return false;
}
//测试
public static void main(String[] args) {
Student s1 = new Student("小明",17);
Student s2 = new Student("小明",17);
System.out.println(s1.equals(s2));//true
}
1.5finalize()
当对象被判定为垃圾对象时,有JVM自动调用此方法,用以标记垃圾对象,进入回收队列。

由于这个方法被启用了,所以大家了解一下怎么使用
//在Student类中重写了此方法
@Override
protected void finalize() throws Throwable {
System.out.println(this.name+"被回收了");
}
//测试
public static void main(String[] args) {
// Student s1 = new Student("小明",17);
// Student s2 = new Student("小红",17);
new Student("小明",17);
new Student("小红",17);
System.gc();
System.out.println("回收垃圾");
}
2.String类
字符串是常量,创建之后不可改变
字符串字面量存在字符串池里,在方法区里,可以共享
当我们对字符串做修改时,重新开辟了一个空间,放上修改的值,是字符串重新指向新空间,原来的值并没有改变

2.1常用方法
length()返回字符串长度
charAt()根据下标获取字符串
contains()判断当前字符串是否包含str
public static void main(String[] args) {
String str="java python c";
System.out.println(str.length());
System.out.println(str.charAt(1));
System.out.println(str.contains("java"));
System.out.println(str.contains("php"));
/*
13
a
true
false
*/
}
toCharArray()将字符串转换成数组
indexOf()查找str首次出现的下标,存在,即返回该下标;不存在,则返回-1
lastIndexOf()查找字符串在当前字符串中最后一次出现的下标索引
public static void main(String[] args) {
String str="java python java c java";
System.out.println(Arrays.toString(str.toCharArray()));
System.out.println(str.indexOf("java"));
System.out.println(str.indexOf("java",4));
System.out.println(str.lastIndexOf("java"));
}
trim()去掉字符串前后的空格
toUpperCase()将小写转为大写
toLowerCase()将大写转为小写
endWith()判断字符串是否以str结尾
startWith()判断是否以str开头
public static void main(String[] args) {
String content1=" hello world ";
System.out.println(content1.trim());
System.out.println(content1.toUpperCase());
System.out.println(content1.toLowerCase());
String filename="hello.java";
System.out.println(filename.endsWith("java"));
System.out.println(filename.startsWith("hello"));
}
replace()将旧字符串,字符替换成新字符串,新字符
split()根据str做拆分
String str="java python java c java";
System.out.println(str.replace("java","php"));//php python php c php
String[] arr=str.split(" ");
for (String s : arr) {
System.out.println(s);
}
/*
java
python
java
c
java
*/
String s1="java python java c java,hello";
String[] ss=s1.split("[ ,]");//"[ ,]+"表示前面空格和逗号可以出现多个
for (String s : ss) {
System.out.println(s);
}
/*
java
python
java
c
java
hello
*/
equals、compareTo比较大小
String s1="hello";
String s2="HELLO";
System.out.println(s1.equals(s2));//false
System.out.println(s1.equalsIgnoreCase(s2));//true
String s3="abc";
String s4="ayzawe";
System.out.println(s3.compareTo(s4));//比位置,s3-s4; -23
String s5="abc";
String s6="abcxyz";
System.out.println(s5.compareTo(s6));//比长度 -3
//如果两个字符串相同,为0;
substring 截取字符串
String str="that is a this";
//在this前面加一个easy
String str2=str.replace("this","easy this");
System.out.println(str2);
//把每个单词首字母变成大写
String[] arr=str.split(" ");
for (int i = 0; i < arr.length; i++) {
char first=arr[i].charAt(0);
char uppfirst=Character.toUpperCase(first);
String news=uppfirst+arr[i].substring(1);
System.out.println(news);
}
3.StringBuffer和StringBuilder
StringBuffer:可变字符串,JDK1.0提供,运行效率慢,线程安全
StringBuilder:可变字符串,JDK5.0提供,运行效率快,线程不安全
StringBuffer sb=new StringBuffer();
//append 追加
sb.append("hello");
System.out.println(sb.toString());//hello
sb.append("world");
System.out.println(sb.toString());//helloworld
//insert 添加
sb.insert(0,"java");
System.out.println(sb.toString());//javahelloworld
//replace 替换
sb.replace(4,9,"HELLO");//左闭右开
System.out.println(sb.toString());//javaHELLOworld
//delete 删除
sb.delete(0,4);
System.out.println(sb);//HELLOworld
//清空
sb.delete(0,sb.length());
StringBuilder和StringBuffer功能一样,单线程用StringBuilder,多线程用StringBuffer
4.Date
表示特定的瞬间,Date中大部分方法被Calendar类中的方法取代
时间单位,1秒=1000毫秒,1毫秒=1000微秒,1微秒等于1000纳秒
//Date要使用java.util
//今天
Date data1=new Date();
//toString用来返回当前时间
System.out.println(data1.toString());//Sun Apr 06 15:09:11 CST 2025
System.out.println(data1.toLocaleString());//(过时了)2025年4月6日 15:14:12
//昨天
//getTime获得从1970到今天的毫秒数
Date date2=new Date(data1.getTime()-(60*60*24*1000));
System.out.println(date2.toLocaleString());// 2025年4月5日 15:14:12
//after和before 比较两个时间谁前谁后
System.out.println(data1.after(date2));//true
System.out.println(data1.before(date2));//false
//比较compareTo 比毫秒值相减是正数还是负数
System.out.println(data1.compareTo(date2));//date1-date2 1
//equals 比较是否相等
System.out.println(data1.equals(date2));//false
5.Calendar
提供了获取和设置各种日历字段的方法
//创建Calendar对象
Calendar calendar=Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());//2025年4月6日 19:26:47
System.out.println(calendar.getTimeInMillis());//1743938807167
//获取时间信息
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH);//0-11
int day=calendar.get(Calendar.DAY_OF_MONTH);//Date
int hour=calendar.get(Calendar.HOUR_OF_DAY);//HOUR 12小时,HOUR_OF_DAY 24小时
int minute=calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+":"+minute+":"+day);//2025年4月6日19:35:6
//修改时间
Calendar calendar1=Calendar.getInstance();
calendar1.set(Calendar.DAY_OF_MONTH,5);
System.out.println(calendar1.getTime().toLocaleString());//2025年4月5日 19:38:31
//add方法修改时间
calendar1.add(Calendar.HOUR,1);
System.out.println(calendar1.getTime().toLocaleString());//2025年4月5日 20:44:08
//获取当前时间一月中天数的最大值和最小值
int max=calendar1.getActualMaximum(Calendar.DAY_OF_MONTH);
int min=calendar1.getActualMinimum(Calendar.DAY_OF_MONTH);
System.out.println(max);//30
System.out.println(min);//1
6.包装类
包装类就是把基本类型的数据包装成对象

自动装箱:基本数据类型可以自动转换为对应的包装类型
自动拆箱:包装类型可以自动转换为对应的基本数据类型
//Integer i=Integer.valueOf(100);
Integer i=100;
// int num=i.intValue();
int num=i;
将基本数据类型与字符串进行转换
选中代码,ctrl+alt+m将代码放进方法里
//基本数据->字符串
//1.
int num=10;
String s1=num+"";//"10"
//2.
String s2=Integer.toString(100);//"100"
//3.
Integer i=100;
String s3=i.toString();//"100"
//4.
String s4=String.valueOf(num);//"100"
//字符串-->基本数据类型
//1.常用
String s="123";
int i1=Integer.parseInt(s);//123
//2.
int i2=Integer.valueOf(s);//123
7.Math类
工具类,提供对数据进行操作的一些静态方法

System.out.println(Math.abs(-100));//100
System.out.println(Math.ceil(1.000001));//2.0
System.out.println(Math.ceil(1.0));//1.0
System.out.println(Math.floor(1.999999999999));//1.0
System.out.println(Math.round(1.45));//1 只看小数点后一位
System.out.println(Math.max(10,6));//10
System.out.println(Math.min(10,6));//6
System.out.println(Math.pow(2,4));//16.0
System.out.println(Math.random());//随机小数,[0.0,1.0)
7.1BigDecimal
float和double是近似存储,需要精确运算时,需要借用BigDecimal
BigDecimal bd1=new BigDecimal("1.0");
BigDecimal bd2=new BigDecimal("0.9");
//减法
BigDecimal r1=bd1.subtract(bd2);
System.out.println(r1);//0.1
//加法
BigDecimal r2=bd1.add(bd2);
System.out.println(r2);//1.9
//乘法
System.out.println(bd1.multiply(bd2));//0.90
//除法 除不尽会报错
BigDecimal r3=new BigDecimal("1.4")
.subtract(new BigDecimal("0.5"))
.divide(new BigDecimal("0.9"));
System.out.println(r3);//1
BigDecimal r4=new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);//保留两位小数,四舍五入
System.out.println(r4);//3.33
浙公网安备 33010602011771号