展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Java重要的关键字有哪些

Java重要的关键字有哪些

1.extends用于类继承类,用法:class+子类名+extends+父类名+{}classAnimal{}//父类classcatextendsAnimal{}//子类用extends实现继承注意:一个类只能用extends关键字声明继承一个父类用于接口继承接口,用法:interface+接口名+extends+接口名+{}interfaceClippers{}interfaceWarriors{}interfaceLakersextendsClippers,Warriors{}//接口类用exte

    1.extends

    • 用于类继承类,用法:class+子类名+extends+父类名+{}

    class Animal{}//父类
    class cat extends Animal{}//子类用extends实现继承

    注意:一个类只能用extends关键字声明继承一个父类

    • 用于接口继承接口,用法:interface+接口名+extends+接口名+{}

    interface Clippers {}
    interface Warriors {}
    interface Lakers extends Clippers,Warriors {}//接口类用extends关键字继承其他接口(可多个)

    注意:

    • 接口不能用extends声明继承别的类

    • 接口只能用extends声明继承别的接口,且可以继承多个接口

    • 当一个类用implements实现了一个接口时,不仅要实现该接口的方法,也要实现该接口继承的接口的方法

    2.implements

    • 用于声明一个类实现了一个接口类,用法:class+类名+implements+接口名+{}

    class Nets implements Clippers,Warriors{}//用implements关键字声明实现了两个接口类

    注意:

    • 一个普通类可以implements关键字声明实现多个接口,但必须实现所有接口中的所有方法

    • 抽象类实现接口,可以不用实现接口的方法(因为抽象类中可以有抽象方法)

    • 意义:可以用implements关键字声明实现多个接口来实现类似多继承

    3.final

    使用方法:

    • 修饰类,使该类不能被继承

    • 修饰方法,使该方法不能被子类重写 (仍可以被继承和调用)

    • 修饰属性,使该属性的值不能被修改(使为常量)

    • 修饰局部变量,使该变量不能被修改(局部常量)

    使用细节:

    final修饰的属性在定义时必须赋初值,且不能修改,可以在以下位置赋初值

    • 定义时(显示初始化)

    • 在构造器中

    • 在代码块中

    static final:全局常量

    • 如果final修饰的属性是静态(static)的,则不能在构造器中赋初值,原因:静态属性要求在类加载时就有初值,而构造器在创建对象时才被调用,所以可能导致调用静态属性时没有创建对象而没有给静态属性赋值

    • final不能修饰构造方法,没有意义

    • 被final和static同时修饰的属性在调用时不会导致类的加载,效率更高

    4.native

    基本介绍:

    native用来修饰方法,被修饰的方法即成为了一个Java调用但非Java代码实现的接口(本地方法) ,该方法在外部可以用任何语言去实现

    "A native method is a java method whose implementation is provided by non-java code."

    使用方法:

    native修饰方法的位置必须在方法返回类型之前,和方法访问修饰符位置没有要求,如:public native int hashCode();

    native细节:

    • native方法没有方法体,也没有{}

    • 用native修饰后的方法不能用abstract修饰,因为abstract指明该方法无实现体,而native方法是有实现体的,只是用非Java代码实现的

    • native方法的返回类型可以是任意类型

    • 如果一个有native方法的类被继承,子类会继承这个native方法,并且可以用java语言重写

    使用JNI(Java Native Interface) 与其他语言交互

    JNI是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互。

    Java重要的关键字有哪些

    使用步骤:

    • 编写带有native方法的java类,生成.java文件

    • 使用javac命令编译生成.class文件

    • 使用javah -jni 类名 生成.h文件

    • 使用C/C++(或者其他编程语言)实现native方法,创建.cpp(或其他)文件

    • 将C/C++编写的文件创建动态链接库(生成DLL文件)

    • native方法中使用System.loadLibrary()方法加载动态库,将DLL文件名作为参数传入,这时候再运行.java程序即可实现对本地方法的调用

    详细步骤参考

    native意义:

    Java无法直接访问到操作系统底层(如系统硬件),但通过使用native关键字修饰方法可以借用其他的语言来扩展Java程序的功能,提高程序的效率

    5.static

    修饰变量,成为静态变量或者类变量

    • 使用方法:访问修饰符+``static``+数据类型+变量名

    注意事项:

    • 静态变量会被类的所有对象实例所共享,并且在类加载的时候就会初始化。

    • 静态变量的访问方法(遵守相关访问权限):类名.静态变量名 或者 对象名.静态变量名

    修饰方法,成为静态方法或者类方法

    • 使用方法:访问修饰符+``static``+返回数据类型+方法名+{}

    注意事项:

    • 调用方法(遵守相关访问权限):类名.静态方法名 或者 对象名.静态方法名

    • 静态方法和普通方法都是随着类加载而加载,将结构信息存储在方法区

    • 静态方法中不允许使用this和super关键字

    • 静态方法中只能访问静态变量和静态方法

    • 普通方法可以访问静态成员和普通成员

    • 修饰代码块,成为静态代码块:

    静态代码块会在类加载时被加载,优先级和静态属性一样,有多个静态代码块和静态属性时,初始化顺序按定义顺序执行

    好处:static关键字的使用,将类中的一些成员修饰成静态的,这样我们不需要创建该类的对象就可以调用该成员,大大提高了编程效率

    6.transient

    基本介绍:

    transient用于修饰实现了Serilizable接口的类中的成员变量,在该类的实例对象进行序列化处理时,被transient修饰的成员变量不会进行序列化。

    使用例子:

    import java.io.FileOutputStream;
    
    import java.io.IOException;
    
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    public class outStream {
        public static void main(String[] args) throws IOException {
            String filePath = "d:\Cat.txt";
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath));
            oos.writeObject(new Cat("小花猫", 3));
            oos.close();
        }
    }
    class Cat implements Serializable {
        private String name;
        private int age; //没有用transient修饰
        public Cat(String name, int age) {
            this.name = name;
            this.age = age;
        }
        @Override
        public String toString() {
            return "Car{" +
    
                    "name='" + name + ''' +
    
                    ", age=" + age +
    
                    '}';
        }
    }
    public class inStream {
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            String filePath = "d:\Cat.txt";
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath));
            System.out.println(ois.readObject());
            ois.close();
        }
    }

    Java重要的关键字有哪些

    Java重要的关键字有哪些

    可以在Cat.txt文件内看到两个成员变量都能被序列化,并且能被反序列化读出信息。

    当小花猫觉得自己的年龄是隐私不想被读出时,用transient修饰成员变量age:

    ......
    private String name;
    private transient int age; //使用transient修饰
    ......

    Java重要的关键字有哪些

    Java重要的关键字有哪些

    这时在Cat.txt文件中可以看到只有name一个成员变量被序列化,反序列化后的成员变量age读出的是int类型的默认值,说明对于transient修饰的成员变量,在类的实例对象序列化的过程中会被忽略

    transient细节

    • 对transient修饰的成员变量可以理解为:不会参与进行对象的序列化和反序列化过程,生存周期仅存于调用者的内存而不会写进磁盘里进行持久化

    • static修饰的成员变量(静态变量)也是不可序列化的,不论被transient修饰与否

    因为序列化是保存的实例对象的状态,而静态变量保存的是类的状态

    • transient关键字只能修饰变量,不能修饰方法和类

    • transient关键字不能修饰局部变量

    • 如transient关键字修饰的是自定义类的变量,则该类需要实现Serilizable接口

    注意:

    实现Serilizable接口的类的实例对象是自动进行序列化的,如果序列化对象的类实现的是Externalizable接口,则序列化不会自动进行,需要实现接口内的方法指定要序列化的变量,这时与有无Transient修饰无关

    7.synchronized

    基本介绍:

    关键字synchronized可以保证在同一时刻,只有一个线程可以执行被synchronized修饰的方法或代码块

    线程同步:

    程序中多个线程都要使用同一个方法,而这个方法用synchronized进行了修饰,在多个线程调用这个方法时必须遵循同步机制

    线程同步机制:

    当一个线程使用synchronized修饰的方法时,其他线程想使用这个方法时就必须等待,直到这个线程使用完synchronized方法

    synchronized使用方法:

    • 普通同步方法:public synchronized void m () {}

    public class syn implements Runnable {
        static int i = 0;
        public static void main(String[] args) throws InterruptedException {
            syn test = new syn();
            Thread t1 = new Thread(test);
            Thread t2 = new Thread(test);
            t1.start();
            t2.start();
        }
        public synchronized void increase() {//被synchronized修饰的同步方法
            System.out.println(Thread.currentThread().getName() + "调用:" + i++);
    
        }
        @Override
        public void run() {
            for (int j = 0; j < 100; j++) {
                increase();
            }
        }
    }

    Java重要的关键字有哪些

    两个线程同时调用一个对象的一个同步方法,由于一个对象只有一把锁,所以只有一个线程能够获得该对象的锁,另一个线程无法获得,就不能调用该对象的synchronized方法,需要等对象被释放后才能调用。

    从运行结果中可以证明线程1抢到了锁,线程0必须等待线程1执行完毕,否则不能访问该同步方法。

    • 静态同步方法:public static synchronized void m () {}

    public class syn implements Runnable {
        static int i = 0;
        public static void main(String[] args) throws InterruptedException {
            syn test = new syn();
            syn test1 = new syn();
            Thread t1 = new Thread(test);//传入实例对象test
            Thread t2 = new Thread(test1);//传入实例对象test1
            t1.start();
            t2.start();
        }
        public static synchronized void increase() {//同步静态方法
            System.out.println(Thread.currentThread().getName() + "调用:" + i++);
        }
        @Override
        public void run() {
            for (int j = 0; j < 100; j++) {
                increase();
            }
        }
    }

    Java重要的关键字有哪些

    虽然两个线程实例化了两个不同的对象,但是synchronized修饰的是静态方法,两个线程仍然发生了互斥,因为静态方法是依附与类的而不是对象,线程1先抢到了类的锁,而线程0必须等待线程1执行完毕释放才能调用同步方法

    • 同步代码块:synchronized(object) {}

    public class syn implements Runnable {
        static Object object = new Object();//共享对象
        public static void main(String[] args) throws InterruptedException {
            syn test = new syn();
            syn test1 = new syn();
            Thread t1 = new Thread(test);
            Thread t2 = new Thread(test1);
            t1.start();
            t2.start();
    
        }
        @Override
        public void run() {
            synchronized (object) {//代码块用静态成员变量上锁
                for (int j = 0; j < 100; j++) {
                    System.out.println(Thread.currentThread().getName() + "调用第" + j + "次");
                }
            }
        }
    }

    Java重要的关键字有哪些

    同步代码块用两个实例变量共享的静态成员object对象来上锁,虽然是两个线程实例化两个不同的对象,但是对整个syn类来说只有一个共享的object对象,所以只有一把锁,每当有线程来访问代码块时需持有锁,对象锁被其他线程持有时需等待。线程1需要等线程0执行完毕才能访问同步代码块

    同步的局限性:

    由于同步的方法或代码块只能同一时间让一个线程访问,所以会导致程序的执行效率降低

    尽可能让synchronized修饰的范围最小化,来减少互斥对程序执行带来的影响

    8.volatile

    基本介绍:

    volatile用于修饰变量,用volatile修饰的变量的值被某个线程修改时,会强制将修改的值立即写入主存中,主存中的值更新会使得缓存中的该变量的值失效,对比与非volatile变量,可能会被其他线程读取到更新前的值。

    使用方法:

    //现在有线程1和线程2同时执行下列代码
    int i = 0;
    i = i + 1;

    执行完毕后预想的结果是 i = 2;但是可能存在这样一种情况:两个线程先同时把i的值读取到自己的工作内存中,然后再分别执行 i = i + 1 的操作,再将结果写入主存,这样两个线程写入的都是 i = 1,最终 i 的结果是 1 ,而不是 2

    但如果 i 是 volatile 修饰的变量就会不一样了,在一个线程修改 i的值后,会立即强制在主存中更新 i 的值,这样会导致另一个线程的工作内存中 i 的缓存值无效,所以另一个线程再次从主存中读取新的 i 的值,这样保证了i的值是最新并正确的

    并发编程的三大概念:

    • 原子性:执行一个操作时,要么全部步骤执行完毕且不被中断,要么就不执行

    x = 100;//是原子性操作
    y = x;//不是原子性操作,可分解为:1.先读取x的值    2.将x的值写入主存
    x ++;//不是原子性操作,可分解为:1.读取x的值    2.进行加一操作    3.写入主存
    • 可见性:多个线程对同一个变量进行操作时,一个线程修改了变量的值,其他线程能立即看到修改的值

    • 有序性:程序执行的顺序按照代码的先后顺序执行

    volatile的意义

    • 保证了不同线程对变量进行修改时的可见性:因为对于volatile变量来说,被修改后新值对其他线程来说是立即可见的

    • 保证了有序性:volatile禁止了指令重排,它能保证在对volatile修饰的变量进行操作时,之前的代码语句已经全部被执行,并且后面的语句都未执行,但是对其他语句的顺序是不做保证的

    注意: volatile不能保证原子性,因为不能保证对变量的操作是原子性操作

    9.this

    • 在方法中修饰属性,this理解为当前对象,用来区别成员方法和形参,通常省略

    • 修饰方法,this理解为当前对象,通常省略;不能在静态方法中使用

    • 调用构造器,在构造器中使用this(形参列表)显式调用指定的其他构造器

      • 必须在首行调用其他构造器

      • 一个构造器中不能调用多个其他构造器

      • 不能在构造器中调用递归调用,不能成环调用

    10.super

    super可以理解为:父类的

    • 修饰属性:去父类中找对应属性,用来区分子父类重名的属性

    • 修饰方法:调用重写之前的方法

    • 调用构造器:使用super(形参列表)指定调用父类构造器

      • super(形参列表)必须放在构造器的首行

      • super(形参列表)和this(形参列表)只能二选一

      • 在构造器首行如果没有显式声明super(形参列表)或this(形参列表)则默认调用父类的空参构造器super()(如果此时父类中没有空参构造器就会报错)

    • 不能在静态方法中使用

    当一个方法和属性被static属性修饰时,这些方法和属性是优先于对象加载进入内存的,是随着类的加载而加载的;this是当前对象的引用,super是指父类的引用,当静态方法加载进内存进栈时,如果在静态方法中有this和super关键字时,this和super也被加载到了内存,但是这个时候并没有对象的引用,this和super没有初始化,所有编译会报错。

    10.1.子类对象实例化的过程

    Java重要的关键字有哪些

    11.访问修饰符

    Java重要的关键字有哪些

    public修饰类:

    • 一个类中最多只能有一个public类,且文件名要和public类一致

    • 如果没有public类,文件名可以任意

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Java
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    WPS Office macOS版
    WPS Office macOS版

    WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,

    Shapr3D macOS版
    Shapr3D macOS版

    Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。

    REAPER macOS版
    REAPER macOS版

    REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

    Ableton Live macOS版
    Ableton Live macOS版

    Ableton Live 是面向音乐制作人与现场表演者的数字音频工作站,提供编曲视图、独具特色的现场视图、音频录制、MIDI创作、实时变速、乐器及效果器。Mac版原生支持Apple芯片,并可连接音频接口、MIDI控制器和第三方插件。

    Adobe After Effects macOS版
    Adobe After Effects macOS版

    Adobe After Effects 是面向动态图形、影视特效与视频合成的专业创作软件。它提供关键帧动画、遮罩抠像、运动跟踪、三维空间、文字动画和表达式等工具,并可与 Premiere Pro、Photoshop、Illustrator

    Adobe Audition macOS版
    Adobe Audition macOS版

    Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

    Adobe Bridge macOS版
    Adobe Bridge macOS版

    Adobe Bridge 是面向摄影师、设计师及内容团队的免费数字资产管理工具,可集中预览照片、视频和 Adobe 项目文件,并利用评级、标签、关键词、元数据、筛选与收藏集完成分类检索。它还支持批量重命名、格式导出、相机导入及 Camera

    Adobe Illustrator macOS版
    Adobe Illustrator macOS版

    Adobe Illustrator 是 Adobe 推出的专业矢量图形设计软件,适合在 Mac 上制作标志、图标、插画、包装、信息图及印刷版面。它以路径和锚点构建可无损缩放的图形,并提供钢笔、形状、文字、图像描摹、渐变、画板及生成式功能。

    Adobe InDesign macOS版
    Adobe InDesign macOS版

    Adobe InDesign 是面向印刷品与数字出版物的专业版面设计软件,可在 Mac 上制作书籍、杂志、宣传册、海报、报告及交互式文档。它提供精细的文字样式、网格、母版、长文档管理和印前输出能力。

    Adobe Lightroom Classic macOS版
    Adobe Lightroom Classic macOS版

    Adobe Lightroom Classic 是面向桌面摄影工作流的照片管理与后期处理软件,可将原始照片保存在本地硬盘,通过目录、关键词、评分和收藏夹高效整理图库,并提供 RAW 冲印、蒙版、镜头校正、批量同步及多格式导出等功能。

    Adobe Media Encoder macOS版
    Adobe Media Encoder macOS版

    Adobe Media Encoder 是 Adobe 推出的专业音视频编码与转码工具,可通过队列、预设和监视文件夹批量完成格式转换、代理文件创建及多平台成片输出,并与 Premiere Pro、After Effects 等软件紧密协作。

    Adobe Photoshop macOS版
    Adobe Photoshop macOS版

    Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理软件,提供图层、蒙版、选区、修复、调色、文字排版、智能对象及生成式编辑等能力。Mac 版支持 Intel 与 Apple Silicon 处理器。

    WINDOWS 更多
    Adobe Photoshop Windows版
    Adobe Photoshop Windows版

    Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理工具,可在 Windows 上完成照片修饰、选区抠图、图层合成、文字排版、绘画及生成式编辑。软件采用订阅授权,由 Creative Cloud 管理安装、更新与许

    Adobe InDesign Windows版
    Adobe InDesign Windows版

    Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator

    Adobe Illustrator Windows版
    Adobe Illustrator Windows版

    Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。

    Adobe Bridge Windows版
    Adobe Bridge Windows版

    Adobe Bridge 是 Adobe 推出的创意资产管理工具,可集中预览、分类和查找照片、视频、PDF及多种设计文件,并支持元数据、关键词、评级、批量重命名和格式导出。它可与 Photoshop、Illustrator 等应用衔接,

    Affinity Photo Windows版
    Affinity Photo Windows版

    Affinity Photo 是一款面向摄影师、修图师和视觉设计人员的桌面图像编辑工具,提供 RAW 显影、多图层合成、蒙版、实时滤镜、批处理和色彩管理等功能。原独立产品已停止销售,其照片编辑能力已延续至免费的新 Affinity 应用;

    Adobe Lightroom Classic Windows版
    Adobe Lightroom Classic Windows版

    Adobe Lightroom Classic 是面向 Windows 桌面摄影工作流的照片管理与无损编辑工具,可通过目录集中整理大型图库,并完成 RAW 显影、局部蒙版、批量调整、打印和多格式导出。它强调本地文件管理与精细控制,

    Figma Windows版
    Figma Windows版

    Figma 是面向产品设计与开发团队的云端协作平台,可在 Windows 桌面客户端中完成界面绘制、组件管理、交互原型、评论评审和开发交付。文件保存在云端,多名成员能够同步编辑并共享设计系统;官方同时提供免费 Starter 方案及按席位计

    Affinity Designer Windows版
    Affinity Designer Windows版

    Affinity Designer 是面向矢量图形、数字插画和界面设计的专业创作工具,可在矢量、像素与导出工作区之间快速切换。它提供曲线编辑、形状构建、画板、排版、图层和专业色彩管理,并支持常见设计文件的导入及多种印刷、网页格式输出。

    Capture One Pro Windows版
    Capture One Pro Windows版

    Capture One Pro 是面向摄影师和影像团队的专业桌面照片处理工具,提供相机定制色彩配置、RAW转换、图层与蒙版、联机拍摄、目录及会话管理等功能。它适合棚拍、人像、商业产品、婚礼和风光摄影,

    Adobe Acrobat Pro Windows版
    Adobe Acrobat Pro Windows版

    Adobe Acrobat Pro 是面向专业 PDF 工作的综合解决方案,可在 Windows 中创建、编辑、转换、比较、整理和保护文档,并支持表单、电子签名、扫描件文字识别及敏感信息永久遮盖。订阅还包含网页、移动服务和云端协作能力,

    Adobe After Effects Windows版
    Adobe After Effects Windows版

    Adobe After Effects 是面向动态图形、动画与影视视觉特效制作的专业工具,可完成关键帧动画、图层合成、遮罩跟踪、抠像、文字动画和二维三维元素整合。Windows 版通过 Adobe Creative Cloud 安装及更新,

    DaVinci Resolve Windows版
    DaVinci Resolve Windows版

    DaVinci Resolve是Blackmagic Design推出的一体化影视后期工具,将素材管理、非线性剪辑、专业调色、Fusion视觉特效、Fairlight音频处理和成片交付整合在统一工程中。免费版已覆盖多数个人创作需求,