Java常用类初学总结

常用类

1、Object类

  • 超类、基类、所有类的直接或间接父类,位于继承树的最顶层
  • 任何类,如没有书写extends显示继承某个类,都默认直接继承Object类
  • Object类中所定义的方法,是所有对象都具备的方法
  • Object类型可以存储任何对象
    1. 作为参数,可以接受任何对象
    2. 作为返回值,可以返回任何对象。

1.1、getClass方法

  • public final Class<?> getClass(){}
  • 返回引用中存储的实际对象类型
  • 应用:通常用于判断两个引用中实际存储对象类型是否一致。

1.2、hashCode()方法

  • public int hashCode(){}
  • 返回该对象的哈希码值
  • 哈希值根据***对象的地址***或***字符串***或***数字***使用***hash算法***计算出来的***int 类型的数值***。
  • 一般情况下相同对象返回相同哈希码。

1.3、toString()方法

  • public String toString(){}
  • 返回该对象的字符串表示(表现形式)
  • 可以根据程序需求覆盖该方法,如:展示对象各个属性值

1.4、equals()方法

  • public boolean equals(Object obj){}
  • 默认实现为(this ==obj),比较两个对象地址是否相同
  • 可进行覆盖,比较两个对象的内容是否相同。

equals()方法覆盖步骤

  1. 比较两个引用是否指向同一个对象。
  2. 判断obj 是否为null;
  3. 判断两个引用指向的实际对象类型是否一致
  4. 强制类型转换
  5. 依次比较各个属性值是否相同

1.5、finalize()方法

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

1.6、示例代码

package com.zhang.object1;

/**
 * @ClassName Student
 * @Description TODO 测试getClass方法
 * @Author Administrator
 * @Date 2021/2/1 18:28
 * @Version 1.0
 **/
public class Student {
    private String name = "aaa";
    private  int age = 18;

    public Student() {
    }

    public Student(String name, int age) {
        super();
        this.name = name;
        this.age = 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;
    }

    //快捷键 Alt + Insert
    @Override
    public String toString() {
        return "GetClass{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
//      1. 比较两个引用是否指向同一个对象。
        if(this ==o){
            return true;

        }
//2. 判断obj 是否为null;
        if(o==null){
            return false;
        }

//3. 判断两个引用指向的实际对象类型是否一致

        //instanceof 判断对象是否是某种类型
        if (o instanceof Student){
//4. 强制类型转换
            Student g =(Student)o;
            //5. 依次比较各个属性值是否相同
            if (this.name.equals(g.getName())&&this.age==g.getAge()){
                return true;
            }

        }

return true;
    }

    @Override
    protected void finalize() throws Throwable {
        System.out.println(this.name+ "对象被回收了");
    }
}
package com.zhang.object1;

/**
 * @ClassName TestStudent
 * @Description TODO 测试Object类的常用方法
 * @Author Administrator
 * @Date 2021/2/1 18:34
 * @Version 1.0
 **/
public class TestStudent {
    public static void main(String[] args) {
        Student g1 = new Student("aaa",18);
        Student g2 = new Student("bbb", 20);


//        1、测试getClass()
        System.out.println("################### 1、测试getClass()###################");

        //判断g1和g2是不是同一个类型
        Class class1 = g1.getClass();
        Class class2 = g2.getClass();  //Class这个类在反射那块再深入学习
        if (class1==class2) {
            System.out.println("class1和class2是同一种类型");
        } else {
            System.out.println("class1和class2不是同一种类型");
        }



//        2、测试hashCode()
        System.out.println("###################  2、测试hashCode()###################");

        System.out.println(g1.hashCode()); //哈希值为460141958
        System.out.println(g2.hashCode());//哈希值为 1163157884
        Student g3 = g1;
        System.out.println(g3.hashCode());//哈希值为460141958




//        3、测试toString()
        System.out.println("###################   3、测试toString()###################");

        System.out.println(g1.toString()); // 16进制值 1b6d3586 转成 10进制值  为 460141958
        System.out.println(g2.toString());

//        4、测试equals():判断两个对象是否相同
        System.out.println("###################    4、测试equals()###################");
Student g4 =new Student("xiaozhang",1);
Student g5 =new Student("xiaozhang",1);
        System.out.println(g4.equals(g5));
    }

