【Java SE学习】——java中的常用修饰符

修饰符

访问权限修饰符

用于控制一个类的成员是否可以在其他类中访问,不能修饰局部变量

  • private(当前类访问权限):在同一类内可见,只能被所属类访问

  • 无修饰符(包访问权限):不使用任何修饰符时,在同一包内可见

  • protected(子类访问权限):对同一包内的任何其它类和不同包中的子类(不同包中子类: 不同包通过继承获得关系)

    可见,不能修饰接口中的成员变量和成员方法(注意:在不同包中的子类只能通过该子类访问父类中 protected 成员,通过其它子类或父类都无法访问)但是,它不能被其他包中的非子类访问。

  • public(公共访问权限):对所有类可见

非访问修饰符

  • static 用来创建类方法和类变量,类方法不能访问的实例变量
  • final 用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,不可修改
  • abstract 用来创建抽象类、抽象方法
  • synchronized 修饰的方法、代码块在同一时间只能被一个线程访问,不能修饰构造器、成员变量等
  • volatile 修饰的成员变量每次被线程访问时,都强迫从共享内存中重读该成员变量的值;并且,当成员变量发生变化时,强迫线程将变化值回写到共享内存(保证了线程操作时变量的可见性,即一个线程修改了某个变量的值,这新值对其它线程来说是立即可见的)(只能保证内存可见性,无法保证操作的原子性)
  • transient 序列化的对象包含被 transient 修饰的实例变量时,JVM 跳过该特定的变量
  • native 修饰的方法通常采用 C/C++ 语言来实现

final 修饰符

final 修饰的类

  • 表示最终的类,不可被继承的类
  • java 里 final 修饰的类有很多,比如八大基本数据类型包装类和 String 类,也是不可变类(当创建它们的实例后,其实例的实例变量不可改变)

final 修饰的方法

  • 最终的方法,该方法子类可以调用,但不允许被子类覆盖
  • 构造方法不能使用 final 修饰

final 修饰的变量

  • 最终的变量,常量,该变量只能被赋值一次

  • final 修饰的成员变量必须显式指定初始值(定义时、初始化块或构造器中指定),系统不会为 final 字段初始化;静态常量的单词全部大写,单词间使用下划线隔开 final int MAX_VALUE = …;

  • final 是唯一可以修饰局部变量的修饰符

  • final 修饰基本类型的变量,表示该变量不能被重新赋值

  • final 修饰引用类型的变量,表示该变量所引用的地址不能变,而所引用对象的内容可以改变

  • 可执行“宏替换”的 final 变量:当定义 final 变量时就为该变量指定了初始值,编译器会把程序中所有用到该变量的地方直接替换成该变量的值(在编译阶段能确定的内容只能来自于常量池中)

static修饰符

  1. static修饰的成员(类成员:类变量、类方法、静态初始化块、静态内部类)、
    • 随着所在类的加载而加载,优先于该类对象存在
    • 被该类所有对象所共享
    • 可以直接使用类名调用
  2. 无static修饰的成员(实例成员呢:实例变量、实例方法、普通初始化块、示例内部类)
  3. static修饰的成员(属于类)及构造器不能直接访问没有static修饰的成员(属于对象
  4. 局部变量不属于任何类或实例,不能使用static修饰
  5. 不能用来修饰构造器
  6. static修饰的方法中不能使用this或super引用(static强调的是类,this和super强调的是对象)
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值