java学习--基础知识进阶第五天--笔记

时间:2022-03-18 13:40:01

今日内容
Object类
System类

Date类
SimpleDateFormat类
Calendar类

基本数据类型的包装类(8种)
正则表达式

学习API的方法
一定不要死记其中的方法,只要查看API,看到方法名,知道这个方法的作用即可
看参数列表,需要什么类型的参数就传递什么类型的参数
看返回值类型,是什么返回值类型就用什么类型的变量接收,如果没有返回值,就只能单独调用
看修饰符,如果是static修饰的,就不需要创建对象调用,直接使用类名.的方式调用

Object类
是所有类的根类(直接父类或者间接父类),对象和数组都直接或者间接继承Object类
注:接口不继承Object类

toString():将对象转为字符串的形式
* return getClass().getName() + "@" + Integer.toHexString(hashCode());
Object类中的toString()方法转成的全类名+内存地址的十六进制形式,一般来说这种格式对我们来说没有意义,所以都会进行重写
重写之后用于输出对象中的成员变量的值

重写快捷键:
alt+shift+s + s

getClass():获取类的字节码对象
hashCode():哈希码,内存地址值

equals():比较两个对象是否相等,比较地址值是否相等
* return (this == obj);
* return (this == obj);

如果要比较地址值是否相等,我们直接选择==就可以了,所以类在继承Object中的equals()方法之后,一般都会重写
重写之后用于比较内容(成员变量的值)是否相等
==没有被重写,比较的是地址值是否相等

重写的快捷键:
alt+shift+s + h

System类
系统类,在java.lang包下,final修饰的类,该类不能被继承
构造方法被私有(private修饰),所有的方法都是静态的(static修饰的)(工具类2)

static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
* 复制数组
static long currentTimeMillis()
* 返回当前系统时间距离1970年1月1日0时0分0秒以来的毫秒值
static void exit(int status)
* 退出JVM
static void gc()
* 启动垃圾回收器

面试题:
Java程序能通过代码精确控制垃圾回收器来对垃圾进行回收吗?
不能

模拟System类中的arraycopy的功能,实现以下方法:
static void arraycopy(int[] src, int srcPos, int[] dest, int destPos, int length)

日期相关的类
Date类
位于java.util包下,不要导错包了
表示的时间,可以表示过去、现在和未来的时间

构造方法
Date()
Date(long mills) 通过mills可以表示过去、现在和未来的时间

常用方法
setTime(long mills) :设置毫秒值
getTime():获取毫秒值

SimpleDateFormat类
日期格式化类

构造方法
//SimpleDateFormat():使用默认的模式进行日期的格式化和解析
SimpleDateFormat(String s):使用指定的模式进行日期的格式化和解析

格式化:将日期对象转换成字符串
String format(Date d)

解析:将日期字符串转为日期对象
Date parse(String s)

Calendar类
日历类,抽象类

获取对象
*static Calendar getInstance()

对日期进行操作的方法
获取
get(int i)
修改
set(int i,int value)
增加或者减少
add(int i,int value)

基本数据类型的包装类
基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

注:只有int和char对应包装类有较大改变,其余都是首字母小写变大写即可

String和int的互转
String->int
* Integer.parseInt(s)
int->String
* +""

自动拆装箱
JDK1.5的新特性

自动装箱:基本数据类型转为包装类型
Integer i = 10; // Integer i = new Integer(10); Integer i = Integer.valueOf(10);
自动拆箱:包装类型转为基本数据类型
int a = i; // int a = i.intValue();


练习:
Integer i1 = new Integer(100);
Integer i2 = new Integer(100);
System.out.println(i1==i2); // false
System.out.println(i1.equals(i2)); // true//已经修改了

System.out.println("----------------");

Integer i3 = new Integer(200);
Integer i4 = new Integer(200);
System.out.println(i3==i4); // false
System.out.println(i3.equals(i4)); // true

System.out.println("----------------");

Integer i5 = 100;
Integer i6 = 100;
System.out.println(i5==i6); // true
System.out.println(i5.equals(i6)); // true

System.out.println("----------------");

Integer i7 = 200;// Integer i5 = new Integer(200);
Integer i8 = 200;// Integer i5 = new Integer(200);
System.out.println(i7==i8); // false
System.out.println(i7.equals(i8)); // true


原理:
// IntegerCache.high = 127
// IntegerCache.low = -128

public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)// i>=-128 && i<=127
return IntegerCache.cache[i + (-IntegerCache.low)];// 100+128=228 ,return 100
return new Integer(i);
}

正则表达式