Java中的几种关键字详细介绍(秋招总结篇)

news2024/11/29 12:32:50

前言:
本篇文章主要讲解Java中的几种关键字相关知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。

如果文章有什么需要改进的地方欢迎大佬提出,对大佬有帮助希望可以支持下哦~

小威在此先感谢各位小伙伴儿了😁

在这里插入图片描述

以下正文开始

文章目录

  • Java中的this关键字
  • Java中的super关键字
  • Java中的static关键字
  • Java中的final关键字

Java中的this关键字

Java 中的 this 关键字是一个引用类型变量,用于表示当前对象的引用。当方法中需要调用当前对象的成员变量或成员方法时,可以使用 this 关键字

在 Java 类中,实例变量和局部变量可能会有相同的名称,因此使用 this 关键字可以区分它们。当代码中出现 this 关键字时,编译器会优先解析为实例变量,如果实例中不存在该变量,则解析为局部变量。

除了用于区分变量之外,this 关键字还可以用于以下几个方面:

  • 在构造函数中调用其他的构造函数:
    在类中定义多个构造函数时,可以使用 this 关键字来调用同一类中的其他构造函数,以达到代码重用的目的。如果在一个构造函数中调用另一个构造函数,必须将 this() 作为构造函数的第一条语句使用。

  • 返回当前对象
    在某些情况下,需要返回当前对象,可以使用 this 关键字来实现。例如,在链式编程中,每个方法调用都需要返回当前对象,这样可以使代码更加简洁明了。

  • 传递当前对象给其他方法或构造函数
    在调用其他方法或构造函数时,可以将当前对象作为参数传递给它们,以便其他方法或构造函数能够访问和操作当前对象。

Java中的super关键字

super 关键字用于访问父类中的成员变量、成员方法和构造方法,在子类中使用 super 关键字可以引用父类的成员。super 有以下几种用法:

访问父类的成员变量

public class Parent {
    public int x = 10;
}

public class Child extends Parent {
    public int x = 20;
    
    public void print() {
        System.out.println("Child x: " + x);
        System.out.println("Parent x: " + super.x);
    }
}

public static void main(String[] args) {
    Child child = new Child();
    child.print();
}

在上面的代码中,Child 类继承了 Parent 类,并声明了一个同名的 x 变量。通过 super.x 可以访问父类中的 x 值。

访问父类的成员方法

public class Parent {
    public void hello() {
        System.out.println("Hello from parent");
    }
}

public class Child extends Parent {
    public void hello() {
        super.hello();
        System.out.println("Hello from child");
    }
}

public static void main(String[] args) {
    Child child = new Child();
    child.hello();
}

在上面的代码中,Child 类重写了 Parent 类的 hello() 方法,使用 super.hello() 调用了父类中的方法并在子类中添加了自己的实现。

调用父类的构造方法

public class Parent {
    public Parent(int x) {
        System.out.println("Parent constructor with x = " + x);
    }
}

public class Child extends Parent {
    public Child() {
        super(10);
    }
}

public static void main(String[] args) {
    Child child = new Child();
}

在上面的代码中,Child 类调用了父类中的有参构造函数,使用 super(10) 可以传递参数给父类的构造方法。

需要注意的是,super 关键字必须放在子类构造方法的第一行,而且只能使用一次。同时,如果子类没有显式地调用父类的构造函数,Java 编译器会隐式地插入一个父类默认构造函数的调用语句。

在这里插入图片描述

Java中的static关键字

在Java中,static关键字可以用来修饰类的成员变量、方法和代码块。当用Static修饰类的成员时,它代表这个成员属于整个类,而不是某个对象实例。换句话说,无论创建多少个对象,静态成员只会被创建一次并共享。

下面我们来详细介绍Java中static关键字的几种用法:

静态变量

被static修饰的成员变量称为静态变量或者类变量。静态变量存储在静态存储区,不属于任何一个对象,仅在程序执行期间存在一份内存。除非显式地对它赋值,否则它默认被初始化为0或null。

public class Example {
    static int age;
    public static void main(String[] args){
        System.out.println(age);    //输出0
    }
}

静态方法

被static修饰的方法称为静态方法或类方法。它们被设计成仅与类本身有关联。静态方法中不能使用this和super关键字,因为它们都与具体的对象相关。既然静态方法不依赖于对象,所以它可以在没有任何实例的情况下被调用。

public class Example {
    public static void show(){
        System.out.println("This is a static method");
    }
    public static void main(String[] args){
        Example.show(); //无需实例化就可以调用Static方法
    }
}

静态代码块

