java常用类(内部类,系统常用方法)

本文深入探讨了Java中关键对象的方法,包括getClass、hashCode、toString、equals等的基本使用及原理,并详细介绍了String、BigDecimal、Date等类的重要功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.getClass

//1.getClass方法——判断类型是否相同

1.1

package ceshi;

public class Demo06 {
    private String name;
    private int age;

    public Demo06(String bbb, int i) {

    }

    public String getName() {
       return name;
    }
    public int getAge() {
       return age;
    }


    public void setName(String name) {
        this.name = name;

    }
    public void setAge(int age) {
        this.age = age;
    }
}

1.2

package ceshi;

import base.oop.Demo03.Student;

public class Demo07 {
    public static void main(String[] args) {
        Demo06 demo06 = new Demo06("aaa",10);
        Demo06 demo062 = new Demo06("bbb",20);
        //判断demo061和demo062是不是同一个类型
        Class class1 = demo06.getClass();
        Class class2 = demo062.getClass();
        if (class1==class2){
            System.out.println("是同一个类型");
        }else {
            System.out.println("不是一个类型");
        }

    }
}

2.hashCode

//2.hashCode方法——判断对象是否相同,即对应的地址是否相同

2.1

同1.1

2.2

package ceshi;

import base.oop.Demo03.Student;

public class Demo07 {
    public static void main(String[] args) {
        //1.getClass方法——判断类型是否相同
        Demo06 demo06 = new Demo06("aaa",10);
        Demo06 demo062 = new Demo06("bbb",20);
        //判断demo061和demo062是不是同一个类型
        Class class1 = demo06.getClass();
        Class class2 = demo062.getClass();
        if (class1==class2){
            System.out.println("是同一个类型");
        }else {
            System.out.println("不是一个类型");
        }
        //2.hashCode方法——判断对象是否相同
        System.out.println(demo06.hashCode());
        System.out.println(demo062.hashCode());//得出的结果不一样
        Demo06 demo063=demo062;
        System.out.println(demo063.hashCode());
        //3.

    }
}

3toString方法

 /*3.toString方法——alt+ins直接重写Generate重写toString方法,
        即可得出(Demo06{name='aaa', age=10} Demo06{name='bbb', age=20})*/
        System.out.println(demo06.toString());
        System.out.println(demo062.toString());

4equals方法(比较和==的区别)

这个我讲不好,建议看看这个大神的文章,(仅供学习,这里只是参考意见用,希望作者理解)你们直接在优快云搜索就可以,附上图片,找不到可以留言
尊重作者,是一个优秀的人,承认还是别人比较优秀

5finalize方法

•当对象被判定为垃圾对象时,由JvM自动调用此方法,用以标记垃圾对象,
进入回收队列。
•垃圾对象:没有有效引用指向此对象时,为垃圾对象。
• 垃圾回收:由Gc销毁垃圾对象,释放数据存储空间。
自动回收机制:JVM的内存耗尽,
一次性回收所有垃圾对象。
• 手动回收机制:使用System.gc0:通知JVM执行垃圾回收。
package ceshi;

public class Demo09 {

    public static void main(String[] args) {
        Demo08 suibian = new Demo08("suibian", 10);
        Demo08 suibian1 = new Demo08("suibian1", 10);
        Demo08 suibian2 = new Demo08("suibian2", 10);
        new Demo08("suibian3", 10);
        new Demo08("suibian4", 10);
        //回收垃圾
        System.gc();
        System.out.println("回收垃圾");
        suibian.aa(10);

        System.out.println(suibian.toString());
    }
}

6.String常用方法

6.1总结:

//length(); 返回字符串的长度
//charAt(int index);返回某个位置的字符
//contains(String str);判断是否包含某个字符串
//toCharArray();返回字符串对应的数组,遍历字符串中的所有内容
//indexOf();返回字符串首次出现的位置
//lastIndexOf();返回字符最后一次出现的位置
//trim();去掉字符串前后的空格
//toUpperCase();//把小写转换成大写、、、toLowerCase();把大写转换成小写 //endWith(str);判断是否以str结尾,startWith(str);判断是否以str开始
//replace(char old,char new);用新的字符串代替旧的字符串
 //split();对字符串进行拆分
