java基础知识
? 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:某大佬 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |