1.String,StringBuilder,StringBuffer直接的区别?
String 是不可变的字符串,这就导致每次对String的操作,都会生成新的string对象,不仅会浪费资源,还会浪费大量的内存空间
StringBuilder是可变的字符串,线程不安全,执行效率高,单线程操作字符串,是三个字符串中速度最快的
StringBuffer是可变的字符串,线程安全,执行效率低,多线程操作字符串,任何字符串对它操作都不会产生新的对象,每个StringBuilder对都有一定的缓冲区容量
2.基本数据类型和包装类型的作用?
1、包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址;基本类型不是
2、包装类型是引用的传递;基本类型是值的传递
3、声明方式不同:
基本数据类型不需要new关键字;
包装类型需要new在堆内存中进行new来分配内存空间
4、存储位置不同:
基本数据类型直接将值保存在值栈中;
包装类型是把对象放在堆中,然后通过对象的引用来调用他们
5、初始值不同:
int的初始值为 0 、 boolean的初始值为false
包装类型的初始值为null
6、使用方式不同:
基本数据类型直接赋值使用就好;
包装类型是在集合如 coolectionMap时使用、
基本数据类型: 包装类型:
short Short
int Integer
long Long
float Float
char Character
boolean Boolean
自动装箱于自动拆箱:
自动装箱:从基本数据类型->包装类型
自动拆箱:从包装类型->基本数据类型
为什么有了int还要Integer?
1.Integer是引用对象,可以使用更多的方法来操作数据
2.容器等内部只能存储引用数据类型的数据,自动装箱使用可以非常灵活
3.从数据库中拿取数据都是null初始,用int的初始化时0,数据类型不匹配
有了Integer还要int?
1.引用数据类型存储对象类型数据,new在堆内存中,对象数据比较消耗资源,基本数据类型存储在常量池中,对比消耗空间小
并且两者之间转换自动拆箱非常方便
3.自定义异常:当java给我们的异常错误中没有我们需要的异常类时,我们可以自己创建自己需要的异常类
用法:
1.定义一个异常类
2.需要继承Exception类(所有异常父类)
3.重写该异常类的构造方法
4.日期类:当我们需要日期格式时,可以使用日期类
Date 类
类 Date代表一个特定的瞬间,毫秒精度。
用法:new Date();
构造器:
Date() 本地日期对象
Date(long date) 根据毫秒数构建日期对象, 日期的基准时间:1970.1.1…
注意:
java.util.Date 包下的日期类
日期的基准时间:1970.1.1…开始计数
1.但是new Date()出来的时间格式不是我们喜欢的格式时,我们可以自定义时间格式
使用SimpleDateFormat() 使用默认的模板格式进行转换解析
SimpleDateFormat 日期格式转换类
SimpleDateFormat(String pattern) 使用参数指定的模板格式进行转换解析
指定格式模板:
y 年
M 月
d 日
H 24小时
h 12小时
m 分
s 秒
S 毫秒
format(Date) 日期对象转为字符串
parse(String) 字符串转为日期对象
5.枚举类:定义一种事物的所有可能
java中的枚举都是隐性式继承java.lang.Enum
定义枚举类,不用class,用enum关键字来定义
枚举类中的字段,相当于当前枚举类型的一个实例
枚举类中的字段,相当于被public static final 修饰