//两个方法,equals和compareTo();比较大小    

6.2代码一(多数方法的集合代码)

package ceshi;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Locale;

public class Demo10 {
    public static void main(String[] args) {
        //length(); 返回字符串的长度
        //charAt(int index);返回某个位置的字符
        //contains(String str);判断是否包含某个字符串

        String a="这个东西真的都很无聊啊,东西";


        System.out.println(a.length());
        System.out.println(a.charAt(0));
        System.out.println(a.contains("东西"));

        System.out.println("========================================");

        //toCharArray();返回字符串对应的数组,遍历字符串中的所有内容
        //indexOf();返回字符串首次出现的位置
        //lastIndexOf();返回字符最后一次出现的位置
        System.out.println(Arrays.toString(a.toCharArray()));
        System.out.println(a.indexOf("东西"));
        System.out.println(a.lastIndexOf("东西"));

        System.out.println("========================================");

        //trim();去掉字符串前后的空格
        //toUpperCase();//把小写转换成大写、、、toLowerCase();把大写转换成小写
        //endWith(str);判断是否以str结尾,startWith(str);判断是否以str开始

        String a1="   hello world ";
        String a2="   HELLO WORLD ";


        System.out.println(a1.trim());
        System.out.println(a1.toUpperCase());
        System.out.println(a2.toLowerCase());
        System.out.println(a1.endsWith("d"));
        //replace(char old,char new);用新的字符串代替旧的字符串
        //split();对字符串进行拆分

        System.out.println(a.replace("东西","西东"));
        System.out.println(a.replace(0,4,"hello");//在位置之间修改字符
        String a3="java is the best   language,java..suibian";
      /*  这里是只有一个空格,中括号内,一个空格一个逗号一个点,表示逗号和空格都可以当做拆分的条件
        中括号后面添加一个“+”符号代表可以出现多个空格*/
        String[] arr=a3.split("[ , .]+");
        for (String s : arr) {
            System.out.println(s);
        }
        //两个方法,equals和compareTo();比较大小
        System.out.println("================================");
        String s1="hello";
        String s2="HELLO";
        System.out.println(s1.equals(s2));//false
        System.out.println(s1.equalsIgnoreCase(s2));//忽略大小写比较内容,true

        String s3="abc";//97
        String s4="xyz";//120
        System.out.println(s3.compareTo(s4));//97-120=-23,就是s3-s4的结果

        String s5="abc";//97
        String s6="abcxyz";//120
        System.out.println(s5.compareTo(s6));//不是比排序的时候比的就是字符串的长度,这里的结果为-3

        //在b的前面插入一个xyz
        String s7="abc";
        System.out.println(s7.replace("b", "xyzb"));

        System.out.println("============补充下面的这个===============================");
        String[] b1=a1.split("[ ]+");
        for (String s : b1) {
            System.out.println(s.toUpperCase());
        }
    }
}

6.3代码二(StringBuilder )

package neibulei;

public class Demo11 {
    public static void main(String[] args) {
        //StringBuilder stringBuilder = new StringBuilder();和StringBuffer效果是一样的
        //stringBuilder效率高于String
        StringBuffer a = new StringBuffer();
        //1.append();追加
        a.append("第一个追加的");
        System.out.println(a.toString());
        a.append("第二个追加的");
        System.out.println(a.toString());

        //2.insert();添加,但是是在某个位置添加
        System.out.println(a.insert(0, "真的不错"));

        //3.replace();替换
        a.replace(0,4,"hello");//替换0-4之间的字符变为hello
        System.out.println(a.toString());

        //4.delete();删除
        a.delete(0,4);//删除0-4之间的字符
        System.out.println(a.toString());
        a.delete(0,a.length());//清空
        System.out.println(a.length());


    }
}

7.BigDecimal的使用

特点:高精度的计算

7.1正常的加减乘除法

package neibulei;


import java.math.BigDecimal;

public class Demo12 {
    //BigDecimal精确计算浮点数,计算之间将会没有误差
    public static void main(String[] args) {
        double a=1.0;
        double a1=0.9;

        System.out.println(a-a1);

        //面试题
        double result=(1.4-0.5)/0.9;
        System.out.println(result);//结果等于0.9999

        //BigDecimal精确的浮点数计算
        BigDecimal a2 = new BigDecimal("1.0");
        BigDecimal a3 = new BigDecimal("0.9");
        BigDecimal a4 = a2.subtract(a3);//加法
        BigDecimal a5 = a2.add(a3);//减法
        BigDecimal a6 = a2.multiply(a3);//乘法

        BigDecimal a7 = new BigDecimal("10")//除法
                .subtract(new BigDecimal("0.5"))
                .divide(new BigDecimal(0.9));
        System.out.println(a7);
        System.out.println("========================================");
     /* BigDecimal a8 = new BigDecimal("10").divide(new BigDecimal("3"),1,BigDecimal.ROUND_DOWN);
       //除不尽的时候保留两位小数四舍五入
        System.out.println(a8);
*/
    }
}

7.2DecimalFormat除法的保留数位

详情参考:

package neibulei;

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class Demo13 {
    public static void main(String[] args) {
        
        DecimalFormat b1 = new DecimalFormat("0.00");
        float b2=10;
        float b3=3;

        System.out.println(b1.format(b2/b3));

        DecimalFormat df1 = new DecimalFormat("0.0");

        DecimalFormat df2 = new DecimalFormat("#.#");

        DecimalFormat df3 = new DecimalFormat("000.000");

        DecimalFormat df4 = new DecimalFormat("#.###");//最特殊,前面的#代表小数点之前的全部暴露i,后面的#几个就表示保留几位小数

        DecimalFormat df5 = new DecimalFormat(",###");//每隔三位数字用逗号分割开来

        System.out.println(df1.format(12.34));

        System.out.println(df2.format(12.34));

        System.out.println(df3.format(12.34));

        System.out.println(df4.format(1234.5678));

        System.out.println(df5.format(12345678));

    }
}

DecimalFormat详解——仅供参考,不是原创,表示是转载,作为交流学习使用

8Date类

package neibulei;

import java.util.Date;//需要导入才有date的操作

public class Demo14 {