静态代码块称为类初始化块,在类被加载时自动执行。它们仅能访问静态成员并支持使用static关键字来声明变量和方法。

public class Example {
    static{
        System.out.println("This is a Static Block");
    }
    public static void main(String[] args){
        System.out.println("Main method Executed..");
    }
}

上面是Java中对Static关键字的三种常见应用,但是我们在使用的过程中还需要注意以下几点:

静态方法只能访问到类变量和其他静态方法。
非静态方法可以访问到类变量,非静态变量,其他非静态方法和静态变量/方法。
Static方法不能以任何方式引用当前对象的实例。 不能在静态方法内部使用this关键字,或者向它传递任何参数。

在这里插入图片描述

Java中的final关键字

在Java中,final关键字可以用来修饰类、方法以及变量。它表示其修饰的内容不可改变,对于类、方法和变量分别有不同的含义:

1.final修饰类
被final修饰的类不能被继承,即该类不允许有子类。通常情况下使用final类是为了防止子类修改父类的行为,从而确保类的安全性和一致性。例如,在Java Collection Framework中的很多类都被声明为final。

final class Example {
    //....
}

2.final修饰方法
被final修饰的方法不能被子类重写,也就是说,该方法已经是最终实现。与final类一样,这种行为也能够有效保护代码的完整性和安全性。但需要注意的是,final方法并不一定要有方法体,因为它们可能只是一些接口规范。

class Example {
    public final void show(){
        System.out.println("This method is final and can't be overriden");
    }
}

3.final变量
被final修饰的变量称为常量,其赋值后不能再被修改。常量可以在运行时初始化,也可以在编译时通过直接赋值或构造函数进行初始化。Java开发人员通常将常量用于在程序中使用固定的数值或字符串。传统上我们推荐使用大写字母来表示常量。

final int AGE = 20;
final String NAME = "Xiaowei";

我们需要注意,当final变量引用一个对象时,只是意味着该变量不能在执行期间重新指向另一个对象,而并不阻止对象本身的状态被修改。

文章到这里就先结束了,感兴趣的可以订阅专栏哈,后续会继续分享相关的知识点。

在这里插入图片描述

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

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

相关文章

prometheus介绍与安装

prometheus介绍与安装 文章目录 prometheus介绍与安装一、Prometheus 简介1.Prometheus 优势2.Prometheus 基础架构 二、Prometheus 安装1.后端存储配置 三、使用 Prometheus 实现系统监控四、使用 Prometheus Grafana 实现可视化界面四.zabbixgrafana 安装部署参考http://t.c…

【Mininet】基础篇:开源控制器POX

大家好,我是文思月! 每文一言:时间不在于你拥有多少,而在于你如何使用! 本篇文章: 本篇文章主要是基于POX控制器进行的两个实验:一个是使交换机模拟hub(集线器)的功能&a…

逍遥自在学C语言 | 宏定义技巧让你的C代码快人一步

前言 在C语言中,宏定义是一种预处理指令,用于在代码中定义和使用常量、函数或代码片段的替代。 宏定义使用#define关键字来定义,并在代码中进行替换。宏定义具有以下优点: 简化代码:宏定义可以将一些常用的、重复出…

MySQL高可用集群解决方案之:lvs+keepalived+mysql cluster实现负载均衡

一:前言 Mysql-cluster本身实现了高可用,但是其sql节点并没有实现负载均衡。怎样让程序能均衡地访问sql节点呢,程序里写哪个数据库服务器IP呢? LVS是实现负载均衡作用的,即将客户端的需求采用特定的负载均衡算法分发…

在职考研 | 对于朝九晚五的上班族来说同等学力申硕更轻松!

我们要知道的是,考在职研究生的群体90%以上都是朝九晚五的上班族。 他们工作忙,时间和精力都很有限。 考研本身难度就很大,但是既拿不出足够多的备考时间,也没法到线下去上课。 怎么能考上呢? 在这样的现实条件下&…

yolov5部署到android studio

目录 环境获取demo将pt文件导出为ptl文件修改demo修改PrePostProcessor增加ptl文件并增加类别文件修改MainActivity 大功告成 环境 Ubuntu22.10 Pytorch2.0.1cu117 Android Studio Flamingo | 2022.2.1 Patch 1 获取demo git clone https://github.com/pytorch/android-demo…

self Attention 位置编码的奇偶输入问题

attention机制一直是放在encoder-decoder中进行使用,self-attention是为了解决前者结构无法并行计算,而抽离出的概念(前者的编码解码多为时序网络)。 但因为缺少时序模型天然的位置编码特点,所以self-attention模型需要…

Docker镜像大小优化

