一.String ——不可变长的字符序列
String:String类表示字符串,java中的所有字符串文字(例“abc”)都实现为此类的实例
底层:jdk8-->字符数组 private final char[]value;
jdk11-->字节数组 private final byte[]value;
String常用的方法
char charAT(int index)返回指定索引处的char值
int codepointAT(int index)返回指定索引处的字符
二.
String:不可变的字符序列 private final byte[] value
StringBuilder:可变的字符序列,线程不安全|不同步
StringBuffer:可变的字符序列,线程安全的|同步
执行效率: StringBuilder>StringBuffer>String
StringBuilder()构造一个字符串构建器,其中不包含任何字符,初始容量为16个字符
(1)StringBuilder sb = new StringBuilder();
扩容:原容量*2+2
StringBuilder
(2)方法:reserse();前后反转abe->eba
与String类型互换
StringBuilder->String
sb.toString(); new String(sb);
String->StringBuilder
new StringBuilder(str);
三.基本数据类型的包装类
基本 引用
byte Byte
short Short
int Integer
long Long
char Character
boolean Boolean
double Double
float Float
有了基本数据类型为什么还要包装类
1.包装类当中提供了一些成员方法,更强大
2.类似容器中只能存储引用数据类型数据,需要包装类
3.基本数据类型与引用数据类型默认值不同
自动拆装箱:jdk1.5
自动装箱:基本->引用 自动拆箱:引用->基本
为什么有了引用数据类型还有基本数据类型
1.有利用节省内存
2.使用更简单方便
总结:int,Integer,new Integer数据比较问题:
要求数据值相等考虑类型,地址等问题
1.两个new比较,肯定不相等,堆中内存地址不同
2.两个int值比较值相等就相等
3.int与Integer比较,无论是否通过new,只要数据值相等就相等,因为会先自动拆箱成基本数据类型比较
4.一个Integer,一个new Integer肯定不相等,new就是堆内存地址,地址肯定不同
5.两个Integer比较,看数值的范围是否在[-128,127]之间,在之间相等,不在之间返回new Integer不相等
四.枚举类型——一种事物的所有可能,一种类型的所有实例
1.enum定义枚举
2.枚举类中的字段都作为当前枚举类型的实例存在,默认public static final 修饰
3.枚举类中可以根据需要定义成员,成员变量,成员方法,构造器...
4.枚举类型中的构造器默认私有的
5.所有的枚举类型默认隐式的继承自java.lang.Enun类型
五.Math类
Math包含用于执行基本数字运算的方法,例如基本指数,对数平方根和三角函数 静态工厂
六.Date——表示特定的时刻,精度为毫秒 时间日期
1.在java.util包下的date,表示一个时间日期精确到ms数
2.Date(long date) 参数为ms数标准基本时间(成为“纪元”)以来的指定毫秒数,即1970年1月1日00:00:00 GMT
SimpleDateFormat 日期格式转换类
java8新增
LocaIDate 日期
LocaITime 时间
LocaIDateTime 年月日时分秒