Object类
-
超类、基类,所有类的直接或间接父类,位于继承树的最顶端。
-
任何类,如果没有书写extends继承父类,都默认继承Object类否则间接继承。
-
Object类中所定义的方法,是所有对象都具备的方法。
-
Object类型可以存储任何对象。
1.作为参数,可以接受任何对象。
2.作为返回值,可以返回任何对象。
getClass()方法
-
返回引用中存储的实际对象类型。
-
应用:通常判断两个引用中实际存储对象类型是否一致。
hashCode()方法
-
返回该对象的哈希码值
-
哈希值根据对象的地址或字符串或数字使用hash算法计算出来int类型的数值
-
一般情况下相同对象返回相同哈希码
toString()方法
-
返回该对象的字符串展示(表现形式)
-
可以根据程序需求覆盖该方法,如:展示对象各个属性值
equals()方法
-
默认实现为(this == obj),比较两个对象地址是否相同。
-
可进行覆盖,比较两个对象的内容是否相同。
equals()方法覆盖步骤:(重写)
-
比较两个引用是否指向同一个对象。
-
判断obj是否为null。
-
判断两个引用的实际对象类型是否一致。
-
强制类型转化,
-
依次比较各个属性值是否相同。
finalize()方法
-
当对象被判定为垃圾对象时,由JVM自动调用该方法,用以标记垃圾对象,进入回收队列。
-
垃圾对象:没有有效引用指向此对象,为垃圾对象。
-
垃圾回收:由GC销毁垃圾对象,释放数据存储空间。
-
自动回收机制:JVM的内存耗尽,一次性回收所有垃圾对象。
-
手动回收机制:使用System.gc();通知JVM执行垃圾回收。
包装类
什么是包装类?(将基本类型包装成类,从而实现其基本属性方法)
-
基本数据类型所对应的引用数据类型。
-
Object可统一所有数据,包装类的默认值是null。
基本数据类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
类型转化与装箱、拆箱
装箱(栈-->堆) 拆箱(堆-->栈)
8种包装类提供不同类型间的转化方式:
-
Number父类中提供的6个共性方法。
拆箱:把引用类型转化为基本类型。
byteValue() 以byte形式返回指定的数据。
doubleValue()以double形式返回指定的数据。
floatValue()以float形式返回指定的数据。
intValue()以int形式返回指定的数据。
longValue()以long形式返回指定的数据。
shortValue()以short形式返回指定的数据。
装箱:把基本类型转为引用类型。
valueOf( )
-
parseXXX()静态方法 (基本类型和字符串之间的转化)
-
注意:需保证类型兼容,否则抛出NumberFormatException异常
整数缓冲区 ( 数组[-128,127] )
-
Java预先创建了256个常用的证书包装类型对象。
-
在实际应用中,对已创建的对象进行复用。
String 类
-
字符串是常量,创建后不可改变。
-
字符串字面值存储在字符串池中,可以共享。
-
String s = "hello"; 产生一个对象,字符串池中存储。
-
Sting s = new String("hello"); //产生两个对象!! 堆、池中各存储一个。
String常用方法
-
length(); 返回字符串长度
-
-
charAt(int index);返回某个位置的字符
-
-
3.contains (String str); 判断是否包含某个子字符串
-
4.toCharArray(); 返回字符串对应的数组
-
5.indexOf();返回子字符串首次出现的位置 如果存在则返回脚标,不存在则返回 -1
-
6.lastIndexOf();返回字符串最后一次出现的位置 不存在则返回-1
-
7.trim();去掉字符串前后的空格
-
8.toUpperCase();//把小写转为大写 ToLowerCase(); 把大写转为小写
-
9.endWith(str); 判断是否以str结尾, startsWith(str); 判断是否以str开头
-
replace(char old, char new); 用新的字符或字符串替换旧的字符或字符串
-
-
split(); 对字符串进行拆分
-
-
12.equals、compareTo(); 比较大小
案例:
已知 String str = "this is a text";
-
1.将str中单词单独获取出来
-
2.将str中的text替换为practice
-
3.在text前面插入一个easy
-
4.将每个单词的首字母改为大写
可变字符串
-
StringBuffer: 可变长字符, JDK1.0提供,运行效率慢,线程安全。
-
StringBuilder:可变长字符,JDK1.5提供,运行效率快,线程不安全。
它俩功能完全相同。和String区别: 1.效率更快。 2.更省内存。
-
1.append(); 追加
-
2.insert();添加
-
3.replace(); 替换 可以指定位置
-
4.delete();删除
案例:StringBuilder和StringBuffer 效率比 String高
BigDecimal(银行、大的浮点数精确计算)
-
位置:java.math包中。
-
作用:精确计算浮点数。
-
subtract(); 减法
-
add(); 加法
-
multiply(); 乘法
-
divide(); 除法
注意:
ROUND_DOWN,是一个舍位取值的概念,我保留了两位小数,我不管你后面的小数值如何,也不会四舍五入,就硬生生的给阶段,相当于什么呢,就是我从小数点后面开始取两位,两位后面的都不要了,相当于一个截取字符串的操作。
而ROUND_UP,很宽容,很大方,我不管你第三位的小数是多少,我都给你加一最小单位(比如保留两位小数,最小单位是0.01,保留三位小数,最小单位就是0.001),当然了,你保留到最后一位的数字如果是0的话,那么就不加了。
Date类
-
Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法已经被Calendar类中方法取代。
-
时间单位:
-
1秒=1000毫秒
-
1毫秒=1000微妙
-
微妙=1000纳秒(毫微秒)
方法:
-
after(); 判断时间在之后
-
before(); 判断时间在之前
-
compareTo(); 比较时间毫秒大小 如果大则结果为1 相同为0 小为-1
-
equals(); 比较时间是否相等
Calendar类
-
Calendar 提供了获取或设置各种日历字段的方法。
-
构造方法:protected Calendar(); 由于修饰符为protected,所以无法直接创建该对象。(用静态方法getInstance创建)
-
getTinmeInMillis(); 从1970年到现在的毫秒值
-
获取年 YEAR
-
获取月 MONTH (注意:这里月份时从0-11 0代表1月 11代表12月)
-
获取日 DAY_OF_MONTH
-
获取小时 HOUR_OF_DAY HOUR 12小时制 HOUR_OF_DAY 24小时制
-
获取分钟 MINUTE
-
获取秒 SECOND
-
修改时间 set( ,);
-
添加减少时间add( , ); 添加+ 减少-
-
最大的一天 getActualMaximum 最小的一天getActualMinimum
SimpleDateFormat
-
SimpleDateFormat是一个以语言环境有关的方式来格式化和解析日期的具体类。
-
进行格式化(日期-->文本) format();
-
解析(文本-->日期) parse();解析格式必须对应 如果格式不对应则会出现 Unparseable date异常
-
常用的时间模式字母
字母 | 日期或时间元素 | 表示 | 示例 |
---|---|---|---|
G |
Era 标志符 | Text | AD |
y |
年 | Year |
1996 ; 96
|
M |
年中的月份 | Month |
July ; Jul ; 07
|
w |
年中的周数 | Number | 27 |
W |
月份中的周数 | Number | 2 |
D |
年中的天数 | Number | 189 |
d |
月份中的天数 | Number | 10 |
F |
月份中的星期 | Number | 2 |
E |
星期中的天数 | Text |
Tuesday ; Tue
|
a |
Am/pm 标记 | Text | PM |
H |
一天中的小时数(0-23) | Number | 0 |
k |
一天中的小时数(1-24) | Number | 24 |
K |
am/pm 中的小时数(0-11) | Number | 0 |
h |
am/pm 中的小时数(1-12) | Number | 12 |
m |
小时中的分钟数 | Number | 30 |
s |
分钟中的秒数 | Number | 55 |
S |
毫秒数 | Number | 978 |
z |
时区 | General time zone |
Pacific Standard Time ; PST ; GMT-08:00
|
Z |
时区 | RFC 822 time zone | -0800 |
System类
System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有。
-
数组的复制: arraycopy( src, srcPos, dest, destPos, length);
//src: 数组的复制 src: 数组源 srcPos:从哪个位置开始复制的 (第一个位置为0)
dest:目标数组 destPos:目标数组的位置 length:复制的数组长度
-
获取当前的系统时间 currentTimeMillis(); 可用于计时
-
System.gc 告诉垃圾回收回收 (不一定会回收,系统判断)
-
退出JVM System.exit(0) 0表示正常退出 非0为异常退出