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自动调用此方法,用以标记垃圾对象,进入回收队列。

image-20250405164430329

由于这个方法被启用了,所以大家了解一下怎么使用

//在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类

字符串是常量,创建之后不可改变

字符串字面量存在字符串池里,在方法区里,可以共享

当我们对字符串做修改时,重新开辟了一个空间,放上修改的值,是字符串重新指向新空间,原来的值并没有改变

image-20250405171241947

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.包装类

包装类就是把基本类型的数据包装成对象

image-20250406154115012

自动装箱:基本数据类型可以自动转换为对应的包装类型

自动拆箱:包装类型可以自动转换为对应的基本数据类型

//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类

工具类,提供对数据进行操作的一些静态方法

image-20250406163414779

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
posted @ 2025-04-06 20:06  wyy61  阅读(73)  评论(0)    收藏  举报