- String类,代表字符串
a) 是一个final类,无法被继承,是不可变的字符序列,内部定义了final char[];
i. 不可变性体现: - 字符串重新赋值,需要重写指定内存区域赋值,不能再原有的value赋值
- 连接操作,也需要重新指定内存区域赋值
- Replace()修改字符串时,重新制定内存区域赋值
b) 实现了Serializable(字符串可序列化),comparable接口
c) 通过字面量方式赋值:字符串声明在字符串常量池(位于方法区中),字符串常量池中不会有相同内容的字符串 - String实例化方式
a) 字面量方式
i. 数据声明在方法区字符串常量池
b) New加构造器方式,创建了新的对象
i. 数据在堆空间中先开辟空间后,堆中再指向字符串常量池
c) 字符串拼接:
i. 常量与常量:结果在常量池,若变量用final定义则也是这个结果。
ii. 若有变量参与拼接:结果在对空间中(地址值指向堆空间)
iii. 若上述的拼接结果调用intern()方法,返回值就在常量池中 - String常用方法
a) Int length(): 返回字符串长度:return value.length();
b) Char charAt(int index): 返回索引处的字符
c) Boolean isEmppty(): 判断是否为空数组: return value.length==0;
d) String toLowerCase();//toUpperCase: 所有字符转化为大小写
e) Trim(): 忽略前边和后边的空白
f) Boolean equals(Object obj):比较字符串内容是否相同
g) Boolean equalsIgnoreCase(Object obj):忽略大小写比较
h) String concat(String str): 将指定的字符串连接到此字符串结尾,相当于“+”
i) Int compareTo(Object obj): 比较两字符串大小,涉及到字符串排序
j) String substring(int beginIndex, int endIndex): 截取从beginIndex到endIndex(不包括end 左闭右开!!)的索引的字符串
k) Boolean endWith(String suffix):
l) Boolean startWith(String prefix):
m) Boolean startWith(String prefix, int toffset):
i. 测试此字符串是否以指定的后缀、前缀、索引开始或结束
n) Boolean contains(CharSequence s):判断是否包含字符串s
o) Int indexOf(String str): 返回指定子字符串在字符串中第一次出现处的索引,没找到返回-1
p) Int lastIndexOf(String str): 返回指定子字符串在字符串中最右边出现处的索引
q) Int indexOf(String str,Int i): 返回指定子字符串在字符串中i索引开始找,若出现相同的子字符串返回索引,没找到返回-1
r) String replace(Char oldChar, Char newChar): 返回一个newChar替换oldChar的字符串
s) String replace(charSequence target, CharSequence replacement): 替换一整个序列
t) Boolean match(String regex): 字符串是否匹配给定的正则表达式
u) String split(String regex, int limit) - String 与 char[] 之间的转换
a) Stringchar[]: str.toCharArray(); 调用String的toCharArray();
b) Char[]String: new String(char[]),调用String构造器; - String与byte[]转换
a) Str—>byte[]: str.getBytes();
b) Byte[]Str: new String(bytes),使用String构造器; - StringBuffer
a) 可变的字符序列,底层char[]存
b) 线程安全的,效率低
c) 新建时,相当于底层创建长度是16的char数组
d) 扩容问题:默认扩容为原来的两倍+2, 将原有的数组的元素复制到新的数组中。Newcapacity<<1(左移一位乘2)
e) SB.length不一定等于16,返回有多少个元素。 - StringBuilder
a) 可变的字符序列,底层char[]存
b) 线程不安全的,效率高
c) 创建时,相当于底层创建长度为原长度+16的char数组(“abc”.length + 16); - StringBuffer常用方法
a) Append():字符串拼接
b) Delete(int start, int end):删除指定位置元素,左闭右开。Abc11delete(2,4)ab1
c) Replace(int start, int end, String str):替换
d) Insert(int offset, xxx):在指定位置插入XXX
e) Reverse: 反转
f) Int indexOf(String str): 返回字符串首次出现的位置 - JDK8之前的日期和时间接口
a) Public static long currentTimeMillis():返回1970.01.01到现在的毫秒时间差(时间戳) - Date类
a) Java.util.Date
i. toString():显示当前的年月日时分秒 星期 时区
ii. getTime():获取毫秒数(时间戳)
iii. 构造器Date(): 创建当前时间的Date对象
iv. 构造器Date(Long 时间戳): 创建时间戳的Date对象
b) Java.sql.Date
i. 构造器Date(时间戳): 创建时间戳的Date对象 - Text.SimpleDateFormate类
a) 实例化,方法非静态
i. 构造特定的格式,使用指定的方式进行格式化 - SimpleDateFormat sdf1 = new SimpleDateFormat(“yyyy.MMMM.dd hh:mm:ss aaa”);
b) 对日期Date类的格式化和解析
c) 格式化:日期字符串
i. String format = sdf.format(new Date());
d) 解析: 字符串日期
i. Date date1 = sdf.parse(str); - Calender日历类
a) 实例化
i. Calender cal = Calender.getInstance();
ii. Get(): cal.get(Calender.DAY_OF_ MONTH);返回当前月的日期
iii. Set():
iv. Add():
v. getTime():
vi. setTime(): - JDK8的时间日期操作
- LocalDate LocalTime LocalDateTime类
a) 需要实例化
i. 类名.now(): LocalDate ld = LocalDate.now();
ii. 类名.of(): LocalDateTime ldt = LocalDateTime.of(2020,10,6,13,23,12);–>yyyy,MMMM,dddd,hh,mm,ss不用考虑偏移量的问题
b) Get()
i. Ldt.getDateOfMonth()/DateOfWeek…获取月(周)中的第几天
c) withXxx()体现了不可变性
i. 使用withXxx()进行日期修改后,原本的日期不发生改变 - Instant类
a) 时间线上的瞬时点,记录应用程序的时间戳
b) 实例化:Instant.now(); instant.atOffset(ZoneOffesrt.ofHours(8));获取中国时区标准时间,通过添加偏移量。
c) Instant.toEpochMilli(); 获取对应的毫秒数
d) Instant.ofEpochMilli(Long long): 通过给定的毫秒数创建instant实例 - DateTimeFormatter
a) 用于格式化和解析日期或者时间,提供了三种格式化的方法。
i. 自定义格式化初始化 - DateTimeFormatter formatter=DateTimeFormatter.ofPattern(“yyy-MM-dd hh:mm:ss”);
b) 格式化:日期字符串
i. formatter.format(LocalDateTime.now());
c) 解析:
i. formatter.parse(String) - Java比较器
a) Java中的对象只能进行==和!=操作,无法比较大小
b) 由于需要对对象进行排序,则需要比较大小。 - 自然排序lang.Comparable
a) 实现comparable接口,重写comparaTo(obj)方法
b) 在compareTo(obj)指明比较大小的方式 - 定制排序util.comparator
Java基础点:常用类
最新推荐文章于 2023-08-29 17:23:20 发布