[Java 基础] Java修饰符

简介: [Java 基础] Java修饰符

Java修饰符详解

Java修饰符用于定义类、方法或者变量,修改其行为的关键字。Java语言主要提供了两类修饰符:

  • 访问权限修饰符: default, public , protected, private
  • 非访问权限修饰符: final, abstract, static, synchronized volatile

下面分别来详细介绍。

一、访问权限修饰符

Java定义了四种访问权限,分别是:默认(缺省)、公共(public)、保护(protected)和私有(private)。

1、default (缺省)

在同一包内可被访问,超出该包范围就不可访问。

class MyClass {
    String name;  // 缺省的访问权限
}

2、public

被修饰的类、方法、属性可以在任何地方被访问。

public class MyPublicClass {
    public String name;  // 公共的访问权限
}

3、protected

被其修饰的类、方法、属性可以被同一个包内的其他类、该类的子类以及其他包中的子类访问。

public class MyProtectedClass {
    protected String name;  // 保护的访问权限
}

4、private

被其修饰的类、方法、属性只能被自己访问和修改。

public class MyPrivateClass {
    private String name;  // 私有的访问权限
}

二、非访问权限修饰符

1、final

用于修饰类、方法和变量,final修饰的类不能被继承,修饰的方法不能被覆盖,修饰的变量为常量,必须初始化且不能改变。

public final class MyFinalClass {
    public final void myMethod() {
        final int num = 10;
    }
}

2、abstract

用于创建抽象类和抽象方法。抽象类不能实例化,抽象方法只有方法名,没有方法体,由子类提供方法实现。

public abstract class MyAbstractClass {
    public abstract void myMethod();
}

3、static

主要用于修饰类属性和类方法,可直接通过类调用,无需创建类的实例。

public class MyStaticClass {
    public static int count; 
    public static void myMethod(){}
}

4、synchronized

在多线程环境下,用synchronized修饰的方法或者代码块可以保证同一时间只有一个线程实例执行,保证了线程的安全性。

public synchronized void show() {
    for (int i = 0; i < 5; i++) {
        System.out.println(Thread.currentThread().getName() + " : " + i);
    }
}

volatile

volatile 修饰符用于修饰变量,主要用于保证多线程操作中变量的可见性,即一个线程修改了某个变量的值,新值对于其他线程来说是可以立即得知的。

public class MyVolatileClass {
    public volatile int count; 
}

关键字volatile的内存语义是:当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存;当读一个volatile变量时,JMM会把这个线程对应的本地内存中的共享变量置为无效,线程接下来将从主内存中读取共享变量。

在实际编程中,对于多线程,我们还应配合synchronized关键字,或者java.util.concurrent包下的类库进行使用。

目录
打赏
0
0
0
0
40
分享
相关文章
|
5月前
|
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
134 2
【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?
这篇文章解释了Java能够实现“一次编写,到处运行”的原因,主要归功于Java虚拟机(JVM),它能够在不同平台上将Java源代码编译成的字节码转换成对应平台的机器码,实现跨平台运行。
【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
54 1
【Java基础面试四】、介绍一下Java的数据类型
这篇文章介绍了Java的数据类型,包括8种基本数据类型(整数、浮点、字符、布尔)和3类引用数据类型(数组、类、接口),并提供了基本数据类型所占内存空间和数据范围的详细信息。
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
535 37
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
52 1
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——基础、修饰符和关键字(2023版)
Java的特点和优点,、Java 8的新特性、面向对象、基本数据类型和引用类型、自动拆装箱与自动装箱、==与equals()的区别、为什么重写equals()就要重写hashcode()、抽象类和接口的区别、重载和重写的区别、四种引用方式、wt()和sleep()的区别、java方法是值传递还是引用传递?访问修饰符、static、final、this和super、volatile的用法及原理

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等