    public static void main(String[] args) {

        Date date = new Date();
        System.out.println(date.toLocaleString());//获取本地化时间,输出结果:2022年1月8日 下午3:48:53
        Date date2 = new Date(date.getTime()-(60*60*24*1000));

        System.out.println(date2);//中国标准时间,输出结果:Fri Jan 07 15:48:53 CST 2022
        System.out.println(date2.toString());//输出结果一样,Fri Jan 07 15:48:53 CST 2022
        boolean date3=date.after(date2);
        System.out.println(date3);
        boolean date4=date.before(date2);
        System.out.println(date4);
        int d=date2.compareTo(date);
        System.out.println(d);
        int d1=date.compareTo(date2);
        System.out.println(d1);
        boolean d2=date.equals(date2);
        System.out.println(d2);
    }
}

9Calendar

package neibulei;

import java.time.Year;
import java.util.Calendar;
public class Demo15 {
    public static void main(String[] args) {
        //创建Calendar对象
/*
        实例化Calendar对象,获取instance例子,这一句很重要
        因为Calendar是接口,不能被实例化,所以通过是实例化calendar,获取Calendar内部的instance例子
        的属性,亦或者说是方法,使得calendar具有获取时间getTime的方法和setTime的等等方法   
*/
        Calendar calendar=Calendar.getInstance();
        System.out.println(calendar.getTime().toLocaleString());//调用calendar方法获取对象
        System.out.println(calendar.getTimeInMillis());//获取毫秒之内的时间
        //2.获取时间信息
        //获取年、月、日
        
        System.out.println("==================");
        System.out.println(Calendar.getInstance().getTime().toLocaleString());

        int year=calendar.get(Calendar.YEAR);//年
        int month=calendar.get(Calendar.MONTH);//月,因为设定的原因,系统里面的要小一个月,所以输出的时候需要加1,
        int day=calendar.get(Calendar.DAY_OF_MONTH);//日期
        int hour=calendar.get(Calendar.HOUR);//12小时
        int hour1=calendar.get(Calendar.HOUR_OF_DAY);//24小时
        int minute=calendar.get(Calendar.MINUTE);//24小时
        int second=calendar.get(Calendar.SECOND);//24小时

        System.out.println(year+" "+(month+1)+" "+day+" "+hour1+" "+minute+" "+second);

        //设定时间
        Calendar calendar2=Calendar.getInstance();//实例化Calendar对象,获取
        //因为设定月份只有十一个月的原因,系统里面的要小一个月,设置的时候要小一个月
        calendar2.set(1998,8,15,20,00,00);//用calendar方法设置时间
        System.out.println(calendar2.getTime().toLocaleString());//输出前面一行设置的时间


        //增加时间(增加负时间)
        calendar2.add(Calendar.MONTH,1);//calendar2的月份月份加1
        calendar2.add(Calendar.MONTH,-1);//calendar2的月份月份减1

        //补充方法
        int a=calendar2.getActualMaximum(Calendar.MONTH);//获取 月份 中的最大值
        int a1=calendar2.getActualMinimum(Calendar.MONTH);//获取 月份 中的最小值
        System.out.println(a);
        System.out.println(a1);
    }
}

10SimpleDateFormat(简单的时间格式)

package neibulei;

import java.util.Date;//记得导入两个操作的包
import java.text.SimpleDateFormat;


public class Demo16 {
    public static void main(String[] args) throws Exception{
        //创建SimpleDateFormat对象 y年M月
        //简单的时间格式的获取
        //SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        Date date = new Date();
        String a=sdf.format(date);
        System.out.println(a);

        //简单的时间格式设置,把日期转换成字符串
        /*与calendar.set方法的效果是一样的,具体如下↓↓↓↓↓↓↓↓↓↓!
        Calendar calendar2=Calendar.getInstance();//实例化Calendar对象,获取
        //因为设定月份只有十一个月的原因,系统里面的要小一个月,设置的时候要小一个月
        calendar2.set(1998,8,15,20,00,00);

        //用calendar方法设置时间*/
        Date date1 =sdf.parse("1990/03/04");//严格按照yy/MM/dd格式转换,这里因为会有异常,所以主方法要抛出异常
        System.out.println(date1);


    }
}

11System系统方法

在这里插入图片描述

System各种方法

package neibulei;

public class Demo17 {
    public static void main(String[] args) {
        //数组复制:arraycopy:
        /*解释————————
        arraycopy:数组的复制
        src:源数组
        srcPos:从哪个位置开始复制0
        dest:目标数组
        destPos:目标数组的位置
        length:复制的长度
        * */
        //System.arraycopy(src,srcPos,dest,destPos,length);

        int[] arr={20,18,15,8,35,26,45,90};
        int[] dest=new int[8];
        System.arraycopy(arr,0,dest,0,dest.length);
       /* System.arraycopy(arr,4,dest,4,4);*
       表示从arr的第5位开始复制,复制在dest的第5位中开始粘贴,长度为4个数字
       可以将前面的那个注释掉进行输出结果的尝试
        */
        for (int i = 0; i < dest.length; i++) {
            System.out.println(dest[i]);
        }


        //计时
        System.out.println(System.currentTimeMillis());

        long start=System.currentTimeMillis();
        for (int i =-99999999; i < 999999999; i++) {
            for (int i1 =-999999; i1 < 999999999; i1++) {
                int result=i+i1;
            }
        }
        //获取毫秒数
        long end=System.currentTimeMillis();
        System.out.println("用时"+(end-start));

        //回收垃圾
        new Demo18("aaa",19);
        new Demo18("bbb",18);
        new Demo18("ccc",17);

        System.gc();//告诉系统进行回收
        //推出jvm
        System.out.println("程序还没结束");
        System.exit(1);
        System.out.println("程序结束了");
    }
}

System.gc();类

表示finalize出了问题,所以运行结果有错误,看的时候需要注意,现在这个问题暂时还没解决,继续学习中~

@Override
    protected void finalize() throws Throwable {
        System.out.println("回收了"+name+" "+" "+age);
    }
package neibulei;

public class Demo18 {
    private String name;
    private int age;

    public Demo18(String name, int age) {
        /*return name;
        return age; */
        this.age = age;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Demo18{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    protected void finalize() throws Throwable {
        System.out.println("回收了"+name+" "+" "+age);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值