JAVA 常用类总结
1、String特性:
①String代表字符串
②String是final类,是不可变的字符序列,不能被继承
体现:1、当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值
2、当对现有的字符串进行连接操作,也需要重新指定内存区域赋值,不能使用原有的value进行赋值
3、当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值
③字符串是常量,用""引起来表示,它的值在创建后不能修改
④String对象的字符串存储在一个字符数组char[],value用于存储字符串
⑤String实现了serializable接口:支持可序列化
Comparable接口:String可以比较大小
⑥通过字面量的方式(区别与new)给一个字符串赋值,字符串声明在字符串常量池中
new+构造器:数据在堆空间中开辟以后对应的地址值
⑦字符串常量池不会存储相同的字符串
总结:
1、常量与常量拼接结果在常量池,常量池不会出现相同内容。
2、只要拼接中有一个是变量,结果在堆中
3、拼接调用intern()方法,返回值在常量池中
2、常用方法:
1、int length():返回字符串的长度 return value.length
2、char charAt(int index):返回某索引出的字符串 return value[index]
3、boolean isEmpty():判断字符串是否为空,return value.length == 0
4、String toLowerCase():使用默认语言环境,将String所有字符转换为小写
5、String toUpperCase():使用默认语言环境,将String所有字符转换为大写
6、String trim():返回字符串的副本,去掉首位空格
7、boolean equals(Object obj):比较字符串内容是否相等
8、boolean equalslgnoreCase(Object obj):比较字符串内容是否相等,忽略大小写
9、String concat(String str):指定字符串拼接,相当于"+"
10、int compareTo(String anotherString):比较两个字符串大小
11、String subString(int beginIndex):返回一个新的字符串,此字符串从begenIndex开始截取到最后一个字符串
12、String subString(int beginIndex, int endIndex):返回一个新的字符串,此字符串从begenIndex开始截取到endIndex(不包含)的字符串
13、boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
14、boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
15、boolean startsWith(String prefix,int toffset):测试此字符串从指定的索引开始的子字符串是否以指定的前缀开始
16、boolean contains(CharSequence s):当且仅当此字符串包含指定的char值序列时,返回true
17、int indexOf(String str):返回指定子字符串在此字符串中第一次出现位置的索引
18、int indexOf(String str,int fromIndex):返回指定子字符串中第一次出现位置的索引,从指定的索引开始
19、int lastIndexOf(String str):返回指定字符串在此字符串中从最右边的位置的索引
20、int lastIndexOf(String str,int fromIndex):返回指定字符串在此字符串中最后一次出现的的位置索引,从指定的索引开始反向搜索
注:indexOf和lastIndexOf方法如果未找到都是返回-1
21、String replace(char oldChar,char newChar):返回一个新的字符串,它是通过用newChar替换此字符串出现中的所有oldChar
22、String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换字符串所有匹配字面值目标序列的子字符串
23、String replaceAll(String regex,String replacement):使用给定的replacement替换此字符串所有匹配给定的正则表达式的子字符串
24、String replaceFirst(String regex, String replacement):使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串
25、boolean matches(String regex):告知此字符串是否匹配给定的正则表达式
26、String[] split(String regex):根据给定的正则表达式的匹配拆分此字符串
27、String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中
3、String转换:
String --> 基本数据类型、包装类:调用包装类的静态方法:parsexxx(str)
基本数据类型、包装类 --> String:调用String重载的valueOf(xxx)
String --> char[] 之间转换:调用String的toCharArray()
char[] --> String 之间转换:调用String构造器
String --> byte[] 之间转换:调用String的getBytes()
byte[] --> String 之间转换:调用String构造器
4、String、StringBuffer、Stringbuilder三者异同:
String:不可变的字符序列,底层使用char[]存储
StringBuffer:可变的字符序列,线程安全,效率低,底层使用char[]存储
增:append(xxx)
减: delete(int start, int end) 从start开始到end结束,不包含end
改:setCharAt(int n, int ch) / replace(int start, int end, String str)
查:charAt(int n)
插:insert(int offset, xxx)
长度:length()
遍历:for() + charAt() / toString()
StringBuilder:可变的字符序列,线程不安全,效率高,底层使用char[]存储
扩容:如果添加的数据底层数组不能满足当前存储,默认情况扩容是原来容量的2倍+2,将原有数组复制到新的数组中
效率从高到底:StringBuilder > StringBuffer > String
5、日期API:
①Java.lang.System时间戳:System.currentTimeMillis()
②Java.util.Date:
两个构造器使用:
1、构造器一:Date():创建一个对应当前时间的Date对象
2、构造器二:创建指定毫秒数的Date对象
两个方法:
1、方法一:toString():显示当前的年、月、日、时、分、秒
2、方法二:getTime():获取当前Date对象对应的毫秒数,时间戳
java.sql.Date对应数据库中的日期类型的变量
1、如何实例化
2、如何将java.util.Date转化为java.sql.Date对象
③Java.text.SimpleDateFormat:
格式化:日期 -> 文本;
解析:文本 -> 日期
1、SimpleDateFormat():默认的模式和语言环境创建对象
2、public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用:
3、public String format(Date date):方法格式化时间对象date
解析:
public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期
④Java.util.Calendar日历类:Calendar是一个抽象基类,主要用于完成日期字段之间相互操作的功能。
1、获取Carlendar实例的方法:
Carlendar.getInstance()方法
调用它的子类GregorianCarlendar的构造器
2、通过get(int field)来获取想要的时间信息
注意:
获取月份:一月是0,以此类推
获取星期:周日是1,以此类推
⑤LocalDate、LocalTime、LocalDateTime
实例化:new() / now(Zoneld zone) 静态方法,根据当前时间创建对象 / 指定时区的对象
of() 静态方法,指定日期/时间创建对象
get类操作:getDayOfMonth()/getDayOfYear()/getDayOfWeek() 获取月份天数(1-31)/获取年份天数(1-366)/获取星期几(返回一个DayOfweek枚举值)
getMonth()/getMonthValue()/getYear() 获得月份(返回一个month枚举值)/获得月份(1-12)/获得年份
getHour()/getMiute()/getSecond() 获取当前对象的小时/分钟/秒
set类操作:withDayOfMonth()/withDayOfYear()/withMonth()/withYear() 将月份天数/年份天数/月份/年份修改为指定的值并返回新的对象
加操作:plusDays()/plusWeeks()/plusMonths()/plusYears()/plusHours() 向当前对象添加天/星期/月/年/小时
减操作:minusDays()/minusWeeks()/minusMonths()/minusYears()/minusHours() 向当前对象减掉天/星期/月/年/小时
⑥instant:时间线上的一个瞬时点
⑦Java.time.format.DateTimeFormat:格式化与解析日期或时间
预定义标准格式:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
方法:ofPattern(String pattern) 静态方法,返回一个指定字符串格式的DateTImeFormat
format(TemporalAccessor t) 格式化一个日期、时间,返回一个字符串
parse(CharSequence text) 将指定的字符序列解析为一个日期、时间
6、Java比较器:
接口对比:Comparable的方法一旦指定,保证Comparable接口实现类的对象在任何位置都可以比较大小;Comparator属于临时比较
Comparable
1、像String、包装类实现了Comparable接口,重写了comparaTo(obj)方法,给出了比较两个对象的大小
2、像String、包装类重写了comparaTo(obj)方法以后进行了从小到大排列
3、重写comparaTo(obj)规则:
当前对象this大于形参obj对象,返回正整数
当前对象this小于形参obj对象,返回负整数
当前对象this等于形参obj对象,返回0
4、对于自定义类来说,如果需要排序,我们可以让自定义类实现Comparable接口,重写comparaTo
在comparaTo(obj)方法中指明如何排序
Comparator:定制排序
1、背景:当元素的类型没有实现Java.lang.Comparable接口而又不方便修改代码,或者实现了Java.lang.Comparable接口排序规则不适合当前的操作,
考虑用COmparator的对象来排序
2、重写compara(Object o1, Object o2)方法,比较o1和o2的大小:
如果方法返回正整数,则表示o1大于o2
如果返回0,表示相等
如果方法返回负数,表示o1小于o2
7、System、Math、BigInteger、BigDecimal类