    //        5、测试finalize()方法



}
package com.zhang.object1;

/**
 * @ClassName TestStudent2
 * @Description TODO 测试垃圾回收
 * @Author Administrator
 * @Date 2021/2/2 7:09
 * @Version 1.0
 **/
public class TestStudent2 {
    public static void main(String[] args) {
//        Student s1 =new Student("aa",20);
//        Student s2 =new Student("bb",20);
//        Student s3 =new Student("cc",20);
//        Student s4 =new Student("dd",20);
//        Student s5 =new Student("ee",20);

//        没有有效引用时,被判定为垃圾对象
       new Student("aa",20);
       new Student("bb",20);
       new Student("cc",20);
new Student("dd",20);
new Student("ee",20);

System.gc();
        System.out.println("回收垃圾");

    }
}

2、包装类

2.1、什么是包装类

  • 基本数据类型所对应的引用数据类型。
  • Object可统一所有数据,包装类的默认值时null。

2.2、包装类对应

基本数据类型包装类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

2.3、类型转换与装箱、拆箱

  • 8种包装类提供不同类型间的转换方式
    1. Number父类中提供的6个共性方法。
    2. parseXXX()静态方法。
    3. valueOf()静态方法。
  • 注意:需保证类型兼容,否则抛出NumberFormatException异常。
  • 示例代码
package com.zhang.baozhuang2;

import javax.sound.midi.Soundbank;

/**
 * @ClassName Demo01
 * @Description TODO
 * @Author Administrator
 * @Date 2021/2/2 8:47
 * @Version 1.0
 **/
public class Demo01 {
    public static void main(String[] args) {
        System.out.println("#################装箱###################");
        //类型转换:装箱,基本类型转成引用类型的过程
        //基本类型
        int num1 =18;

//        使用Integer类创建对象
        Integer i1 = new Integer(num1);
        Integer i2 = new Integer(num1);
        System.out.println(i1);
        System.out.println(i2);



        System.out.println("#################拆箱###################");
        //类型转型:拆箱,引用类型转成基本类型
        Integer i3 = new Integer(123);
        int num2 = i3.intValue();
        System.out.println(i1);
        System.out.println(num2);


        System.out.println("#################自动装箱和拆箱###################");
//      JDK1.5之后,提供自动装箱和拆箱
int age =30;
//自动装箱
        Integer i5 = age;//实际是  Integer i5 = new Integer(age);
        //自动拆箱
        int age2 = i5;
        System.out.println(i5);
        System.out.println(age2);



        System.out.println("#################基本类型和字符串之间转换###################");
        //基本类型和字符串之间转换
        System.out.println("################# 1 基本类型转成字符串###################");
//        1 基本类型转成字符串
        int n1 =15;
//        1.1使用+号
        String s1 = n1 +"";
//        1.2使用Integer中的toString()方法
        String s2 = Integer.toString(n1,16); //改成16进制
        System.out.println(s1);
        System.out.println(s2);


        System.out.println("#################2字串转成基本类型###################");
//        2字串转成基本类型
            String str = "123";
//            使用Integer.parseXXX();
        int n2 =Integer.parseInt(str);
        System.out.println(n2);

//        boolean字符串形式转成基本类型,"true"--->true, 非"true"----->false
        String str2 = "true";
        boolean b1 = Boolean.parseBoolean(str2);
        String str3 = "非true";
        boolean b2 = Boolean.parseBoolean(str3);
    }
}

2.4、整数缓冲区(面试题)

  • Java预先创建了 256 ***[-128,127]***个常用的整数包装类型对象
  • 在实际应用当中,对已创建的对象进行复用。
package com.zhang.baozhuang2;

/**
 * @ClassName Demo02
 * @Description TODO
 * @Author Administrator
 * @Date 2021/2/2 18:37
 * @Version 1.0
 **/
