本文主要介绍了JDK中的常用类的主要方法,包括Object、System、包装类、字符串、精准计算BigDecimal、时间相关(Date、Calendar、SimpleDateFormat)!具体可以参考jdk1.8api文档!
1.Object
概念:所有类的父类
了解:
1,如果一个类没有写继承关系,默认继承于Object
2,所有类的对象都可以转换为Object的对象
常用方法:
toString:打印对象时,(系统)默认调用对象的toString
注意:Object提供的toString方法默认的返回值为包名.类名@对象哈希码值得16进制
如果想要打印的是对象的属性信息,需要重写toString方法
熟练度:掌握
getClass:获取该类的类对象
熟练度:了解
hashCode:获取对象哈希码值
熟练度:了解
finalize:对象被回收前,由系统调用
equals:比较对象是否一致,默认比较的是对象的内存地址
如果需要比较对象的属性值,需要重写equals方法
2.System
概念:系统
常用方法:
public static void gc():手动调用java垃圾回收机制(gc)
public static native void arraycopy:复制数组
1参:复制那个数组
2参:从那个位置开始
3参:复制到那个数组
4参:从哪个位置开始复制
5参:复制几个数据
public static native long currentTimeMillis():获取当前时间与格林威治时间1970年1月1日 00:00:00的时间差,单位毫秒
public static void exit(int status):退出当前程序,参数为0正常退出,非0不正常退出
native主要用于方法上
1,一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现,比如用C或C++实现。
2,在定义一个native方法时,并不提供实现体(比较像定义一个Java Interface),因为其实现体是由非Java语言在外面实现的
注意:
主要是因为JAVA无法对操作系统底层进行操作,但是可以通过jni(java native interface)调用其他语言来实现底层的访问。
3.包装类
基本数据类型 对应的引用数据类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
自动装箱: 将基本数据类型转换为对应的包装类的对象
自动拆箱: 将包装类对象转换为基本数据类型
Integer num01=10; //自动装箱
int num02=num01; //自动拆箱
整数:
int 变量名 = Integer.parseInt(要转换的字符串);
注意:要转换的字符串必须是整形字符串
小数:
double 变量名 = Double.parseDouble(要转换的字符串);
注意:要转换的字符串必须是纯数字组成字符串
布尔:
boolean 变量名 = Boolean.parseBoolean(要转换的字符串);
注意:除了true字符串以外,都是false
String s01=Integer.toBinaryString(num02); //二进制
String s02=Integer.toHexString(num02); //十六进制
取值范围:-128~127
*
因为jdk中存在-128~127的对象(在Integer源码中封装),所以在自动装箱时,
如果被装箱的数在此范围内,则直接将jdk中创建的对象之间赋值给栈中的引用(变量名),所以为true.
如果超过这个范围就需要从新创建包装类对象,所以判断为false
public static void main(String[] args) {
Integer num01=127;
Integer num02=127;
Integer num03=128;
Integer num04=128;
System.out.println(num01==num02); //结果为true
System.out.println(num03==num04); //结果为false
}
4.字符串
(1)不可变字符串:String
(1)判断字符串内存是否相同:
public boolean equals(Object anObject)
注意:String类中重写Object的方法
(2)忽略大小写比较字符串内容是否相同
public boolean equalsIgnoreCase(String anotherString)
(3)将字符串转换为字符数组
public char[] toCharArray()
(4)获取字符串长度
public int length()
(5)获取字符串中指定位置的字符
public char charAt(int index)
参数:获取的字符在字符串中的位置
(6)判断字符串以什么结束
public boolean endsWith(String suffix)
参数:以什么结束的字符串
(7)判断字符串以什么什么开始
public boolean startsWith(String prefix)
参数:以什么开始的字符串
(8)获取子字符串在字符串中第一次出现的位置
public int indexOf(String str)
参数:子字符串
注意:如果子字符串存在,返回子字符串第一次出现位置的下标,如果不存在返回-1
(9)获取子字符串在字符串中最后一次出现的位置
public int lastIndexOf(String str)
参数:子字符串
注意:如果子字符串存在,返回子字符串最后一次出现位置的下标,如果不存在返回-1
(10)忽略字符串中前后的空白:
public String trim()
注意:只能忽略前后的空白
(11)判断字符串是否为空字符串:
public boolean isEmpty()
(12)将字符串转换为大写:
public String toUpperCase()
(13)将字符串转化为小写:
public String toLowerCase()
(14)替换
public String replace(String oldChar, String newChar)
参数:
1,要被替换的子字符串
2,替换后的子字符串
(15)切割
public String[] split(String regex)
参数:以什么切割
(16)截取
public String substring(int beginIndex, int endIndex)
参数:
1,开始位置
2,结束位置
注意:
前闭后开
(17)判断子字符串是否存在
public boolean contains(String s)
参数:子字符串
线程安全的:StringBuffer jdk1.0
线程不安全的:StringBuilder jdk1.5
特有方法:
append:追加到尾部
注意:
1,方法中带有synchronized 表明此方法线程安全
大量的操作字符串时,可变字符串执行的时间短,占据的内存少
注意:
1,使用 + 连接两个String字符串对象时,会在内存常量池中开辟一块空间存储连接后字符串的值
2,使用 append 连接连个 StringBuffer 对象时,其消耗的是堆内存空间
即:在堆中开辟一块空间,存储原有两个StringBuffer的地址,不会在常量池中开辟新空间
3,GC会回收堆中的垃圾(无栈中引用指向的对象)
5.精准计算:BigDecimal
注意:
创建对象时传入的参数要是字符串(其他类型有bug),除法谨慎使用
常用方法:
public BigDecimal add(BigDecimal augend):加
public BigDecimal subtract(BigDecimal subtrahend):减
public BigDecimal multiply(BigDecimal multiplicand):乘
public BigDecimal divide(BigDecimal divisor):除
6.时间相关
public static void main(String[] args) {
// TODO Auto-generated method stub
//SimpleDateFormat类
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd号 HH:mm:ss");
//Date类
Date date = new Date();
System.out.println(date);
//Calendar类
Calendar c = Calendar.getInstance();
Date time = c.getTime();
System.out.println(time);
//将date个数的时间转换为特定格式的字符串
String str = format.format(date);
System.out.println(str);
String str02 = "2020年06月06号 18:18:18";
try {
//将特定格式的字符串转换为date对象
Date date2 = format.parse(str02);
System.out.println(date2);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}