标签:get dcl enc 存在 pointer lower 同步 overflow 调用
1、面向对象
1 抽象 封装 多态 继承。、
2 跨平台和垃圾回收 源代码-》字节码-》机器码
3 jre java程序运行环境
4 jdk java开发环境,提供了开发工具,编译器等。
2、Object 类的方法
getclass hashcode equals clone tostring notify notifyall wait finalize
clone() protected 方法,实现对象的潜伏之,只有实现了clonable接口才可以调用该方法。
浅拷贝 指向同一引用
深拷贝 一个改变不会影响另一个。
3 、class类
java对象在运行时生成的对象的类型标识,记录了每个对象所属的类。这些类型标识的类就是Class类。
在运行时提供对象的类型信息,这些信息可以用于反射。
获取一个Class类对象
1 Class类的forName 方法,Class obj=Class.forNmae("ex");
2使用对象的getClass 方法 Class obj= ex.getClass();
3 类的字面常量 Class obj=String.class;
4、接口和抽象类
接口是对行为的抽象,使用implement实现,一个类可以实现多个接口,实现接口的时候必须实重写接口中的所有的方法。
接口中的变量 声明为public static final 方法声明为public abstract 只能申明方法 不能实例化方法
抽象类 是不能实例化的类,使用单继承。可以有非抽象方法,也可以没有抽象方法。
5、String
String是不可变类,是对字符数组的封装,成员变量的字符数组被声明为final,没有提供setvalue方法来修改值,是典型的的不可变类。
字符串的拼接和裁剪都会生成新的对象,影响性能。
StringBuffer 为了解决String不不可变性,通过add和append添加字符串,不会产生新的对象。使用Synchronized保证线程安全
Stringbuilder 由于同步会导致性能下降,所以在不会发生并发的情况下使用StringBuilder。
6 、Integer 和int
int是java的基本数据类型,默认值是0
Integer是java的包装类,默认值是null 需要new
ValueOf()-128 和127之间的数整型会调用缓存机制。
7 、反射
java使用反射机制获取一个类的属性和方法,并生成对象。可以实现动态代理。
获取class对象:object.getClass() class.forName() class.loadClass(),找不到指定类会抛出 classNotFoundException
创建class对象 Class.nexInstance() Class.getConstruct().newInstance()
优点 灵活
缺点 缓慢,访问私有方法不安全 破坏封装性
8 、Error exception
1 都继承自Throwable类。只有throwable类的实例才可以被throw catch
Error: OutOfMemoryError StackOverFlowError
Exception: 程序正常运行中可以被预料的意外情况,可以被捕获并处理
运行时异常:无法让程序回恢复的异常,避免逻辑错误:NullPointerException,classcastException ArrayIndexOutOfBoundsException
受检异常:IOexception 必须显示try catch 或throw,表示程序可以处理的异常
9、泛型
在集合中存储对象,并在使用前进行类型转换时十分不方便的,泛型增加编译时的类型检查,避免运行时的classcastException
10 、序列化
java的序列化的类,要实现Serilizable接口,声明可以进行序列化。
这个接口中不存在方法,只是标识作用。
若要被序列化的类中定义writeObject和readObject方法,使用用户自定义的方法进行序列化,否则使用默认方法进行序列化。
使用Transient关键字控制变量的序列化,在变量声明前加上该关键字,可以阻止被序列化,在反序列化后加上该关键字,将变量赋为初始值。
static 修饰的属性不会被序列化
类的类名和属性会被序列化 方法不会
序列化一个类的时候要保证其属性也可以被序列化
reference:某大佬
标签:get dcl enc 存在 pointer lower 同步 overflow 调用
原文地址:https://www.cnblogs.com/bowenqianngzhibushiwo/p/11643520.html