public class Demo02 {
    public static void main(String[] args) {
        //面试题
        Integer integer1 = new Integer(100);
        Integer integer2 = new Integer(100);
        System.out.println(integer1==integer2);//false

//        Integer integer3 = 100;//自动装箱
        Integer integer3 = Integer.valueOf(100);
//        Integer integer4 = 100;
        Integer integer4 = Integer.valueOf(100);
        System.out.println(integer3==integer4);//true

//        Integer integer5 =128; //自动装箱   IntegerCache[-128,127]
        Integer integer5 =Integer.valueOf(128);
//        Integer integer6= 128;
        Integer integer6= Integer.valueOf(128);
        System.out.println(integer6==integer5);//false


    }
}

3、String类

3.1、String类的特点

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

  • 字符串字面值存储在字符串池中,可以共享。

  • String s =“Hello”;产生一个对象,字符串池中存储

  • String s =new String(“Hello”);//产生两个对象,堆、池各存储一个。

在这里插入图片描述

  • 示例代码
package com.zhang.string;

import java.util.Arrays;

/**
 * @ClassName Demo01
 * @Description TODO 测试常用类方法
 * @Author Administrator
 * @Date 2021/2/2 19:22
 * @Version 1.0
 **/
public class Demo01 {
    public static void main(String[] args) {
        String name = "hello";//"hello"常量存储在字符串中,
        name ="zhangsan";//"zhangsan"赋值给name变量,给字符串赋值时,并没修改数据"hello",而是重新在方法区开辟占用一个新的内存"zhangsan"
        String name2 ="zhangsan";

        //演示字符串的另一种创建方式, new String();
        String str = new String("java");
        String str1 = new String("java");
        System.out.println(str==str1);
        System.out.println(str.equals(str1));

        //测试String类常用方法
        System.out.println("`~~~~~~~~~~~~~~~~~字符串方法的使用1~~~~~~~~~~~~~~~~~~~~~~");
        //- public int length():返回字符串的长度
        //- public char charAt(int index): 根据下标获取字符。
        //- public boolean contains(String str):判断当前字符串中是否包含str。

        String content ="Java是世界上最好的编程语言,Java非常易学,Java真香";
        System.out.println(content.length());
        System.out.println(content.charAt(content.length()-1));
        System.out.println(content.contains("Java"));
        System.out.println(content.contains("php"));

        System.out.println("`~~~~~~~~~~~~~~~~~字符串方法的使用2~~~~~~~~~~~~~~~~~~~~~~");
//- public char[] toCharArray():将字符串转换成数组。
//- public int indexOf(String str):查找str首次出现的下标,存在则返回该下标;不存在,则返回-1。
//- public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。
        System.out.println(Arrays.toString(content.toCharArray()));
        System.out.println(content.indexOf("Java"));
        System.out.println(content.indexOf("Java",5));
        System.out.println(content.lastIndexOf("Java"));

        System.out.println("`~~~~~~~~~~~~~~~~~字符串方法的使用3~~~~~~~~~~~~~~~~~~~~~~");
//- public String trim():去掉字符串前后的空格。
//- public String toUpperCase(): 将小写转成大写。
//- public boolean endWith(String str):判断字符串是否以str结尾。
        String content2 ="   Hwllo world       ";
        System.out.println(content2.trim());
        System.out.println(content2.toLowerCase());
        System.out.println(content2.toLowerCase());

        String filename ="hello,java";
        System.out.println(filename.startsWith("he"));
        System.out.println(filename.endsWith("va"));


        System.out.println("`~~~~~~~~~~~~~~~~~字符串方法的使用4~~~~~~~~~~~~~~~~~~~~~~");
//- public String replace(char oldChar, char newChar):将旧字符串替换成新字符
//- public String[] split(String str):根据str做拆分。
        System.out.println(content2.replace("Java","php"));

        String say="java is the best  programing language,java xiang";
        String[] arr= say.split("[ ,]+");
        System.out.println(arr.length);
        for (String s:arr
             ) {
            System.out.println(s);

        }

        //补充两个方法equals()、compare();比较大小
        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";
        String s4 ="xyz";
        System.out.println(s3.compareTo(s4)); //对应编码表:a为97,x为120   -23  如果第一个字母相同,则比较第二个

        String s6 ="abc";
        String s5 ="abc";
        System.out.println(s5.compareTo(s6)); //0

        String s7 ="ABC";
        System.out.println(s6.compareToIgnoreCase(s7));//忽略大小写比较,大小写不同,对应编码值不同
        System.out.println(s6.compareTo(s7));





    }
}

