【2023,学点儿新Java-23】初步了解Java中的修饰符:static及其作用、native特性、final的理解

news2024/9/20 9:35:57

前情回顾:

  • 【2023,学点儿新Java-22】Java中package的作用是什么 | Java中import的用法 | Java中的权限修饰符:private、protected、public
  • 【2023,学点儿新Java-21】Java中default的语法格式 | 父类私有的方法能被重写吗?| 详解:this的用法、super的用法 | new在创建对象和数组时分别做了什么?
  • 【2023,学点儿新Java-20】流程控制语句关键字及其介绍:while、do、break、continue、return
  • 更多Java系列文章,可参阅博主主页哦!

 
“上敬战死的英灵”,

“下敬涂炭的生灵”,

“中间的敬,人世间的良心”。

——《我的团长我的团》

 

🎯作者主页: 追光者♂🔥

        

🌸个人简介:
 
💖[1] 计算机专业硕士研究生💖
 
🌟[2] 2022年度博客之星人工智能领域TOP4🌟
 
🏅[3] 阿里云社区特邀专家博主🏅
 
🏆[4] CSDN-人工智能领域优质创作者🏆
 
📝[5] 预期2023年10月份 · 准CSDN博客专家📝  
 

  • 无限进步,一起追光!!!

        

🍎感谢大家 点赞👍  收藏⭐   留言📝!!!

        

🌿本篇初步介绍了Java中的其它修饰符,具体先介绍了static、native以及final这三个修饰符,即它们所修饰的内容以及其各自的特性。注:此处不要求完全掌握,在后面的讲解中也会进一步深化对这些修饰符的理解!(其余修饰符,下一篇会继续介绍~~)

🕝目录

  • 🍄一、Java中的其他修饰符
    • 🍑1.1 static:静态的
      • 💧1.1.1 初步介绍
      • 💧1.1.2 进一步介绍
    • 🍑1.2 native:原生的
      • 💧1.2.1 初步介绍
      • 💧1.2.2 进一步介绍
    • 🍑1.3 final:最终的
      • 💧1.3.1 初步介绍
      • 💧1.3.2 进一步介绍

🍄一、Java中的其他修饰符

🍑1.1 static:静态的

💧1.1.1 初步介绍

static静态的,可以修饰成员变量、成员方法、代码块、成员内部类

  • (1)成员变量,属性: static修饰的成员变量称为“类变量,或静态变量”,它的值是该类所有对象的共享的,存储在方法区,它的get/set方法也是静态的,如果在静态方法中,类变量与局部变量重名时,使用“类名.”进行区别。

  • (2)成员方法: static修饰的成员方法称为“类方法,或静态方法”,它不能被重写,可以被继承,调用它可以用“类名.”进行调用,在静态方法中,不能出现this,super,不能直接使用本类的非静态的属性、非静态的方法、非静态的成员内部类。

  • (3)代码块: static修饰的代码块称为“静态代码块”,它是在类初始化时执行,因为它的代码会被编译器合并到()类初始化方法中,它只执行一次,子类的初始化时,如果发现父类没有初始化,会先初始化父类。

  • (4)成员内部类static修饰的成员内部类称为“静态内部类”,静态内部类中可以包含静态成员;静态内部类 在外部类外面使用时,使用“外部类名.静态内部类"即可。

语法格式:

【修饰符】 class{
【修饰符】 static 数据类型 静态变量;
 
  static{
    静态代码块;
 }
 
  【修饰符】 static 返回值类型 方法名(【形参列表】)throws 异常列表】{
   
 }  
 
  【修饰符】 static class 静态内部类{
   
 }
}  

 

💧1.1.2 进一步介绍

在Java中,static是一种修饰符,用于修饰类的成员变量和成员方法,它可以使得 被修饰的成员变量和成员方法 不与任何对象关联,而是与类关联,也就是说,它们不属于任何对象,是类公用的。被static修饰的成员也叫类变量和类方法

其中,

  • 类变量属于类,是所有对象共享的,只占用一份内存空间;
  • 而成员变量属于对象,每个对象都会有自己的一份拷贝;

类方法也属于类,不依赖于任何对象,可以直接通过类名调用,而非对象引用。

