「这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战」。
1.JAVA 8个数据类型
byte short int long float double boolean char
2.序列化作用?、什么是序列化?、什么是反序列化?
作用 : 是将对象的状态信息转换为可以存储或传输的形式的过程。 在序列化期间,对象将其当前状态写入到临时或持久性存储区。 以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
序列化 : 是指把Java对象转换为字节序列的过程
反序列化: 是指把字节序列恢复为Java对象的过程
3.Java常用编码规范
常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以它要测试的类的名称开始,以Test结尾
POJO类中布尔类型的变量,都不要加is前缀,否则部分框架解析会引起序列化错误
接口类中的方法和属性不要加任何修饰符号
对于Service和DAO类,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl的后缀与接口区别
ThreadLocal无法解决共享对象的更新问题,ThreadLocal对象建议使用static修饰
final可以声明类、成员变量、方法、以及本地变量
4.ava创建对象的几种方式
1.用new语句创建对象,这是最常用的创建对象的方式。
2.运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
3.调用对象的clone()方法。
4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法.
5.深克隆和浅克隆的区别
浅克隆不会克隆对象中嵌套的对象,只会克隆对象第一级的内容。
深克隆可以将嵌套的对象进行复制
6.Java的反射的优缺点和应用场景
优点:
1.提高了 Java 程序的灵活性和扩展性,降低耦合性,提高自适应能力。
2.允许程序创建和控制任何类的对象,无需提前硬编码目标类
3.应用很广,测试工具、框架都用到了反射 缺点:
1.性能问题:反射是一种解释操作,远慢于直接代码。因此反射机制主要用在对灵活性和扩展性要求很 高的系统框架上,普通程序不建议使用
2.模糊程序内部逻辑:反射绕过了源代码,无法再源代码中看到程序的逻辑,会带来维护问题
3.增大了复杂性:反射代码比同等功能的直接代码更复杂
使用场景:
编译时无法知道该对象或类可能属于哪些类,程序在运行时获取对象和类的信息
7.准备一个设计模式特点、应用场景、优缺点
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。 优缺点:
优点: 1.在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是相同的一个实例。这样就 防止其它对象对自己的实例化,确保所有的对象都访问一个实例
2.单例模式具有一定的伸缩性,类自己来控制实例化进程,类就在改变实例化进程上有相应的伸缩性。 3.提供了对唯一实例的受控访问。
4.由于在系统内存中只存在一个对象,因此可以 节约系统资源,当 需要频繁创建和销毁的对象时单例模式无疑可以提高系统的性能。
5.允许可变数目的实例。
6.避免对共享资源的多重占用。
缺点:
1.不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。 2.由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。
3.单例类的职责过重,在一定程度上违背了“单一职责原则”。
4.滥用单例将带来一些负面问题,如为了节省资源将数据库连接池对象设计为的单例类,可能会导致共享连接池对象的程序过多而出现连接池溢出;如果实例化的对象长时间不被利用,系统会认为是垃圾而被回收,这将导致对象状态的丢失。
适用场景:
单例模式只允许创建一个对象,因此节省内存,加快对象访问速度,因此对象需要被公用的场合适合使用,如多个模块使用同一个数据源连接对象等等。如:
1.需要频繁实例化然后销毁的对象。
2.创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
3.有状态的工具类对象。
4.频繁访问数据库或文件的对象。
8.String和StringBuffer和StringBuilder的区别
StringBuffer(线程安全)如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer
9.String为什么是final修饰的
主要是为了”安全性“和”效率“的缘故。
final修饰的String,代表了String的不可继承性.
但是:虽然final代表了不可变,但仅仅是引用地址不可变,并不代表了数组本身不会变.