3.2、常用方法

  • public int length():返回字符串的长度

  • public char charAt(int index): 根据下标获取字符。

  • public boolean contains(String str):判断当前字符串中是否包含str。

  • public char[] toCharArray():将字符串转换成数组。

  • public int indexOf(String str):查找str首次出现的下标,存在则返回该下标;不存在,则返回-1。

  • public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。

  • public String trim():去掉字符串前后的空格。

  • public String toUpperCase(): 将小写转成大写。

  • public String toLowerCase(): 将大写转成小写。

  • public boolean startWith(String str):判断字符串是否以str开始。

  • public boolean endWith(String str):判断字符串是否以str结尾。

  • public String replace(char oldChar, char newChar):将旧字符串替换成新字符

  • public String[] split(String str):根据str做拆分。

补充:补充两个方法equals()、compareTo();比较大小

3.3 练习

package com.zhang.string;

/**
 * @ClassName Demo
 * @Description TODO
 * @Author Administrator
 * @Date 2021/2/3 13:49
 * @Version 1.0
 **/
public class Demo {
    /*
    已知String str = "this is a text";
    1.将str中的单词单独获取出来
    2.将str中的text替换为practice
    3.在text前面插入一个easy
    4.将每个单词的首字母改为大写
     */
    public static void main(String[] args) {
        System.out.println("~~~~~~~~~~~~~~~~~~~~~1.将str中的单词单独获取出来~~~~~~~~~~~~~~~~~~~~~");
        String str = "this is a text";
        String[] str1 = str.split(" ");
        for (String str2 :str1
             ) {
            System.out.println(str2);

        }

        System.out.println("\"~~~~~~~~~~~~~~~~~~~~~2.将str中的text替换为practice~~~~~~~~~~~~~~~~~~~~~\"");
        System.out.println(str.replace("text","pracrice"));

        System.out.println("\"~~~~~~~~~~~~~~~~~~~~~  3.在text前面插入一个easy~~~~~~~~~~~~~~~~~~~~~\"");
        System.out.println(str.replace("text","easy text"));

        System.out.println("\"~~~~~~~~~~~~~~~~~~~~~  4.将每个单词的首字母改为大写~~~~~~~~~~~~~~~~~~~~~\"");

        for (int i = 0; i <str1.length ; i++) {
          char first=  str1[i].charAt(0);
          char upperfirst = Character.toUpperCase(first);

          String newer = upperfirst +str1[i].substring(1);
            System.out.print(newer+" ");
        }


    }
}

3.4可变字符串 StringBuffer和StringBuilder

  • StringBuffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全 单线程的使用
  • StringBilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全
  • 示例代码
package com.zhang.string;

/**
 * @ClassName Demo02
 * @Description TODO StringBuffer 和StringBuilder的使用
 * 与String的区别
 * (1)效率比String高;(2)比String节省内存
 * @Author Administrator
 * @Date 2021/2/3 15:13
 * @Version 1.0
 **/
public class Demo02 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
//        1、 append();追加
        sb.append("java世界第一");
        System.out.println(sb.toString());
        sb.append("java世界第一");
        System.out.println(sb.toString());
        sb.append("java世界第一");
        System.out.println(sb.toString());

//        2、insert();添加
        sb.insert(0,"我在最前面");
        System.out.println(sb.toString());


//        3、 replace();替换
        sb.replace(0,5,"hello");
        System.out.println(sb.toString());

//        4、delete();删除
        sb.delete(0,5);
        System.out.println(sb.toString());
//      清空
sb.delete(0,sb.length());
        System.out.println(sb.toString());

    }
}
package com.zhang.string;

/**
 * @ClassName Demo03
 * @Description TODO 验证String 、StringBuilder、StringBUffer
 * @Author Administrator
 * @Date 2021/2/3 15:29
 * @Version 1.0
 **/
public class Demo03 {
    public static void main(String[] args) {
        long  start = System.currentTimeMillis();//开始是时间
/*
 String str ="";
        for (int i = 0; i <99999 ; i++) {
            str+=i;
        }
        用时:29384
 */

//       StringBuilder sb = new StringBuilder(); 用时:50
      StringBuffer sb =new StringBuffer();//用时:62
        for (int i = 0; i <99999 ; i++) {
       sb.append(i);
        }
        System.out.println(sb);
        long  end = System.currentTimeMillis();//结束时间
        System.out.println("用时:"+(end-start));

//        用时:1

    }
}

