Java基础-修饰符
来源:互联网 发布:大数据的实践包括哪些 编辑:程序博客网 时间:2024/06/08 15:18
- 一 修饰符是什么
- 二 修饰符分类
- 1 访问修饰符
- 2 非访问修饰符
- 三 修饰符的使用
- 1 使用范围
- 2 顺序
- 四 参考链接
- 2017年10月23日
初次整理修饰符内容
一、 修饰符是什么
修饰符用来修饰类、方法或者变量。可以使用访问修饰符来保护对类、变量、方法和构造方法的访问,也可以使用其他非访问修饰符来实现一些其他功能。
二、 修饰符分类
2.1 访问修饰符
访问修饰符用于确定其他类是否可以使用特定字段或调用特定方法。
- public:表示任何类均可访问。
- default:缺省,即什么都不写。表示在同一个包的类均可访问。
- protected:表示同一个包的类均可访问,其他包中该类的子类也可以访问。
- private:表示直有该类自己可以访问。
2.2 非访问修饰符
非访问修饰符用于实现一些特定的功能。
以下是非访问修饰符的一些简要介绍,*表示较少使用。
static
静态变量
static用来修饰一个类变量时,该类变量被称为静态变量。静态变量表示无论一个类实例化多少对象,它的静态变量只有一份拷贝。另外局部变量不能够被static修饰。public class StaticTest1 { public static int DEFAULT_VALUE = 1; public static void main(String[] args) { //[out]: 1 System.out.println(StaticTest1.DEFAULT_VALUE); //[error]: modifier 'static' not allowed here //static int i = 1; }}
静态方法
static用来修饰一个类方法时,该类方法被称为静态方法。静态方法表示该方法属于声明它的类。public class StaticTest2 { public static String staticMethodName() { return "static method"; } public static void main(String[] args) { //[out]: static method System.out.println(StaticTest2.staticMethodName()); StaticTest2 s = new StaticTest2(); //[out]: static method //[hint]: static member accessed via instance reference System.out.println(s.staticMethodName()); }}
final
final变量
final 变量能被显式地初始化并且只能初始化一次。被声明为 final 的对象的引用不能指向不同的对象。但是 final 对象里的数据可以被改变。也就是说 final 对象的引用不能改变,但是里面的值可以改变。public class FinalTest1 { public static void main(String[] args) { final int i = 1; //[error]: cannot assign a value to final variable 'i' //i = 2; }}
final方法
final方法可以被子类继承,但是不能被子类修改。- final类
final类不能够被继承。
abstract
抽象方法
抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。public abstract class AbstractTest1 { public void nonAbstractMethod() {} public abstract void abstractMethod();}
抽象类
抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。另外抽象类中允许存在非抽象的方法。
- synchronized
- synchronized声明的方法同一时间只能被一个线程访问。也就是说如果某一个任务处于对一个synchronized方法的调用中,那么在这个线程从该方法返回前,其他所有调用该类中任何标记为synchronized方法的线程都会被阻塞。
- volatile
- volatile确保了应用中的可视性,如果一个域被声明为volatile的,那么只要对这个域产生了写操作,那么所有的读操作就都可以看到这个修改。
但是值得注意的是,使用volatile而不是synchronized的唯一安全的情况是类中只有一个可变域。所以第一选择应该是synchronized,这是最安全的方式。
- volatile确保了应用中的可视性,如果一个域被声明为volatile的,那么只要对这个域产生了写操作,那么所有的读操作就都可以看到这个修改。
- transient*
- 序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
简而言之就是被transient修饰的实例变量,不会被序列化与反序列化。
- 序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
- native*
- native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。
- strictfp*
- strictfp代表FP-strict,表明精确浮点数。
使用了strictfp来声明一个 类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确, 而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。
- strictfp代表FP-strict,表明精确浮点数。
三、 修饰符的使用
3.1 使用范围
注:
1. 对类使用static的情况仅在内部类中出现。
2. 对接口使用abstract并没有什么实际意义,因为接口中的方法默认为public abstract的。
3.2 顺序
修饰符的顺序并没有强制要求,但是有一定的习惯顺序,形成了现在的规范。
在google的习惯用法中有如下顺序:
public / protected / private
abstract
static
final
transient*
volatile
synchronized
native*
strictfp*
四、 参考链接
- JavaTree
http://javatree.cn/chapter/e4f0c1e42cab4801898a39f15c034b8e?roadmapId=b316fff599244da3864913bb064f90b5 - 《Google Java Style Guide》
https://google.github.io/styleguide/javaguide.html#s4.8.7-modifiers
- Java基础:修饰符
- Java基础-修饰符
- Java基础-修饰符
- 【Java基础】Java修饰符
- Java基础----权限修饰符
- Java基础:访问修饰符
- Java基础之修饰符
- Java基础--访问修饰符
- java基础--------final 修饰符
- Java基础------访问修饰符
- java基础-final修饰符
- Java基础 - 常见的权限修饰符
- JAVA 基础 关键修饰符及说明
- Java基础之数据类型、修饰符、数组
- Java基础之修饰符与关键字
- java基础三:访问修饰符
- java基础之访问修饰符
- JAVA百科---[基础篇]修饰符
- Element.requestFullScreen() -- 全屏显示
- 文章标题
- Remote connection by VNC in CentOS 7
- RTF文件格式研究报告
- theano学习--conv2d
- Java基础-修饰符
- windows音频声卡采集
- java正则表达式的matcher
- 垃圾回收(三)-gc模块
- clnt_call(3)
- 网易AI英雄风云榜评选:谁是2017 年AI人物 TOP 10? | 评选
- 谷歌推出AVA数据库:让机器识别视频中人类行为 | 研究
- SSM综合项目实战(TTSC) -- day08 单点登录,注册登录,jsonp
- 五分钟搞懂并查集