如何缩小镜像的体积大小? 1)尽可能的使用小体积的基础镜像 2)尽可能减少Dockerfile文件中的指令数量 3)构建镜像步骤最后添加清空系统和应用程序的缓存的命令 4)使用多级(多阶段)构建 FROM A…

亚信科技AntDB数据库荣获赛宝优选信创优秀解决方案奖

近日,由工业和信息化部电子第五研究所主办的中国赛宝信创生态合作伙伴大会暨赛宝优选信创优秀解决方案颁奖仪式在北京成功举办,亚信科技AntDB数据库信创解决方案“业务支撑系统核心数据库迁移改造”从千余案例中脱颖而出,荣获赛宝优选信创优秀…

文件描述符表

文章目录 1. 文件描述符1.1 前言1.2 理解文件1.3 文件描述附表1.4 打开文件时1.5 默认打开的三个文件 2. 重定向2.1 瞅瞅2.2 dup22.3 实现原理 3. 一切皆文件 1. 文件描述符 1.1 前言 环境:Linux 2.6 在 Linux 中,有句话叫做「一切皆文件」&#xff0…

Coinbase:如有必要,不惜在最高法院与SEC“一决胜负”!

6日早间,央视财经频道(CCTV-2)对“币安及其首席执行官被美证交会(SEC)起诉”进行了报道。 值得一提的是,央视并不常播报加密货币相关新闻,上一次是关于香港监管框架,赵长鹏&#xff…

< 每日算法:一文带你认识 “ 双指针算法 ” >

每日算法:初识双指针算法 👉 1. 双指针概念:👉 2. 左右指针> 案例一:二分查找> 案例二:双指针 - 移除元素 👉 3. 快慢指针> 案例一: 删除排序数组中的重复项 👉…

MySQL8安装详细教程

MySQL8安装详细教程 一、下载二、安装三、配置环境 一、下载 官网下载:点击跳转 进入官网后,如下界面 点击Archives可以选择版本进行下载,如下图根据描述操作即可。 百度云下载链接:点击跳转 或者复制到浏览器打开:链…

【1 微信小程序学习-核心思想与体验】

1 小程序的核心技术 .js文件,负责数据处理,函数定义和实现 .wxml文件,组件结构与数据绑定 .wxss文件,组件样式 .json配置信息补充 MVVM架构实现声明式编程 采用MVVM架构,核心是通过数据绑定实现响应式编程(声明式编程). M:数据处理 V:样式结构 VM:数据绑定和事件监听 vue和小程…

程序员的职场危机,能靠技术化解吗?

很多人认为,程序员一定要干到管理层,才会有继续走下去的希望,而踏实做技术的程序员,只会面临淘汰。 事实真是如此吗? △ 截图来源脉脉,如侵删 我们先不说结论,一起看看网友们的看法&#xff1…

Linux | Job control

Linux | Job control 文章目录 Linux | Job control命令直接将命令丢到后台中“执行”的 &将当前工作丢到后台“暂停”:Ctrl z查看后台工作状态:jobs将后台工作拿到前台处理:fg让工作在后台下的状态变成运行中:bg管理后台工作…

Qt6之vc调用qt生成的带ui的dll

受益于跨平台的特性,Qt生成dll的各种语言调用上体现的淋漓尽致,上篇已经演示了qt生成的无ui的dll及vc如何调用它,本篇将演示vc如何调用qt生成的带ui的dll。 传统观点认为Qt生成的带ui的dll受限于 QApplication 的 exec 方法,这样才…

《精通特征工程》学习笔记(6):非线性特征化与k-均值模型堆叠

1.非线性特征 当数据位于一个薄饼状的线性子空间时,PCA 是非常有用的。但如果数据形成了一个更加复杂的形状,情况又将如何呢? 如果线性子空间是一张平展的纸,那么非线性流形的一个简单例子就是卷起来的纸,它有 个非…

《人人健康》期刊简介及投稿邮箱

《人人健康》期刊简介及投稿邮箱 《人人健康》期刊简介: 主管单位:山西出版传媒集团有限责任公司 主办单位:山西三晋报刊传媒集团有限责任公司 国际刊号ISSN:1004-597X 国内刊号CN:14-1033/R 邮发代号&#xff1…

不甘做小弟,JS时间对象又在搞事情!(上)

关注“大前端私房菜”微信公众号,回复暗号【面试宝典】即可免费领取107页前端面试题。 Date Date 是 js 的一个内置对象,也叫内置构造函数。提供了一堆的方法帮助我们更方便的操作时间 创建时间对象:new Date() 获取时间对象:ne…