4、BigDecimal

  • 位置:java.math包中。

  • 作用:精确计算浮点数。

  • 创建方式: BigDecimal bd =new BigDecimal(“1.0”);

  • 方法:

    • BigDecimal add(BigDecimal bd) 加

    • BigDecimal subtract (BIgDecimal bd) 减

    • BigDecimal multiply(BigDecimal bd) 乘

    • BigDecimal divide(BigDecimal bd,int scal,RoundingMode mode) 除

    • 参数scal:指定精确到小数点后几位

    • 参数mode:

      1、指定小数部分的取舍模式,通常采用四舍五入的模式

      2、取值为BigDecimal.ROUND_HALF_UP。

package com.zhang.bigdecimal;

import java.math.BigDecimal;

/**
 * @ClassName Demo01
 * @Description TODO
 * @Author Administrator
 * @Date 2021/2/3 15:59
 * @Version 1.0
 **/
public class Demo01 {
    public static void main(String[] args) {
        double d1 =1.0;
        double d2 = 0.9;
        System.out.println(d1-d2);

//        面试题
        double result =(1.4-0.5)/0.9;
        System.out.println(result);

//        BigDecimal,大的浮点数精确计算
        BigDecimal bd1 = new BigDecimal("1.0");
        BigDecimal bd2 = new BigDecimal("0.9");

//        减法
        BigDecimal r1 = bd1.subtract(bd2);
        System.out.println(r1);

//        加法
        BigDecimal r2 = bd1.add(bd2);
        System.out.println(r2);


//        乘法
BigDecimal r3 = bd1.multiply(bd2);
        System.out.println(r3);

//        除法
        BigDecimal r4 = new BigDecimal("1.4")
                .subtract(new BigDecimal("0.5"))
                .divide(new BigDecimal("0.9"));
        System.out.println(r4);

        new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);

    }

}

5、Date类

  • Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。

  • 时间单位

    • 1秒 = 1000毫秒
  • 1毫秒= 1000微秒

    • 1微秒= 1000纳秒
  • 示例代码

package com.zhang.date;

import java.util.Date;

/**
 * @ClassName Demo01
 * @Description TODO 测试Date类
 * @Author Administrator
 * @Date 2021/2/4 16:02
 * @Version 1.0
 **/
public class Demo01
{
    public static void main(String[] args) {
//        1、创建Date对象
//        今天
        Date date1 = new Date();
        System.out.println(date1.toString());
        System.out.println(date1.toLocaleString());
//        昨天
        Date date2 = new Date(date1.getTime()-(60*60*24*1000));
        System.out.println(date2.toLocaleString());

//        2、方法 after before
        boolean b1 = date1.after(date2);
        System.out.println(b1);

        boolean b2 = date1.before(date2);
        System.out.println(b2);

//        比较 compareTo();
        date1.compareTo(date2);
    }
}

6、Calendar类

  • Calendar提供了获取或设置各种日历字段的方法
  • 构造方法
    • protected Calendar():由于修饰符是protected,所以无法直接创建该对象。
  • 其他方法
方法名说明
static Calendar getInstance()使用默认时区和区域获取日历
void set (int year,int month, int date,int hourofday,int minute ,int second)设置日历的年、月、日、时、分、秒
int get(int feld)返回给定日历字段的值。字段比如年、月、日等
void setTime(Date date)用给定的Date设置此日历的时间。Date-Calendar
Date getTime()返回一个Date表示此日历的时间。Calendar-Date
void add(int field, int amount)按照日历的规则,给指定字段添加或减少时间量
long getTimeInMillies()毫秒为单位返回该日历的时间值
  • 示例代码
package com.zhang.calendar;

import javax.xml.transform.Source;
import java.util.Calendar;

/**
 * @ClassName Demo01
 * @Description TODO 测试Calendar类的方法
 * @Author Administrator
 * @Date 2021/2/5 14:30
 * @Version 1.0
 **/
