本文介绍: 将不需要序列化属性添加关键字transient序列化对象的时候,这个属性就不会被序列化。新对象和旧对象成员变量的值一致,新对象中的引用变量指向的对象也是被复制了新对象。新对象和旧对象的成员变量的值一致,引用变量指向的也是同一个对象。
final 
  1. final修饰的类不可以继承
  2. final修改方法可以重写
  3. final修改方法jvm尝试内联,以提高运行效率。
  4. final修改的变量不可变,如果修改的是引用,那么引用可变引用指向的对象内容可变
  5. final修饰常量,在编译期间,会存入常量池中。 
static 
  1. 静态修饰符
  2.  可修饰变量、方法代码块(多用于初始化操作)、内部类、导包。
  3. 静态变量、静态方法静态常量统称为类的静态成员静态成员归整个类所有,不属于某个单一的对象,而是被类的所有实例对象共享
  4. 局部变量不能被声明为静态变量。
  5. 静态方法不能访问非静态成员
  6. 静态方法中不能使用thissuper关键字
  7. 静态方法不能被重写,但可以被继承
  8. 抽象方法不能使用static进行修饰。
abstract 
  1. 抽象修饰符,只能用来修饰类和方法。
  2. 不能修饰私有方法、静态方法final方法和final类。
  3. 抽象类中不一定包含抽象方法,但有抽象方法的类必须是抽象类
  4. 抽象类中可以有0~n个抽象方法,也可以有0~n个具体方法。
  5. 抽象类不能被实例化,一般是由子类进行实例化完成相关操作,声明抽象类的目的主要是为了对该类进行扩展
  6. 抽象方法只有方法的声明,但没有方法体。
  7. 继承抽象类时,必须重写父类中所有的抽象方法,除非自己也是抽象类。
  8. 面向抽象编程使得调用者只须关心抽象方法的定义,而不必关心子类的具体实现
异常 
  1. 运行异常(RuntimeException):RuntimeException及其子类,编译器不会检查属于不可预知的异常。如:ClassCastException,NullPointerException
  2. 检查异常(CheckedException)::Exception本身,以及Exception子类(除运行异常外)都属于检查异常。可以理解编译器检查异常,那么通过throw进行申明抛出,要么通过trycatch捕获处理。如:IOException。
  3. 错误(Error):Error类及其子类,当资源不足、约束失败、或是其他程序无法继续运行条件发生时,就会产生错误程序本省无法修复这些错误。如:OutOfMemoryErro,ThreadDeat。
trycatchfinally  
  1. try负责监控可能出现异常的代码。
  2. catch负责捕获可能出现的异常,并进行处理
  3. finally负责清理各种资源,不管是否出现异常都会执行
  4. 其中 try 块是必须的,catchfinally 至少存在一个标准异常处理流程。 
finally 
  1.  不管有没有异常,finally模块中的代码都会执行
  2. trycatch中有return时,finally任然会执行
  3. return的值是在finally执行前确定的。
  4. finally中最好不要包含return,否则程序会提前退出返回值不是trycatch保存返回值。 
序列化和反序列化
  1. 序列化:将结构数据或对象转化成二进制字节流的过程,便于网络传输存储
  2. 序列化:将在序列化过程中所生成二进制字节转换数据结构或者对象的过程
serialVersionUID
  1. 用于标识序列化版本字段,当一个实现了Serializable接口说明这个类时可以被序列化的,编译器自动生成一个serialVersionUID字段,表示该类的版本号
  2. 当反序列化时,jvm会根据serialVersionUID进行版本检查,如果被反序列数据版本号当前对象的serialVersionUID不一致,则会抛出InvalidClassException,防止反序列化操作成功。
  3. serialVersionUID 允许不同版本的类在一定程度上兼容。当反序列化旧版本的对象时,如果新版本类中删除了某些字段或方法,Java 虚拟机忽略这些字段或方法,而不会引发异常。
  4. 如果需要序列化对象,建议手动显示定义serialVersionUID。
transient 

         将不需要序列化的属性添加关键字transient,序列化对象的时候,这个属性就不会被序列化。

反射机制
  1. 概念:在运行时能够动态获取信息动态调用对象的机制。程序运行时,可以获取任意一个对象所属的类(Class),可以创建任意一个类的对象(Constructor),可以获取任意一个类的属性和方法,可以调用任意一个对象的属性和方法。
  2.  获取方式:Class.forName(类路径)、类名.class、对象名.getClass()、基本类型包装类.type
  3. 优点:提高程序的灵活性。
  4. 确定:反射需要解析字节码,性能较低;相对安全,破坏了封装性,因为反射可以获取对象的私有属性和方法。
拷贝

         新对象和旧对象的成员变量的值一致,引用变量指向的也是同一个对象。

深拷贝 

         新对象和旧对象的成员变量的值一致,新对象中的引用变量指向的对象也是被复制了新对象。

程序进程线程
  1. 程序是含有指令数据文件,被存储磁盘或其他的数据存储设备中,也就是说程序是静态的代码。
  2. 进程程序一次执行过程,是系统运行程序基本单位,因此进程是动态的。
  3. 线程与进程相似,但线程一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
Object的常用方法 
  1. clone保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出CloneNotSupportedException 异常,深拷贝也需要实现 Cloneable,同时其成员变量为引用类型的也需要实现 Cloneable,然后重写 clone 方法。 
  2. finalize:该方法和垃圾收集器有关系,判断一个对象是否可以被回收最后一步就是判断是否重写了此方法。
  3. equals:一般 equals 和 == 是不一样的,但是在 Object 中两者是一样的。子类一般都要重写这个方法。
  4. hashCode:该方法用于哈希查找,重写了 equals 方法一般都要重写 hashCode 方法,这个方法在一些具有哈希功能的 Collection 中用到,一般必须满足 obj1.equals(obj2)==true 。可以推出 obj1.hashCode()==obj2.hashCode() ,但是hashCode 相等不一定就满足 equals。不过为了提高效率,应该尽量使上面两个条件接近等价。
  5. wait:配合 synchronized 使用wait 方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。调用该方法后当前线程进入睡眠状态直到被唤醒、被中断超时
  6. notify:配合 synchronized 使用,该方法唤醒在该对象上等待队列中的某个线程(同步队列中的线程是指抢占 CPU 的线程,等待队列中的线程是指等待唤醒的线程)。
  7. notifyAll:配合 synchronized 使用,该方法唤醒在该对象上等待队列中的所有线程。

原文地址:https://blog.csdn.net/lizsy/article/details/134706307

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_17857.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注