以下是一个使用static修饰符的示例,其中包含一个类变量 和一个类方法

public class Example {
    public static int count = 0; // 类变量

    public static void increment() { // 类方法
        count++;
    }
}

在上面的示例代码中,count类变量 是所有Example类的对象共用的,increment方法中使用了count变量并将其自增,而该方法不依赖于任何对象,可以直接通过Example.increment()方法来调用,而不是对某个对象进行调用。

我们也可以通过对象来访问类变量(不过这并非标准做法),例如:

Example ex1 = new Example();
ex1.count++; // 可以这样访问,但是不建议

需要注意的是,使用static修饰的成员不同于普通成员,与对象产生的关联变成了与类产生的关联,这使得它可以直接通过类名调用并在不实例化对象的情况下被访问。

这种机制可以节省内存,加快执行速度,并且其生命周期随着类的加载而开始,随着类的卸载而结束

简单小结一下,static修饰符 可以让变量和方法 不依赖于任何对象而直接与类相关联,可以节省内存,加快执行速度,同时也有助于实现单例模式、工厂模式等常见的编程模式。

 

🍑1.2 native:原生的

💧1.2.1 初步介绍

native:本地的,原生的。只能修饰方法,表示这个方法的方法体 不是用Java语言实现的, 但是可以和普通的Java方法一样去调用和重写它。

💧1.2.2 进一步介绍

在Java中,native是一种非访问修饰符,用于声明一个方法是由外部定义的,即该方法不在Java程序中实现,而是在外部通过其它语言来实现。

如果一个方法被声明为native,则在Java程序中 只需提供该方法的声明,而其具体实现则由外部语言完成。一般而言,外部语言实现的方法 需要底层操作系统的支持。因此,这种方式可以让Java程序与操作系统进行交互。

使用native的一种情况是 在Java程序中使用操作系统特定的功能,例如访问磁盘、网络等。Java提供了一些类库来处理这些任务,但如果需要更高的性能或功能,那么可以使用native方法。

下面是一个使用native修饰符的示例:

public class NativeExample {
    public native void showMsg(); // 声明一个native方法

    public static void main(String[] args) {
        NativeExample example = new NativeExample();
        example.showMsg(); // 调用native方法
    }

    static {
        System.loadLibrary("NativeExample"); // 加载Native库
    }
}

在上面的示例代码中,showMsg方法被声明为native方法,表示在Java程序中只有该方法的声明,不会提供具体的实现。

方法体中的实现会由其它语言来完成,而具体的实现 是由其它外部语言来编写的。main方法中使用example.showMsg()来调用该方法,但实际上showMsg的实现是由外部语言来完成。

在程序中,我们可以通过System.loadLibrary来加载包含该方法实现的库文件,该库文件可以由C/C++等语言编写。

需要注意的是,native并不是一种Java语言特性,而是Java虚拟机的一个特性,它允许Java程序与其他语言进行交互。使用native修饰符时,需要保证外部语言的实现正确,并且与Java程序的接口保持一致,否则会出现运行时错误。

也小结一下:native修饰符 用于声明Java程序中的一个方法 是由外部语言实现的,可以与操作系统或其它的外部库进行交互,通过这种方式可以扩展Java程序的功能和性能。但也需要注意保证外部语言实现的正确性,以免出现运行时错误。

 

🍑1.3 final:最终的

💧1.3.1 初步介绍

final:最终的,可以修饰类、方法、变量

  • (1)类(包括外部类、内部类):不能被继承
  • (2)方法:不能被子类重写,可以被继承
  • (3)变量(包括成员变量和局部变量):值不能修改,即为常量。建议常量名大写,每个单词之间使用_分割,形式:XXX_YYY_ZZZ

💧1.3.2 进一步介绍

在Java中,final是一种修饰符,可以用于类、变量和方法,它的含义取决于修饰的对象

当用于时,final表示该类不能被继承。例如:

final class Example {
    // ...
}

当用于变量时,final表示 该变量的值无法修改,即该变量变成了常量。例如:

final int COUNT = 10;

当用于方法时,final表示该方法不能被子类重写(覆盖)。例如:

class Animal {
    final void scream() {
        System.out.println("Animal screams!");
    }
}

