• Java学习随笔---常用API(二)


    Object类的toString方法

    将一个对象返回为字符串形式,但一般使用的时候会覆盖重写toString方法
    Object类是所有类的父亲

    //
    public class Person {
        private String name;
        private int age;
    //=============================================================================
        public String toString(){//toString方法被覆盖重写,返回了一个固定格式的内容。
           return  "我的名字是"+this.name+"今年我"+this.age+"岁了";
        }
    //=============================================================================
        public Person() {
        }
    
        public Person(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;
        }
    }
    
    
    public class personMain {
    
        public static void main(String[] args) {
            Person person = new Person();
            person.setAge(18);
            person.setName("迪丽热巴");
            System.out.println(person.toString());
        }
    }
    

    Object类中的equals方法

    equals方法默认比较的是对象的地址值,经常需要重写equals方法

    重写equals方法

    //person类
    public class Person {
        private String name;
        private int age;
    
        public boolean equals(Object obj){
            //传递参数如果是this本身,为了提高效率,直接返回true
            if (obj == this) {
                return true;
            }
            //传递参数如果是null,为了提高效率,直接返回false;
            if (obj == null)
                return false;
       //==========================================================//主要部分
            //向下转型,因为这是一个隐含的多态,多态无法访问子类特有内容
            //Object obj = p2 = new Person("迪丽热巴", 19);
            Person p = (Person) obj;
            //this表示传过去的第一个,p表示传过去的第二个
            boolean b = this.name.equals(p.name)&&this.age==p.age;
            return b;
      //============================================================
        }
        //也可以通过自动实现
       /* @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Person person = (Person) o;
            return age == person.age &&
                    Objects.equals(name, person.name);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(name, age);
        }*/
    
        public Person() {
        }
    
        public Person(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;
        }
    }
    
    
    //主类
    public class equalsMain {
    
        public static void main(String[] args) {
            Person person1 = new Person();
            Person person2 = new Person();
    
            person1.setName("江疏影");
            person1.setAge(18);
            person2.setName("江疏影");
            person2.setAge(18);
    
            System.out.println(person1.equals(person2));
        }
    }
    

    object类中的equals和objects类中的equals的区别,objects类中的equals可以防止空指针异常。


    Date类

    打印当前系统时间

    public class Data {
        public static void main(String[] args) {
            Date date = new Date();
    
            System.out.println(date);
        }
    }
    

    格式化系统的时间格式

    y--->年
    M--->月
    d--->日
    H--->时
    m--->分
    s--->秒

    public class dateformate {
    
        public static void main(String[] args) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//写出固定格式的构造方法
            Date date = new Date();//创建一个时间
            System.out.println(date);
            String str = sdf.format(date);//调用format
            System.out.println(str);
    
        }
    }
    

    按照固定格式将文本解析为日期

    public class dateformat2 {
    
        public static void main(String[] args) throws ParseException {//throws是异常抛出,
            SimpleDateFormat stf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//创建固定格式的构造方法
            Date date = stf.parse("2019年07月29日 17时29分03秒");//定义Date类来接收
            System.out.println(date);
        }
    }
    

    得到毫秒值

    public class gettime {
    
        public static void main(String[] args) {
            Date date = new Date();
            long time = date.getTime();
            System.out.println(time);
        }
    }
    

    案例--计算出生天数

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    
    public class birthday {
        public static void main(String[] args) throws ParseException {//异常抛出
            System.out.println("请输入您的生日:格式:yyyy-MM-dd");
            Scanner sc = new Scanner(System.in);
            String birthday = sc.next();//输入日期
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//写固定格式的构造方法
            Date date = sdf.parse(birthday);//将日期转换成Date类型的日期
            long beforeTime = date.getTime();//将出生时间转换为毫秒值
            long nowTime = new Date().getTime();//将当前系统时间转换为毫秒值
            long time = nowTime - beforeTime;
            System.out.println(time/1000/60/60/24);//将毫秒值转换为天
        }
    }
    

    Calendar类

    public class calendarl {
    
        public static void main(String[] args) {
            Calendar c = Calendar.getInstance();//获取日历信息
            System.out.println(c);//将会输出一堆与当前日历有关的信息
        }
    }
    

    Calendar中的get方法
    可以返回给定日历字段的值

    public class calendarget {
    
        public static void main(String[] args) {
            Calendar c = Calendar.getInstance();//获取calendar类的对象
            int year = c.get(Calendar.YEAR);//得到年
            System.out.println(year);
            int month = c.get(Calendar.MONTH);//得到月
            System.out.println(month);
            int date = c.get(Calendar.DATE);//得到日
            System.out.println(date);
        }
    }
    

    Calendar中的set方法
    设置年月日

    public class calendset {
    
        public static void main(String[] args) {
            Calendar c = Calendar.getInstance();
            c.set(Calendar.YEAR,2000);//将年设置为2000年
            c.set(Calendar.MONTH,11);//将月设置为11月
            c.set(2000,03,03);//同时设置年月日
            System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE));
        }
    }
    

    calendar中的add方法
    把指定字段增加或减少指定的值,正数为增加,负数为减少
    public class calendset {

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
    
        c.set(2000,03,03);//同时设置年月日
        c.add(Calendar.YEAR,2);//把年增加两年
        c.add(Calendar.MONTH,-2);//把月减少两个月
        System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE));
    }
    

    }

    calendar中的getTime方法
    将日历转换为日期,即准换为Date格式

    public class calendset {
    
        public static void main(String[] args) {
            Calendar c = Calendar.getInstance();
    
            c.set(2000,03,03);//同时设置年月日
            Date time = c.getTime();//将日历格式转换为日期
            System.out.println(time);
    
        }
    }
    

    System类的常用方法

    System类中的currentTimeMillis方法
    返回以毫秒为单位的当前时间,可以计算程序的运行时间

    public class currenttime {
    
        public static void main(String[] args) {
            long start = System.currentTimeMillis();
            for (int i = 0; i < 9999; i++) {
                System.out.println(i);
            }
            long end = System.currentTimeMillis();
            System.out.println(end-start);
        }
    }
    

    System类中的arraycopy方法

    从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
    static void arraycopy(源数组, 源数组起始位置, 目标数组, 目标数组, 要复制的数组元素的数量。
    )

    public class arraycopyl {
    
        public static void main(String[] args) {
            int[] array1 = {1,2,3,4,5};
            int[] array2 = {6,7,8,9,10};
            System.arraycopy(array1,0,array2,0,3);
            System.out.println(Arrays.toString(array1));
            System.out.println(Arrays.toString(array2));
        }
    }
    

    StringBuilder中常用的方法

    StringBuilder中的append方法
    像此序列中追加一个数据,数据可以是任何类型
    StringBuilder是一个字符缓冲区,可以提高效率

    public class StringBuilderappend {
    
        public static void main(String[] args) {
            StringBuilder s = new StringBuilder();
            s.append(1);
            s.append('a');
            s.append("fadsf");
            s.append(1).append(2).append('i');//也可以这样连续添加数据
            System.out.println(s);
        }
    }
    
    

    StringBuilder和String的互换
    当我们需要对一个字符串进行频繁的删除添加操作的时候,使用stringBuiler的效率比较高。因为String是一个常量,使用一次就多一个字符串类型。

    public class StringandStringBuilder {
    
        public static void main(String[] args) {
            String str = "hello";
            StringBuilder s = new StringBuilder(str);//将String类型转换为StringBuilder类型。
            String str2 = s.toString();//通过toString把StringBuilder类型转换为String类型。
            System.out.println(str2);
        }
    }
    

    装箱-->把基本数据类型包装到包装类中

    可以使用构造方法和静态方法

    public class box {
    
        public static void main(String[] args) {
            Integer a = new Integer(3);//使用构造方法将3装进包装类中,但方法已过时
            Integer b = Integer.valueOf(4);//使用方法将4放入包装类中
        }
    }
    

    拆箱-->在包装类中取出基本类型

    public class box {
    
        public static void main(String[] args) {
            Integer b = Integer.valueOf(4);//使用方法将4放入包装类中
            int a = b.valueOf(b);//将包装类转换成整形
        }
    }
    

    自动装箱与自动拆箱

    自动装箱

    Integer a = 1;
    

    自动拆箱

    a = a+2;//直接运算
    

    基本类型与字符串之间的转换

    基本类型-->字符串类型

    1. +“ ”
    2. 包装类的静态方法toString;
    3. String类的静态方法valueof();

    字符串类型-->基本类型

    1. 使用包装类的静态方法parseXXX;
    public class box {
    
        public static void main(String[] args) {
            int a = 1;
            String str = a+" ";//使用加空字符的方法将基本类型转为字符串类型。
    
            String str2 = Integer.toString(a);//包装类的静态方法toString;
    
            String str3 = String.valueOf(a);//String类的静态方法valueof();
    
            int i = Integer.parseInt(str);//使用包装类的静态方法parseXXX
        }
    }
    
    
  • 相关阅读:
    Java实现 LeetCode 437 路径总和 III(三)
    Java实现 LeetCode 436 寻找右区间
    Java实现 LeetCode 436 寻找右区间
    Java实现 LeetCode 436 寻找右区间
    Java实现 LeetCode 435 无重叠区间
    Java实现 LeetCode 435 无重叠区间
    Makefile第一讲:一个简单的Makefile
    GCC常用参数
    GCC参数详解
    linux .o,.a,.so文件解析
  • 原文地址:https://www.cnblogs.com/Alitac/p/11271256.html
Copyright © 2020-2023  润新知