文章目录
- 常用类
- Object
- System
- 包装类
- 概念
- 分类
- 自动装箱与自动拆箱
- 将字符串转为数字
- 10进制的转换
- Integer的整数缓存区
- 字符串
- 不可变字符串String
- 可变字符串
- 可变字符串与不可变字符串的区别
- 精准计算:BigDecimal
- 时间相关的类
- Date
- Calendar
- SimpleDateFormat
常用类
Object
概念:所有类的父类
1,如果一个类没有写继承那么该类默认继承于 Object
2,所有类的对象均可转换为 Object
常用方法:
toString :打印对象时默认盗用对象的 toString() 方法
注意: Object 提供的 toString()方法默认的返回值为包名.类名@
对象哈希码值的16进制
如果想要打印对象的属性信息,需要重写 toString()方法
getClass:获取该类的对象
hashCode:获取对象的哈希码值
finalize:对象被回收前由系统覅用的方法
equals:比较对象是否一致,默认比较的是对象的内存地址
如果需要比较对象的属性值则需要对equals重写
System
概念:系统类
常用方法:
public static void gc(); 手动调用Java的垃圾回收机制
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为不正常退出
包装类
概念
八大基本类型对应的类
分类
基本数据类型 对应的引用数据类型
byte Byte
short Shor
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
自动装箱与自动拆箱
自动装箱:将基本数据类型转为对应的包装类的对象
自动拆箱:将包装类的对象转换为基本数据类型
将字符串转为数字
整数:
int 变量名 = Integer.parseInt(要转换的字符串);
注意:要转换的字符串必须是整形字符串
小数:
double 变量名 = Double.parseDouble(要更换的字符串);
注意:要转换的字符串必须为纯数字
布尔:
boolean 变量名 = Boolean.parseBoolean(要转换的字符串);
注意:除true字符串以外都是false
10进制的转换
10进制转为2进制:
String 变量名 = Integer.toBinaryString(10进制整型)
10进制转为8进制:
String 变量名 = Integer.toOctalString(10进制整型)
10进制转为16进制:
String 变量名 = Integer.toHexString(10进制整型)
Integer的整数缓存区
取值范围:-128~127
在jdk中存在着Integer的-128~127的对象,所以在自动装
箱时,如果被装箱的数在此范围内,则直接将jdk中创建的对象之间
赋值给栈中的引用(变量名),所以在比较该范围内的Integer对象
放对象的值相同时地址也相同,在此范围外就需要重新创建包装对象
,因此当值相同时地址不同
字符串
不可变字符串String
常用方法:
判断两个字符串是否相同:
public boolean equals(Object anObject)
此方法为String类重写了Object的方法
忽略大小写比较字符串内容是否相同
public boolean equalsIngorCase(String anotherString)
将字符串转为字符数组
public char[] toCharArray()
获取字符长度
public int length()
获取字符串指定位置的字符串
public char charAt(int index)
参数:获取字符在字符串中的位置
判断字符串以什么结束
public boolean endsWith(String suffix)
参数:以什么结束的字符串
判断字符串以什么开始
public boolean startsWith(String prefix)
参数:以什么开始的字符串
获取子字符串在字符串中第一次出现的位置
public int indexOf(String str)
参数:子字符串
如果子字符串不存在则返回-1,存在则返回子字符串第一次出现的下标
获取子字符串在字符串中最后一次出现的位置
public int lastIndexOf(String str)
参数:子字符串
如果子字符串存在则返回在字符串中最后一次出现的下标,若不存在则返回-1
忽略字符串中前后出现的空白:
public String trim()
只能忽略首部和尾部出现的空白
判断字符串是否为空字符串
public boolean isEmpty()
将字符串转为大写:
public String toUpperCase()
将字符串转为小写:
public String toLowrtCase()
字符串替换
public String replace(String oldChar, String newChar)
参数:1要被替换掉的子字符串
2替换后的字符串
字符串切割
public String[] splict(String regrx)
参数:以什么切割
字符串切割
public String substring(int beginIndex,int endIndex)
参数:1开始的位置
2结束位置(前开后必)
判断子字符串是否存在
public boolean contains(String s)
参数:子字符串
可变字符串
线程安全的: StringBuffer
线程不安全的: StringBuilder
String 中拥有的常用方法 StringBuffer 和 StringBuilder 中也有
但是 String 中字符串的拼接可用+进行而 StringBuffer 和 StringBuilder
是通过append进行尾部追加
可变字符串与不可变字符串的区别
当大量对字符串进行操作时,可变字符串的执行时间更短,内存占用更少
举例:
String str="hello";
String str=str+"world";
在此 String 的字符串拼接的过程中会产生三个 String 对象
即 "hello"对象,"world"对象和"helloworld"对象
其中 "hello" 与"world" 在字符串常量池中
新生成的"helloworld"则会在堆中开辟空间,且在常量池中添加"helloworld"
(字符串拼接操作中只要其中有一个是变量,结果就在堆中,变量拼接的原理是创建
一个 StringBuilder 类的对象,调用其 append 方法,拼接完成后再调用该对象
的 toString()方法(该方法已经被重写了)返回一个字符串对象)
若是 String str="hello"+"world";
在此过程中由于在编译期间对于字符串常量的拼接会进行优化,因此
str="hello"+"world";可直接看作str="helloworld";因此只生成了一
个对象.
StringBuffer str=new StringBuffer("hello");
str=str.append("world");
在此过程中首先 "hello" 与"world" 在字符串常量池中
在创建 StringBuffer 对象时会在堆中开辟空间
在字符串拼接时则会开辟一个新的空间用以指向在常量池中的"hello"
与"world"以达到拼接的目的,同时将str的引用指向新开辟的空间,之后回
收在堆中原来的空间
精准计算:BigDecimal
创建对象时传入的参数为字符串
常用方法:
public BigDecimal add(BigDecimal augend) 加
public BigDecimal subtract(BigDecimal subtrahend) 减
public BigDecimal multiply(BigDecimal multiplicand) 乘
public BigDecimal divide(BigDecimal divisor) 除
时间相关的类
Date
通过创建 Date 类的对象来获取当前时间
Date date = new Date();//创建当前时间的Date对象
date.toString() //可获得当前时间的美国格式
如2022年7月4日17点43分42秒显示的为
Mon Jul 04 17:43:42 CST 2022
日期的比较
使用 getTime() 方法获取两个日期(自格林威治时间1970年1月1日
00:00:00 经历的毫秒数值),然后比较这两个值。
使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,
则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了
这个接口。
Calendar
Calendar 类是一个抽象类,在实际使用时实现特定的子类的对象,因此需要
使用 getInstance()方法创建。
Calendar c = Calendar.getInstance();//默认是当前日期
//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 , 12);
SimpleDateFormat
/**
* y:年
* M:月
* d:当前月的第多少天
* h:12小时制
* H:24小时制
* m:分钟
* s:秒
*/
//设置时间格式
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日"
+"HH:mm:ss");
//将Date获取得到的时间转为设定的时间格式
String str01=format.format(date);
String str02="2020年06月01日 06:06:06";
try{
//将特定格式的字符串转为date对象
Date date=format.parse(strj02);
}catch(ParesException e){
e.printStackTrace();
}