常用类

2021/4/24 10:55:25

本文主要是介绍常用类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

常用类

clone

clone的对象,类要实现Cloneable ,重新开辟一个相同大小空间,返回一个引用,clone是浅拷贝

要想深拷贝,在重写的clone方法中,把引用数据类型拷贝一次,那个引用数据类型也要添加实现Cloneable

package com.often;

public class ObjectTest implements Cloneable{
    private String name;
    private int age;

    public ObjectTest(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 Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
package com.often;

public class Application {
    public static void main(String[] args) {
        ObjectTest o = new ObjectTest("张三", 18);
        System.out.println(o);
        //引用的复制
        ObjectTest o1 = o;
        System.out.println(o1);
        ObjectTest o2=null;
        try {
            //clone
            o2 = (ObjectTest) o.clone();
            System.out.println(o2);
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        //浅拷贝(对象拷贝了以分,对象里面的对象没有拷贝)
        System.out.println(o.getName());
        System.out.println(o2.getName());
        System.out.println(o.getName()==o2.getName()?"浅拷贝":"深拷贝");
    }
}

image-20210416232618664

toString

public String toString() {
    //类名+@+哈希码组成的16进制数
    //作用,直接打印对象名,调用的就是这个方法
    //可以重写
    return getClass().getName() + "@" + Integer.toHexString(hashCode());

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

getClass

public final native Class<?> getClass();//final 不可重写
//结果是class +包名.类名

equals

public boolean equals(Object obj) {
    return (this == obj);
}
//判断是否指向一个对象,同一块地址
//子类可以重新equals方法来进行某些判断,Sting就有重写,来判断字符串是否完全一样

包装类

java八点基本数据类型,但是他们没有属性和方法,java是面向对象的,设计了数据类型的保证类,来方法使用这些数据类型比如转字符串等

package com.often;

public class PackagingClass {
    public static void main(String[] args) {
        //装箱
        Integer integer = new Integer(100);
        //自动装箱
        Integer integer2=100;
        System.out.println(integer);
        //自动拆箱
        int a=integer;
        System.out.println(a);
        Integer integer1 = new Integer(a);
        //指向对象为堆中不同地址:false
        System.out.println(integer==integer1);
        //重写equals方法,会判断值是否相等
        System.out.println(integer.equals(integer1));
    }
}

image-20210417102950504

与字符串之间相互转换

package com.often;


public class PackagingDemo02 {
    public static void main(String[] args) {
        //字符串转整数
        String[] s = {"123", "123aa", "-123", "+0234"};
        for (String s1 : s) {
            try {
                int i = Integer.parseInt(s1);
                System.out.println(s1 + "可以转换整数" + i);
            } catch (NumberFormatException e) {
                System.out.println(s1 + "不可以转");
            }
        }
        System.out.println("------------------");
        //整数转字符串
        //调用integer的toString
        int m = 200;
        String string = Integer.toString(m);
        System.out.println(string + 100);
        //或者加""
        String s2 =""+m;
    }
}

image-20210417104104800

时间类

Date d=new Date() d.getTime()当前时间到1970年一月一日的毫秒数

当前的时间

SimpleDateFormat 时间格式化,构造函数放想要的时间的格式

Calendar日历类,抽象类,用getInstance实例化,可以修改或获得其中年,月等get() set( add( ) getTime为日期格式

打印一个日历

package com.often.DateClass;

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

public class DateDemo02 {
    public static void main(String[] args) throws ParseException {
        Calendar c = input();
        int i = c.get(Calendar.DAY_OF_MONTH);
        int[] message = getMessage(c);
        printCalendar(c, message, i);
    }

    private static void printCalendar(Calendar c, int[] message, int i) {
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        int num = 0;
        for (int i1 = 0; i1 < message[0] - 1; i1++) {
            num++;
            System.out.print("\t");
        }
        for (int i1 = 1; i1 <= message[1]; i1++) {
            if (i1 == i) {
                System.out.print(i1 + "*" + "\t");
            } else {
                System.out.print(i1 + "\t");
            }
            num++;
            if (num % 7 == 0 && num != 0) {
                System.out.println();
            }
        }

    }

    private static int[] getMessage(Calendar c) {
        c.set(Calendar.DAY_OF_MONTH, 1);
        int DAY_OF_WEEK = c.get(Calendar.DAY_OF_WEEK);
        //西方周日为星期一,月份西方3月为我们四月
        int actualMaximum = c.getActualMaximum(Calendar.DATE);
        int[] message = {DAY_OF_WEEK, actualMaximum};
        return message;
    }

    private static Calendar input() throws ParseException {
        System.out.println("请输入时间如2021/4/17");
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        Date date = sdf.parse(s);
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        scanner.close();
        return c;
    }

}


这篇关于常用类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程