java学习之路3
这篇是9.18那天的草稿,突然发现还没有发出去,所以抽出几十分钟的时间整理好再发出去吧,这次主要是围绕java里的7个重要关键字的整理,它们分别是transient、instanceof、final、static、this、super、void。接下来我将一一作介绍:
transient
在java里,transient常常用来对某些特定属性进行非序列化(就是不需要对它进行序列化),那么这里就引入了序列化的概念,所以我就再回顾一下序列化的概念:
序列化
参考博客:https://blog.csdn.net/u013256816/article/details/50474678
什么是序列化
serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。
什么时候需要序列化
- 当你想把的内存中的对象保存到一个文件中或者数据库中时候(数据持久化);
- 利用序列化实现远程通信,即在网络上传送对象的字节序列;
如何实现序列化
- 将需要序列化的类实现Serializable接口就可以了,Serializable接口中没有任何方法,可以理解为一个标记,即表明这个类可以序列化.
总之,java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。
instanceof
在java中,instanceof常常被用来测试它左边的对象是否是它右边的类的实例,类以于一个二元运算符,返回的是boolean的数据类型,用法是
boolean result = obj instanceof Class
下面就对常见的几种可能情况进行介绍:
- obj必须是引用类型,基本类型会报错
int i = 0; System.out.println(i instanceof Integer);//编译不通过 System.out.println(i instanceof Object);//编译不通过
- obj为null会永远判断为false
System.out.println(null instanceof Object);//false
- obj为class类的实例对象(最普遍的用法)
Integer integer = new Integer(1); System.out.println(integer instanceof Integer);//true
- obj为Class接口的实现类
ArrayList arrayList = new ArrayList(); System.out.println(arrayList instanceof List);//true
- obj为class类的直接或间接子类
Person p1 = new Person();//父类实例 Person p2 = new Man();//父类引用指向子类实例 Man m1 = new Man();//子类实例 System.out.println(p1 instanceof Man);//false System.out.println(p2 instanceof Man);//true System.out.println(m1 instanceof Man);//true
PS:这里会涉及到类型转换,类型转换抛出的异常会影响返回的结果,具体原因我就不展出了。
final
在java里,final用来表示对象是最终形态的,是不可改变的,常用来修饰类、方法和变量:
- final 用在变量的前面表示变量的值不可以改变,此时该变量可以被称为常量。
- final 用在方法的前面表示方法不可以被重写(子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写,又称为方法覆盖。)。
- final 用在类的前面表示该类不能有子类,即该类不可以被继承。
static
直接给连接吧,static算是一个小point了:https://www.jb51.net/article/192456.htm
- static 是Java中表静态的关键字,本质上是一个修饰符
- 它可以用来修饰成员变量、成员方法、代码块
- 被static修饰的成员变量或成员方法,将不再依赖于对象的创建而去使用,而是依赖类的存在,成为类成员或类方法,是共享的
this
在java中,this主要有两个用法:
- this.方法名称:用来访问本类的成员方法。
- this();访问本类的构造方法;如果()中带有参数,那么就是调用指定的有参构造函数
注意事项:1.this()不能使用在普通方法中,只能写在构造方法中。
2.必须是构造方法里的第一句话,否则会报错。
super
在java里,super主要用来访问父类的构造方法、普通方法和属性,主要功能有:
- 在子类的构造方法里显式的调用父类的构造方法
- 访问父类的成员变量和方法。
void
void的本质是java中一个不可实例化的占位符类,主要用来对函数参数以及函数返回值进行限定。
总结:今天对java里面比较基础的7个关键字进行了总结,我们知道java里面的关键字还有很多很多,它们的用处也是涵盖到了java编程的每个地方,所以在这条java之路上,只会任重而道远。