class Cat extends Animal {
    // 编译报错,无法重写final方法
    void scream() {
        System.out.println("Cat meows!");
    }
}

需要注意的是,final修饰的变量 在声明时必须赋初值,而且一旦赋初值之后,就不能再修改了。同时,final修饰的方法 不能被子类重写,但是它依然能被子类继承并使用。

简言之,final修饰符 可以用于表示类不能被继承,变量的值无法被修改,方法无法被子类重写。它的使用可以保证程序的安全性和可靠性,同时也有助于代码优化和调试。

 

持续更新 ing~ ~

 
关注博主,第一时间收到干货文章!

 


 

🍒 热门专栏推荐

  • 🥇Python&AI专栏:【Python从入门到人工智能】
  • 🥈前端专栏:【前端之梦~代码之美(H5+CSS3+JS.】
  • 🥉文献精读&项目专栏:【小小的项目 (实战+案例)】
  • 🍎C语言/C++专栏:【C语言、C++ 百宝书】(实例+解析)
  • 🍏Java系列(Java基础/进阶/Spring系列/Java软件设计模式等)
  • 🌞问题解决专栏:【工具、技巧、解决办法】
  • 📝 加入Community 一起追光:追光者♂社区

 

持续创作优质好文ing…✍✍✍

 

记得一键三连哦!!!

 

求关注!求点赞!求个收藏啦!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/676129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三分钟学习一个python小知识3-----------我的对python的列表和元组的理解

我的目录 1、python是什么2、列表的应用3. 元组的应用:4、深层次地进一步理解列表和元组4.1. 列表示例:4.2. 元组示例: 总结 1、python是什么 在Python中,列表和元组都是用于存储多个数据项的数据结构,但是它们有一些…

JavaWeb Tomcat

1.Web分类 静态web html这样的静态网页,只展示预先设定好的内容每个用户看到的内容是一样的不连接数据库,无法持久化数据(比如注册)动态web 动态展示内容每个用户看到的内容是不一样的,比如会有个性化推荐连接数据库&…

TienChin 项目改造完善项目结构分析

项目改造完善 更改 Banner Banner 生成网站:https://bootschool.net/ascii 更改启动类中的 Banner !> 如果不生效,需要重新编译一下项目工程(出现了启动之后还没改变就需要执行一下这个步骤): 出现的原因是可能你没有删除 .idea 文件与 .i…

夜不收见证:夫妻从内江到成都,从真诚到真相

他们从四川内江的一条小巷,走进了成都的大街小巷。那里的房屋挨挨挤挤,像是在讲述他们曾经的梦想和勇气。他们是那些在内江的土地上种下了友情种子的少年,他们在成都的大地上,硕果累累。 他们从初中的课桌前走到了成人的世界里&am…

模拟电路系列文章-滤波器常识

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示:这里可以添加技术概要 滤波是一个动作,对不同频率输入信号,实施不同的增益和相移,以形成输出。滤波器,是执行这种动作的硬件设备或者软件程序。无论滤…

DJ4-7 SDN、OpenFlow

目录 一、SDN 1、SDN 的引入 2、SDN 体系结构的特征 3、SDN 控制器 4、SDN 通用转发 二、OpenFlow 一、SDN 1、SDN 的引入 软件定义网络 (Software Defined Network) SDN 源自美国斯坦福大学 Clean Slate 研究组提出的一种新型网络创新架构,可通过软件编程…

OCC-BEV:基于三维场景重建的多摄像机统一预训练

论文:https://arxiv.org/pdf/2305.18829.pdf 代码:https://github.com/chaytonmin/Occ-BEV 多摄像机3D感知技术(能够收集车辆周围360的环境信息)已经成为自动驾驶领域的一个突出研究领域,为 Lidarb-based 解决方案提供…

EMC学习笔记(九)特殊信号的EMC处理(一)

特殊信号的EMC处理(一) 1.电源接口EMC防护滤波电路1.1 24VDC电源口1.2 电源地的EMC电路1.3 Flyback EMC电路1.4 BUCK电路EMC电路1.5 推挽电路 2.时钟电路的EMC防护2.1 有源时钟2.2 无源时钟2.3 差分时钟 3.复位电路EMC防护4.对外接口信号的EMC防护4.1 差…

简历不要随意给猎头!他们会胡乱投递,影响你之后求职!

猎头是求职的重要途径之一,但猎头群体良莠不齐,并不是每个猎头都值得信任。 一位网友就对猎头持怀疑态度,问大家: 简历可以随意给猎头吗?给他们的时候需要注意什么?他们会不会群发,对自己之后求…

软考A计划-系统集成项目管理工程师-一般补充知识-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

F429驱动TFT裸屏时LTDC

F429驱动TFT裸屏时LTDC时序配置说明(以V6的7寸驱动为例) 说明: 1. 经常有兄弟问到这个问题,所有这里就写一个帖子。 2. 基础知识学习: TFT LCD的DE模式和HV模式的区别:http://bbs.armfly.com/read.php?tid…

Kafka搭建部署

解压文件 启动zookeeper 配置kafka环境变量 查看Kafka的版本内容 分发Kafka文件到slave1、slave2 修改server.properties文件 在Master、slave1和slave2节点上分别启动Kafka 在Master节点上执行如下命令来创建Topic 解压文件 tar -zxvf kafka_2.12-2.4.1.tgz -C /opt …

2022(一等奖)基于哨兵2影像的典型地表参量和红边指数的特征空间石漠化遥感监测模型

作品介绍 1 监测模型设计概述 (1)应用背景 石漠化是危害人们安全的自然灾害之一,也是土壤荒漠化其中的一种。我国西南地区是全球石漠化现象最严重的地区之一,长期的人为干预使得生态环境变得非常敏感,地表植被破坏严…

升级系统到Proxmox VE 8

Proxmox VE 8.0正式版发布 Proxmox VE 需要升级到7.4,验证一下。 rootpve99:~# pveversion pve-manager/7.4-13/46c37d9c (running kernel: 5.13.19-6-pve) rootpve99:~# pve7to8 CHECKING VERSION INFORMATION FOR PVE PACKAGES Checking for package updates.…

【实战与杂谈】本地搭建自己的游戏王卡片生成器

声明: 1.游戏王卡片制作器本身就是由【kooriookami】开发的,用于DIY卡片因此我只是原有功能再现并不会追加新功能 2.其次数据和卡图均来源于网络,因此我也只提供网络能获取该内容的途径,并不会预先准备好 最近一直没有时间看回复…

2023数字化产品经理如何建立自己的护城河线下演讲-上

来源:三爷出席《人人都是产品经理》2023数字化产品经理大会演讲实录 各位朋友们,大家下午好,非常高兴呢能受到人人都是产品经理官方的邀请,今天能有这样一个机会站在这里和大家做一个简单的分享。 ​ 编辑 添加图片注释&#xf…

C#/.Net的多播委托到底是啥?彻底剖析下

前言 委托在.Net里面被托管代码封装了之后,看起来似乎有些复杂。但是实际上委托即是函数指针,而多播委托,即是函数指针链。本篇来只涉及底层的逻辑,慎入。 概括 1.示例代码 public delegate void ABC(); //委托写在类的外面 publi…

Linux 多路转接 —— poll

目录 传统艺能😎poll🤣struct pollfd🤣 poll 服务器😘PollServer类😁运行服务器😒事件处理😁 服务器测试😂 传统艺能😎 小编是双非本科大二菜鸟不赘述,欢迎米…

【初识C语言(4)】操作符

文章目录 1. 算术操作符2. 移位操作符3. 位操作符4. 赋值操作符5. 单目操作符6. 关系操作符7. 逻辑操作符8. 条件操作符9. 逗号表达式10. 下标引用、函数调用和结构成员 1. 算术操作符 - * / %加 减 乘 除 求余 加减乘 都很简单没啥可讲的,这里主要讲解 除 和 求余。…

nginx主配置文件及实操

文章目录 一、nginx主配置文件nginx.conf1.认识nginx服务的主配置文件2.全局配置3.I/O事件配置4.HTTP配置5.检查配置文件是否正确6.浏览器测试 二、实战操作1.nginx的访问状态统计2.基于授权的访问控制:3.基于客户端访问设置(设置…