Java基础类及其方法

Object的toString方法

  • 我们在打印一个类的时候,默认调用其父类Object的toString方法,输出其字节码对象和哈希码
public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
  • 如果该类重写了其父类的toString方法,则按照其重写的输出
System.out.println(Object);                 
System.out.println(Object.toString());      //这两个语句在子类没有重写toString方法的时候是等效的
  • 本质上来说,是由于System.out是一个PrintStream,其println方法中的定义:
public void println(Object x) {
    String s = String.valueOf(x);
    synchronized (this) {
        print(s);
        newLine();
    }
}
  • 而对应的String类的 valueOf() 方法中:
public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
  • 所以输出时总会调用对象的toString方法

获取字节码对象的方式

  • 通过其父类定义的getClass方法来获取其字节码:
Object o = new Object();
Class c = o.getClass();
  • 通过类名调用属性class来获取:
Class c = Student.class();      //此处Student是一个类
  • 通过Class类的静态方法 forName() 来获取:
Class c = Class.forName("类名");        //需要抛出ClassNotFoundException异常

Object的equals方法

public boolean equals(Object obj) {
    return (this == obj);
}
  • 从Object类中的定义看出, equals 方法默认比较两个引用对象的地址值是否一致
  • 其他类由于是Object类的子类,可以重写其父类的equals方法而设定其本身的“相等”的含义

System类的概述

  • 系统类,由于其构造方法被私有化,故不能创建对象,可以看作一个工具类

System类的arraycopy方法测试

这是一个native方法

public static native void arraycopy(Object src,  int  srcPos,Object dest, int destPos,int length);
//                                   目标数组      复制起点      目标数组      粘贴起点   粘贴个数
  • 调用这个方法后直接对Object dest进行修改

System类的其他方法

  • currentTimeMillis() 方法
    • 获取当前时间的毫秒值,该毫秒值以1970年1月1日0时0分为起点
    • 由于时差,调用时各时区可能会得到不同的结果
  • exit(int status) 方法
    • 其中status表示退出状态,0表示正常退出,非0表示异常退出
      • 应用:异常码

Date类的概述和构造

  • 快要过时的一个类,用于表示时间
  • 时间的起点为1970年1月1日0时0分,通常为毫秒值

Date类的常用方法

  • 构造方法
    Date d = new Date();    //此时d引用所指向的对象是代表d被创建时的系统时间,仍然是long类型的毫秒值,以1970年1月1日0时0分为起点
    
    Date d1 = new Date(long time);  //此时d引用所指向的对象仍然代表一个时间,为以1970年1月1日0时0分为起点之后time毫秒的时间点
    
  • getTime() 方法
Date d = new Date();
long time = d.getTime();    //返回一个long类型的值,为Date对象所代表的时间
  • setTime() 方法
Date d = new Date();
d.setTime(long time);   //该方法无返回值,需提供一个long类型的参数,将Date对象所代表的时间设置为该值

SimpleDateFormat的概述

  • 抽象类DateFormat的子类

Calendar的概述和测试

  • 用于替换过时类Date
  • Calender是抽象类,无法创建对象
Calender c = Calender.getInstence();   //根据时区创建一个Calendar的子类对象,用Calendar的引用接收(多态)

Calendar类的常用方法

  • get(Calender.YEAR) 方法
    • 返回一个int值,该值在Calender对象中代表年份,月份等其他信息由其他的字段对应,也都有相应的get方法
    • 在获取或设置月份时,Calendar.MONTH所对应的字段一月是从0开始的,也就是说这个字段的取值范围是0 ~ 11而不是1 ~ 12
  • set(int field, int value);
    • 无返回值,将Calendar对象中对应的字段改为value,起到设置Calendar表示的时间的作用
  • add(int field, int amount);
    • 无返回值,将Calendar对象中对应的字段增加amount的值,起到修改Calendar表示的时间的作用
    • 该方法的作用与set(int field,get(field)+amount) 相同
    • 如果amount的值为负,则表示将其对应的时间回退

包装类的概述和基本使用

  • 对于基本数据类型,Java对其都有相应的包装类,也就是说每一个基本数据类型都可以对应一个类,从而更方便我们对基本数据类型进行一些操作
//以Integer为例:
//将int转换为String类型:
		String s = 1+"";                        //利用字符串加减的特性
		String s1 = Integer.toString(1);        //调用Integer类的方法
//将String转换为int类型:
        int i = Integer.parseInt("123");            //调用Integer类的方法

自动装箱和拆箱

  • 自动装箱
    • 将基本数据类型转换为其对应的包装类
Integer i = 10;
  • 自动拆箱
    • 将基本数据类型对应包装类的对象转换为基本数据类型
int i = 10;
Integer i1 = i + 10;

正则表达式的概述

  • 就是字符串, 但这个字符串有一定的规则
    • 规则:
    	y:就代表y
    	\\      
    	[abc] :a或b或c
    	[123] :123
    	[a-z] : 是小写字母吗
    	[a-zA-Z]: 是字母吗
    	[A-Z]:是大写字母吗
    
    	. :任意的字符
    	\\. : .字符
    	\\d : digit [0-9]
    	\\D :
    	\\w : word 符合 [a-zA-Z_0-9]
    	\\W:
    	\\s:  space
    	\\S:
    
    	str = str.replace(/[\s\.]/g,"");
    
    	\\d{5}:
    	.{5-10}
    	\\w{5,}
    	[123]*    *表示零次或多次
    	[abc]+    +表示1次或多次
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值