public class Demo01 {
    public static void main(String[] args) {
//        1 创建Calendar对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);
        System.out.println(calendar.getTime().toLocaleString());
        System.out.println(calendar.getTimeInMillis());

//        2 获取时间信息
//        获取年
        int year = calendar.get(Calendar.YEAR);
//        月
        int month = calendar.get(Calendar.MONTH);
//       日
        int day =calendar.get(Calendar.DAY_OF_MONTH);//Date
//        小时
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
//        分钟
        int minute =calendar.get(Calendar.MINUTE);
//        秒
        int second =calendar.get(Calendar.SECOND);
        System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+":"+minute+":"+second);

// 3 修改时间
Calendar calendar2 =Calendar.getInstance();
calendar2.set(Calendar.DAY_OF_MONTH,7);
        System.out.println(calendar2.getTime().toString());

//        4 add 方法修改时间
        calendar2.add(Calendar.HOUR,-1);
        System.out.println(calendar2.getTime().toString());

//        5 补充方法
        calendar2.add(Calendar.MONTH,2);
        int max =calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);
        int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);
        System.out.println(max);
        System.out.println(min);



    }
}

7、SimpleDateFormat

  • SimpleDateFormat是一个以与语言环境有关的方式 来格式化和解析日期的具体类。

  • 进行格式化(日期->文本)

  • 解析(文本->日期)

  • 常用的时间模式字母

    字母日期或时间示例
    y2019
    M年中月份08
    d月中天数10
    H1天中小时数(0-23)22
    m分钟16
    s59
    S毫秒367
    • 示例代码
package com.zhang.simpledateformat;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @ClassName demo01
 * @Description TODO
 * @Author Administrator
 * @Date 2021/2/5 16:20
 * @Version 1.0
 **/
public class demo01 {
    public static void main(String[] args) throws ParseException {
//        1 创建SimpleDateFormat对象 y年M月
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH-mm-ss");

//        2 创建Date
        Date date =new Date();

//        格式化date(把日期转成字符串)
        String str = sdf.format(date);
        System.out.println(str);

//        解析(把字符串转成日期)
        Date date2 = sdf.parse("1970/01/01");
        System.out.println(date2);
    }
}

8、System类

  • System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有。

    方法名说明
    static void arrraycopy()复制数组
    static long currentTimeMillis();获取当前系统时间,返回的时毫秒值
    static void gc()建议JVM赶快启动垃圾回收器回收垃圾
    static void exit(int status);退出JVM,如果参数是0表示正常退出JVM,非0表示异常退出JVM
  • 示例代码

package com.zhang.system;

import java.util.Arrays;

/**
 * @ClassName Demo01
 * @Description TODO 测试System类的方法
 * @Author Administrator
 * @Date 2021/2/5 18:01
 * @Version 1.0
 **/
public class Demo01 {
    public static void main(String[] args) {
//       1 arraycopy:数组的复制
//        src:源数组
//        srcPos:从那个位置开始复制0
//        dest:目标数组
//        destPos:目标数组的位置
//        length:复制的长度
        int [] arr = {20,18,15,8,35,26,45,90};
        int [] dest = new int[8];
        System.arraycopy(arr,4,dest,4,4);
        for (int i = 0; i < dest.length; i++) {
            System.out.println(dest[i]);

        }

//        Arrays.copyOf(origianl,newLength);

//        2 获取毫秒数
        int r=0;
        long start = System.currentTimeMillis();
        for (int i = 0; i <99999999 ; i++) {
            for (int j = 0; j <99999999 ; j++) {
                r = i + j;
            }
        }
        System.out.println(r);

        long end = System.currentTimeMillis();
        System.out.println("用时:"+(end-start));

// 3  回收垃圾
        new Student("qqq",12);
        new Student("www",13);

        new Student("eee",14);

        System.gc();
//4 退出jvm

        System.exit(0);
        System.out.println("程序结束");

    }
}
package com.zhang.system;

/**
 * @ClassName Student
 * @Description TODO
 * @Author Administrator
 * @Date 2021/2/6 2:03
 * @Version 1.0
 **/
public class Student {
   private String name;
    private  int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = 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;
    }

    @Override
    protected void finalize() throws Throwable {
        System.out.println("回收了"+name+" + "+age);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值