java中值得注意的细节
来源:互联网 发布:电脑为什么找不到网络 编辑:程序博客网 时间:2024/05/16 18:02
1、访问控制修饰符相关
被public修饰的可见性:当前类、同一包内、子类、其他包均可见。
被protected修饰的可见性:当前类、同一包内、子类
被private修饰的可见性:当前类
没有修饰符修饰(Default):当前类、同一包内
2、transient修饰符
被该修饰符修饰的变量序列化时,JVM虚拟机会忽略该变量,不会被序列化。
3、volatile修饰符
volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
public class MyRunnable implements Runnable{ private volatile boolean active; public void run() { active = true; while (active) // 第一行 { // 代码 } } public void stop() { active = false; // 第二行 }}
上面的例子中,通常情况下,在一个线程调用run()方法(在 Runnable 开启的线程),在另一个线程调用 stop() 方法。如果第一行中缓冲区的 active 值被使用,那么在第二行的active值为 false 时循环不会停止。
但是以上代码中我们使用了 volatile 修饰 active,所以该循环会停止。
4、final修饰符
(1)final修饰变量
final修饰的变量,其值只能被初始化一次,即无法更改变量的值;final修饰的对象,其引用不能被更改,但是对象内部的值可以被改变。
(2)final修饰的方法
final修饰的方法可以被子类继承,但是不能被子类修改。
(3)final修饰的类
final修饰的类不能被继承
5、重载(Overload)
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
重载规则:
(1)被重载的方法必须改变参数列表(参数个数或类型或顺序不一样);
(2)被重载的方法可以改变返回类型;
(3)被重载的方法可以改变访问修饰符;
(4)被重载的方法可以声明新的或更广的检查异常;
(5)方法能够在同一个类中或者在一个子类中被重载。
(6)无法以返回值类型作为重载函数的区分标准。
6、多态存在的三个必要条件
(1)继承
(2)重写
(3)父类引用指向子类对象
注意的点:
一、使用父类类型的引用指向子类的对象;
二、该引用只能调用父类中定义的方法和变量;
三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用);
四、变量不能被重写(覆盖),”重写”的概念只针对方法,如果在子类中”重写”了父类中的变量,那么在编译时会报错。
7、抽象类总结规定
(1) 抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
(2) 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
(3)抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
(4)构造方法,类方法(用static修饰的方法)不能声明为抽象方法。
(5) 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
8、接口Interface
(1)接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
(2)一个接口可以继承另一个接口
(3)接口允许多重继承,如:public interface A extends B,C,D
- Java中值得注意的细节1
- Java中值得注意的细节2
- java中值得注意的细节
- Java的File类中值得注意的细节问题
- java中值得注意的
- C++中值得注意的细节地方(逐步更新中)
- java中值得注意的问题
- java中泛型使用中值得注意的几个问题
- [Java]泛型中值得注意的点
- [Java]集合框架中值得注意的点
- ATL中值得注意的C++技术
- struts中值得注意的小知识点
- ajax中值得注意的地方
- Javascript中值得注意的用法
- PHP开发中值得注意的几个问题
- mysql手册中值得注意的知识点
- Thread类中值得注意的方法
- html中值得注意的一点事
- 第三次实验++个人所得税
- 第六天
- logstash系列(1)
- Linux 内核的同步机制,第 2 部分
- Java温习——基础工具之编码规范
- java中值得注意的细节
- (css)网页布局
- MVVM_Xamarin StartApp工程
- ubuntu linux 连接vpn服务器(pptpd)
- vue
- Linux 网络基础知识之OSI七层模型和TCP/IP四层模型
- 用正则表达式,把一句话中的带有某个单位的数字扣出来
- 深度学习物体检测(三)——FAST-RCNN
- Tomcat配置与优化