一、String类
1.定义
不可变长的字符序列
String类表示字符串 。Java程序中的所有字符串文字(例如“abc”)都实现为此类的实例
2.常用的方法
1)char charAt(int index) 返回指定索引处的 char 值
2)int compareTo(String anotherString) 按字典顺序比较两个字符串
返回值:this,anotherString
0 --> this == anotherString
<0 --> this < anotherString
>0 --> this > anotherString
3)boolean contains(CharSequence s) 当且仅当此字符串包含指定的char值序列时,才会返回true
4)boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结尾 boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开头
5)boolean equals(Object anObject) 将此字符串与指定的对象进行比较
6)int indexOf(String str) 返回指定子字符串中第一次出现的字符串的索引 int indexOf(String str,int fromIndex) 从指定的索引处开始,返回指定子字符串中第一次出现的位置 int lastIndexOf(String str) 返回指定子字符串最后一次出现的字符串中的索引 int lastIndexOf(String str,int fromIndex) 返回指定子字符串最后一次出现的字符串中的索引, 从指定索引开始向后搜索
7)boolean isBlank() 如果字符串为空或者仅包含 半角的空格 时则返回true,否则false boolean isEmpty() 当且仅当length()为空的时候,返回true
8)int length() 返回此字符串的长度
9)String repeat(int count) 返回一个字符串,其值为此字符串的串联重复 count次
10)String[] split(String regex) 将此字符串拆分为给定的 参数列表内符号
11)String strip() 返回一个字符串,其值为此字符串,并删除了所有前导和尾随 white space 。 去除全角空格,去除半角空格
String stripLeading() 返回一个字符串,其值为此字符串,并删除了所有前导 white space 。
String stripTrailing() 返回一个字符串,其值为此字符串,并删除所有尾随 white space 。
String trim() 返回一个字符串,其值为此字符串,删除了所有前导和尾随空格,不能去除全角空格,只能去除半角空格
12)String substring(int beginIndex) 返回一个字符串,该字符串是此字符串的子字符串 String substring(int beginIndex,int endIndex) 返回一个字符串,该字符串是此字符串的子字符串
13)char[] toCharArray() 将此字符串转换为新的字符数组
14)String toLowerCase() 所有字符转换为小写 String toUpperCase() 所有的字符转换为大写
3.StringBuilder和StringBuffer
StringBuilder:可变的字符序列,线程不安全|不同步
StringBuffer:可变的字符序列,线程安全的|同步
在多线程环境下,保证数据的安全性,建议使用StringBuffer
执行效率:StringBuilder > StringBuffer > String
二、包装类
1.基本数据类型的包装类
基本数据类型 引用数据类型
byte Byte
short Short
int Integer
long Long
char Character
boolean Boolean
double Double
float Float
2.自动拆装箱
自动装箱:基本 ----> 引用
自动拆箱:引用 -----> 基本
3.出现的问题
有了基本数据类型为什么要需要包装类?
1)包装类中提供了一些成员方法,更强大
2)类似容器中只能存储引用数据类型数据,需要包装类
3)基本数据类型与引用数据类型默认值不同
为什么有了引用数据类型还有基本数据类型?
1)有利于节省内存
2)使用更简单方便
4.总结
int,Integer,new Integer数据类型比较问题:
需要要求数据值相等,考虑类型、地址等问题
1)两个new 比较,肯定不相等,堆内存中地址不同
2)两个int 比较,值相等就相等
3)int和Integer比较,无论是否通过new,只要数据值相等就相等,因为会先自动拆箱成基本数据类型进行比较
4)Integer和new Integer比较,不相等,因为new就是堆内存地址,地址不同
5)两个Integer比较,看数值的范围是否在[-128,127]之间,如果在这之间相等,不在这之间不相等
三、Enum枚举
1.定义
一种事物的所有可能,一种类型的所有实例
2.注意
1)enum定义枚举
2)枚举类中的字段都作为当前枚举类型的实例存在,默认public static final修饰
3)枚举类中可以根据需求定义成员,成员变量,成员方法,构造器,等等
4)枚举类型中的构造器默认是私有的
5)所有的枚举类型是默认的隐式的继承自java.lang.Enum类型
四、Math类
Math包含用于执行基本数字运算的方法,是一个静态工厂
五、Date类
1.Date()
获取时间
2.Date(long date)
参数为 ms 数,基准是1970年1月1日00:00
六、SimpleDateFormat 日期格式转换类
java8中新增的:
LocalDate 日期
LocalTime 时间
LocalDateTime 年月日时分秒