Java高级(一)常用API

目录

Object类

Objects类

Date类

SimpleDateFormat类

 Calendar:日历类(抽象类)

System类

StringBuilder类

字符串拼接问题(String与StringBuilder的对比)

包装类

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


Object类

  Object类 是类层次结构的根(父)类,每个类都默认继承Object.

定义一个学生类:包含属性(name、age)

  • toString方法   

    重写方法之前,默认返回对象的地址 (格式:包名类名@地址值)

public static void main(String[] args) {
        Student student = new Student("张三", 12);
        System.out.println(student);//练习包3.t_2.Student@300ffa5d
    }

 重写方法之后,返回的是对象的属性值

为Student重写toString方法:

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

控制台输出结果:Student{name='张三', age=12}

     注:直接输出对象等同于输出 对象名.toString()

  • equals方法

重写方法之前:比较的是对象的地址值是否相同(与‘==’作用相同)

public static void main(String[] args) {
        Student student = new Student("张三", 12);
        Student student1 = new Student("张三", 12);
        System.out.println(student.equals(student1));//false
        student=student1;
        System.out.println(student.equals(student1));//true
    }

        分析:新建了两个对象,在内存中开辟了两个不同的空间,两个对象的地址值不同,所以第一个输出false; 后面将student1的引用指向student,两个对象的地址相同,所以第二个输出true

重写方法之后:比较的是对象的属性值

为Student重写equals方法:

public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(name, student.name);
    }
public static void main(String[] args) {
        Student student = new Student("张三", 12);
        Student student1 = new Student("张三", 12);
        System.out.println(student.equals(student1));//true
    }

分析:因为重写了equals方法,所以两个对象就按照新的比较规则进行比较了

Objects类

Objects.equals方法 提高了健壮性(防止空指针异常)

Date类

表示日期时间的类,精确到毫秒。时间原点(0毫秒):1970 年 1 月 1 日 00:00:00(英国格林威治); 中国属于东八区,会把时间增加8个小时  1970 年 1 月 1 日 08:00:00

构造方法:无参构造(表示此刻的时间点),有参构造传入毫秒值(long类型)

 public static void main(String[] args) {
        System.out.println(new Date());//Mon Aug 23 22:26:42 CST 2021
        System.out.println(new Date(0L));//Thu Jan 01 08:00:00 CST 1970
    }

SimpleDateFormat类

用于以区域设置敏感的方式格式化和解析日期。 它允许格式化(日期文本),解析(文本日期)和规范化。

继承于DateFormat(日期/时间格式化的抽象类)

构造方法:SimpleDateFormat(String pattern) 使用模式构建一个SimpleDateFormat对象, pattern指模式(时期时间的格式)

注意:模式区分大小写(y-年 M-月 d-日 H-时 m-分 s-秒 )

相关方法

  • String format(Date date)  按照指定的模式,把Date日期,格式化为符合模式的字符串
  • Date parse(String source)  把符合模式的字符串,解析为Date日期
public static void main(String[] args) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String s = format.format(new Date());
        System.out.println(s);//2021-08-23
        Date parse = format.parse(s);
        System.out.println(parse);//Mon Aug 23 00:00:00 CST 2021
    }

 Calendar:日历类(抽象类)

该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。可以对日历进行计算

创建对象的方式:通过静态方法getInstance()来创建日历对象

常用方法:

  • public int get(int field) :返回给定日历字段的值
  • public void set(int field, int value):将给定的日历字段设置为给定值
  • public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量
  • public Date getTime():返回一个Date对象

成员常量:

字段值

含义
YEAR年份
MONTH月份(从0开始)
DATE日期

示例代码:

 public static void main(String[] args) throws ParseException {
        Calendar calendar = Calendar.getInstance();//创建对象
        System.out.println(calendar.get(Calendar.YEAR));//获取年份
        calendar.set(Calendar.YEAR,2345);//修改年份
        System.out.println(calendar.get(Calendar.YEAR));
        calendar.add(Calendar.YEAR,-2);//对年份进行减2
        System.out.println(calendar.get(Calendar.YEAR));
    }

System类

类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作

相关方法:

  • public static long currentTimeMillis():返回当前时间(以毫秒为单位)
  • public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定数据拷贝到另一个数组中

     形参的含义

src源数组
srcPos源数组索引的起始位置
dest目标数组
destPos目标数组索引的起始位置
length复制元素的个数

实例代码:

public static void main(String[] args) throws ParseException {
        long l = System.currentTimeMillis();//获取当前时间
        int[]a={1,2,3,4,5,6,7,8};
        int[]b={9,10,11,12,13,14,15,16};
        System.arraycopy(a,0,b,3,3);//将a的前三个元素 复制到b的第4-6的位置上
        for (int i : b) {
            System.out.println(i);
        }
        long l1 = System.currentTimeMillis();
        System.out.println("程序运行时间:"+(l1-l));
    }

StringBuilder类

        可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

构造方法:

  • public StringBuilder():构造一个空的StringBuilder容器
  • public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去(将String转换成StringBuilder)

常用方法:

  • public StringBuilder append(...):添加任意类型的元素
  • public String toString():将StringBuilder转换为String

示例代码:

public static void main(String[] args) throws ParseException {
        StringBuilder stringBuilder = new StringBuilder("abc");//构建一个 StringBuilder对象
        stringBuilder.append("d").append("e").append("f");//链式添加元素
        String string = stringBuilder.toString();// StringBuilder->String
        System.out.println(string);//abcdef
    }

字符串拼接问题(String与StringBuilder的对比)

 String s="a"+"b"+"c";
 StringBuilder ss=new StringBuilder("a"+"b"+"c");

String是常量,创建后不可以被修改(但是可以修改引用)。String的底层是final byte[] value ,一个字符串就是一个数组。String共产生5给字符串(就是5个数组):“a”,"b","c","ab","abc"

StringBuilder 的底层是byte[]value=new byte[16] (没有final修饰,可以改变其长度),它在内存中始终是一个数组,占用空间小,效率高,超出容量会自动扩容。

包装类

使用一个类将基本类型包装起来,提供了一些对应的方法操作这些数据

基本类型对应的包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
boolearnBoolean

装箱:从基本类型转换为对应的包装类对象。

 Integer integer = new Integer(1);
 Integer integer1 = Integer.valueOf(1);

拆箱:从包装类对象转换为对应的基本类型。

int i = integer1.intValue();

自动装箱、自动拆箱

 Integer integer = new Integer(1);
 integer = integer + 1;//相当于integer=Integer.valueOf(integer.intValue()+1);

       分析: 先进行拆箱,再进行装箱

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

基本数据类型转换成String:两种方法

  • 直接在后面连接""即可
  • String.valueOf()

String转换成基本类型(除char外)

包装类对象的parsexxx方法

示例代码:

int i=1;
String s = 1 + "";//int->string
System.out.println(Integer.parseInt(s));//string->int 输出1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值