做网站能用假图片吗/百度推广公司
系列文章目录
【Java基础】Java总览_小王师傅66的博客-CSDN博客
[Java基础]基本概念(上)(标识符,关键字,基本数据类型)_小王师傅66的博客-CSDN博客
[Java基础]基本概念(下)运算符,表达式和语句,分支,循环,方法,变量的作用域,递归调用_小王师傅66的博客-CSDN博客
[Java基础]面向对象_小王师傅66的博客-CSDN博客
[Java基础]面向对象-内存解析_小王师傅66的博客-CSDN博客
Java字节码分析快速入门/字节码执行分析(一)_java 字节码入门_小王师傅66的博客-CSDN博客
JVM-运行时数据区_小王师傅66的博客-CSDN博客
目录
系列文章目录
前言
一、this
是什么?
举个例子
二、static
是什么
举个例子
三、final
四、super
总结
前言
在前面的文章中,我们讲过Java关键字是电脑提前定义好的,有特殊意义的标识符。Java关键字对编译器有特殊意义,用来表示一种数据类型,或程序的结构。关键字不能用来做为对象,类,方法,包,参数的名称。在这篇文章中,我们将介绍Java类中常用的关键字的使用:this,static,final,super
一、this
是什么?
1、在类的方法或属性中使用this关键字,代表使用该方法或属性所属实例对象的引用;
2、当必须指出当前使用方法的对象时,要使用this;
3、有时使用this可以区分成员变量和方法参数重名的情况;
4、this可以看做一个变量,它的值是当前对象的引用;
举个例子
class CirclePoint {private double x;private double y;CirclePoint() {}CirclePoint(double x, double y) {this.x = x; // 成员变量和参数名相同,使用this区分this.y = y;}CirclePoint moveLeft(){x--;return this; // 返回当前对象的引用}
}
另外,在实例方法、实例初始化块和构造方法中,局部变量表第0位都存放着当前对象的引用,方便通过this关键字访问对象本身。 (在静态方法、静态初始化块、类构造器中没有this对象的概念,静态方法的栈帧由该类的class对象创建,静态方法依赖类本身;局部内部类中,内部类没有继承外部类,所以局部内部类的方法中,第0位也不会存放外部类的引用。)
二、static
是什么
在类中,用static声明的变量是静态变量,是类的公共变量,在第一次使用时初始化;静态变量对于该类的所有对象来说只有一份;
在类中,用static声明的方法是静态方法。非静态方法,需要在生成对象时产生。调用静态方法时,不会将对象的引用传递给它,所以在静态方法中不能调用非静态成员。
可以通过对象引用或类名访问静态成员,不需要实例化,通常用来存储类级别的信息。
举个例子
1、声明静态变量
public class Demo {public static int value = 10;
}
2、声明静态方法
public class Demo {public static void print() {System.out.println("Static method");}
}
3、静态初始化块
public class Demo {static {System.out.println("Static initializer"); }
}
4、静态内部类
public class Outer {static class Inner {public static void show() {System.out.println("Static inner class");}}}
5、静态导入
import static java.util.concurrent.TimeUnit.NANOSECONDS;long startNanoTime = nanoTime();
静态变量和静态方法都独立于对象存在,不需要创建实例就可以访问,在jvm中存放在方法区中。
这里需要注意的是,方法区和数据段是两个概念。 数据段是操作系统概念,是进程地址空间中的一部分,用于存储全局变量和静态变量。方法区是JVM概念,是一块逻辑区域,存储类信息、静态变量和常量池等数据。两者的主要区别在于: 数据段是进程级的,每个进程都有自己的数据段,仅可在进程内访问。方法区是JVM级的,所有线程共享一块共享的方法区,可跨线程访问。两者的关系是: JVM会向操作系统申请一块 native 内存作为进程的数据段。 然后从这块内存中划分出一部分作为方法区使用。 方法区中的静态域部分对应于这个进程的数据段。所以方法区和数据段不是包含关系,而是两个不同层次的概念。数据段存储于进程内存空间中,而方法区逻辑上属于JVM的一部分,但最终也是映射到 native 内存的数据段区域进行存储的。
三、final
final关键字,可以用来声明变量,方法,类,参数,其主要作用是使数据不可修改,进而保证系统的安全性和可靠性。
1、 final变量把一个变量声明为final后,它就不能被重新赋值,即变成一个常量。例如:
final int AGE = 25;
AGE = 30; //错误,不能重新赋值
2、final方法把一个方法声明为final后,它就不能被子类重写。例如:
public final void print(){System.out.println("Hello");
}public class B extends A {public void print(){ //错误,不能重写final方法System.out.println("World");}
}
3、 final类把一个类声明为final后,它就不能被继承。例如:
final class A {}class B extends A { //错误,不能继承final类
}
4. final参数 把一个方法的参数声明为final后,它就成了一个常量不可改变。例如:
void method(final int a) {a = 20; //错误,不能重新赋值
}
四、super
在Java中,使用super引用基类的成员。
1、调用父类的构造方法:在子类的构造方法中使用super()可以调用父类的构造方法。
public class Father {public Father() {System.out.println("Father的构造方法");}
}public class Son extends Father {public Son() {super(); // 调用父类的构造方法System.out.println("Son的构造方法"); }
}
2.、调用父类的方法:如果子类重写了父类的方法,可以使用super.方法名() 调用父类的方法。
public class Father {public void print() {System.out.println("Father");}
}public class Son extends Father {public void print() {super.print(); // 调用父类的print()方法System.out.println("Son");}
}
使用super可以访问父类的构造方法或方法,避免被子类重写或隐藏。它在继承关系中发挥着重要作用。
总结
在这篇文章中,我们主要学习了Java的4个关键字:this,static,final,super。this可用于获取方法、属性所属对象的引用;static标识公共变量,公共方法,在开发过程中,可减少重复的代码,节省内存空间;final使数据不可改变,保证系统的安全性和可靠性。super关键字,使子类可以访问到基类的方法和属性。
相关文章:

[Java基础]面向对象-关键字分析:this,static,final,super
系列文章目录 【Java基础】Java总览_小王师傅66的博客-CSDN博客 [Java基础]基本概念(上)(标识符,关键字,基本数据类型)_小王师傅66的博客-CSDN博客 [Java基础]基本概念(下)运算符,表达式和语句,分支,循环,方法,变量的作用域,递归调用_小王师傅66的博客-CSDN博客 [Java基础]…...

数据结构初阶--二叉树的顺序结构之堆
目录 一.堆的概念及结构 1.1.堆的概念 1.2.堆的存储结构 二.堆的功能实现 2.1.堆的定义 2.2.堆的初始化 2.3.堆的销毁 2.4.堆的打印 2.5.堆的插入 向上调整算法 堆的插入 2.6.堆的删除 向下调整算法 堆的删除 2.7.堆的取堆顶元素 2.8.堆的判空 2.9.堆的求堆的…...

NVM Command学习
ubuntu系统安装nvme-cli,可以在应用层发起命令。 sudo apt install nvme-cli$ sudo nvme --help nvme-1.9 usage: nvme <command> [<device>] [<args>]The <device> may be either an NVMe character device (ex: /dev/nvme0) or an nvme …...

TCP Socket 基础知识点(实例是以Java进行演示)
本篇根据TCP & Socket 相关知识点和学习所得进行整理所得。 文章目录 前言1. TCP相关知识点1.1 双工/单工1.2 TCP协议的主要特点1.3 TCP的可靠性原理1.4 报文段1.4.1 端口1.4.2 seq序号1.4.3 ack确认号1.4.4 数据偏移1.4.5 保留1.4.6 控制位1.4.7 窗口1.4.8 校验和1.4.9 紧…...

openCV图像读取和显示
文章目录 一、imread二、namedWindow三、imshow #include <opencv2/opencv.hpp> #include <iostream>using namespace std; using namespace cv;int main(int argc,char** argv) {cv::Mat img imread("./sun.png"); //3通道 24位if (img.empty()) {std:…...

requests 方法总结
当使用 requests 库进行接口自动化测试时,以下是一些详细的步骤和方法总结: 1. **安装 requests 库**:首先,确保你已经安装了 requests 库。可以使用 pip 命令进行安装:pip install requests。 2. **导入库**&#x…...

Go语言删除文本文件中的指定行
GO语言删除文本文件中的指定行 1. 思路2. 处理文件3. 处理后的文本文件 1. 思路 假设现在有一个文本文件,我们需要删除文件中乱码的行。我们可以使用go的os库来处理文件,遍历整个文件然后将除过乱码的行写入一个新文件,以此来实现我们的需求…...

Arthas GC日志-JVM(十八)
上篇文章说jvm的实际运行情况。 Jvm实际运行情况-JVM(十七) Arthas介绍 因为arthas完全是java代码写的,我们直接用命令启动: Java -jar arthas-boot.jar 启动成功后,选择我们项目的进程。 进入我们可用dashboard…...

ISC 2023︱诚邀您参与赛宁“安全验证评估”论坛
8月9日-10日,第十一届互联网安全大会(简称ISC 2023)将在北京国家会议中心举办。本次大会以“安全即服务,开启人工智能时代数字安全新范式”为主题,打造全球首场AI数字安全峰会,赋予安全即服务新时代内涵…...

分享一个计算器
先看效果: 再看代码(查看更多): <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>计算器</title><style>* {box-sizing: border-box;}body…...

Android 13 Launcher——长按图标弹窗背景变暗
目录 一.背景 二.修改代码 一.背景 客户定制需要长按图标弹窗让其背景变暗,所以需要进行定制,如下是定制流程,本篇是接上篇https://gonglipeng.blog.csdn.net/article/details/132171100 的内容 二.修改代码 主要代码逻辑在ArrowPopup中的reorderAndShow方法和closeCom…...

Elasticsearch概述和DSL查询总结
目录 Elasticsearch概述 1. 什么是Elasticsearch 2. 作用 3. 特点 DSL(Domain Specifit Language)特定领域语言: 概念和作用 查询代码总结 最后附项目准备 1.创建搜索工程(maven工程) 2.配置文件 application…...

扩展卡尔曼滤波器代码
文章目录 前言问题状态向量和观测向量加性噪声的形式状态方程及求导观测方程及求导状态初始化过程噪声和观测噪声卡尔曼滤波过程code 前言 卡尔曼滤波器在1960年被卡尔曼发明之后,被广泛应用在动态系统预测。在自动驾驶、机器人、AR领域等应用广泛。卡尔曼滤波器使…...

9:00开始面试,9:08就出来了,这问题问的实在是····
外包工作3年,今年裸辞跳槽,很幸运的是找到了下家,不过 自从加入到这家公司,每天不是在加班就是在加班的路上,薪资倒是给的不少,所以我也就忍了。没想到6月一纸通知,所有人都不许加班࿰…...

揭秘:5个美国程序员与日本程序员的差异
大家好,这里是程序员晚枫。想了解更多精彩内容,快来关注程序员晚枫 今天以美国和日本程序员为例,给大家分享一下国外程序员的生活。 以下是五个美国程序员和日本程序员的的区别: 工作方式:美国程序员通常更注重自由和…...

Springboot实现简单JWT登录鉴权
登录为啥需要鉴权? 登录需要鉴权是为了保护系统的安全性和用户的隐私。在一个 Web 应用中,用户需要提供一定的身份信息(例如用户名和密码)进行登录,登录后系统会为用户生成一个身份令牌(例如 JWT Token&am…...

C++设计模式创建型之工厂模式整理
一、工厂模式分类 工厂模式属于创建型模式,一般可以细分为简单工厂模式、工厂模式和抽象工厂模式。每种都有不同的特色和应用场景。 二、工厂模式详情 1、简单工厂模式 1)概述 简单工厂模式相对来说,在四人组写的《设计模式------可复用面…...

前端安全XSS和CSRF讲解
文章目录 XSSXSS攻击原理常见的攻击方式预防措施 CSRFCSRF攻击原理常见攻击情景预防措施: CSRF和XSS的区别 XSS 全称Cross Site Scripting,名为跨站脚本攻击。为啥不是单词第一个字母组合CSS,大概率与样式名称css进行区分。 XSS攻击原理 不…...

本地化部署自建类ChatGPT服务远程访问
本地化部署自建类ChatGPT服务远程访问 文章目录 本地化部署自建类ChatGPT服务远程访问前言系统环境1. 安装Text generation web UI2.安装依赖3. 安装语言模型4. 启动5. 安装cpolar 内网穿透6. 创建公网地址7. 公网访问8. 固定公网地址 🍀小结🍀 前言 Te…...

一、Webpack相关(包括webpack-dev-server用以热更新和html-webpack-plugin)
概念与功能: webpack是前端项目工程化的具体解决方案。它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览器端JavaScript的兼容性、性能优化等强大的功能。 快速上手:隔行变色 -S实际是--save的简写,表示安装的第三方…...

安全防御(3)
1.总结当堂NAT与双机热备原理,形成思维导图 2.完成课堂nat与双机热备试验 引用IDS是指入侵检测系统,它可以在网络中检测和防御入侵行为。IDS的签名是指根据已知入侵行为的特征制定的规则,用于检测和警告可能存在的入侵行为。签名过滤器可以根…...

AR远程专家指导在汽车改装上的应用有哪些?
随着科技的不断发展,AR增强现实技术逐渐走进了我们的生活。加上商贸国际化,远程协同纵深到制造生产的更多环节,研发协同、工艺优化等场景复杂、跨层级、需要频繁沟通确认的流程正通过AR应用实现全面远程化的过渡,在汽车行业&#…...

css-3:什么是响应式设计?响应式的原理是什么?如何做?
1、响应式设计是什么? 响应式网站设计(Responsive WEB desgin)是一个网络页面设计布局,页面的设计与开发应当根据用户行为以及设备环境(系统平台、屏幕尺寸、屏幕定向等)进行相应的相应和调整。 描述响应式…...

Armstrong数,n位数等于其各位数的n次方之和。
//Armstrong数具有以下特征:一个n位数等于其各位数的n次方之和。 //例如:1531^35^33^3 16341^46^43^44^4 #include<stdio.h> #include<math.h> //实在不知道的暴力求解方法 int main() {//Armstrong数具有以下特征:一个…...

blender的下载安装和配置中文环境
引言 在3D建模和动画设计领域,Blender 作为一款强大且免费的开源软件,一直以优秀的性能和对众多技术的支持赢得了大批用户的喜爱。然而,对于刚接触这款软件的用户而言,其安装和配置过程可能会带来一定困扰,尤其是在设…...

MyCat配置rule.xml、server.xml讲解
1. rule.xml分片规则配置文件 rule.xml中配置的主要就是拆分表的规则,rule.xml中主要包含两类标签 tableRule 和Function。 tableRule标签里面主要配置我们的分片规则,Function里面涉及的是分片规则里面所涉及的java类,都是在function中配置…...

Linux项目部署
目录 一JAVAWeb环境的部署【安装JDK,MySQL数据库,Tomcat】 二.手工部署SpringBoot项目(写的最好的) 1.在IDEA中开发SpringBoot项目并打成jar包--点击右侧的Maven执行package命令 2.将jar包上传到Linux服务器 3.执行以下命令&a…...

案例:Docker 镜像的创建及使用(commit与dockerfile方式)
文章目录 1、commit方式创建镜像1.1、前期准备1.2、制成镜像1.3、启动镜像1.3.1、启动镜像启动nginx1.3.2、一个命令直接全部启动1.3.3、两种方式区别 1.4、commit创建镜像方式的本质 2、Dockerfile的使用2.1、Dockerfile指令2.2、nginx镜像制作案例2.3、查看构建历史ÿ…...

QGIS二次开发三:显示Shapefile
Shapefile 为 OGR 所支持的最重要的数据格式之一,自然可以被 QGIS 加载。那么该如何显示Shapefile呢? 一、先上代码 #include <qgsapplication.h> #include <qgsproviderregistry.h> #include <qgsmapcanvas.h> #include <qgsvec…...

FFmpeg中相关结构体介绍
AVFormatContext:此结构体存储音视频封装格式中包含的信息,并且这个结构体是贯穿整个播放流程的。在这个结构体中主要包含AVInputFormat,AVOutputFormat、AVStream等。 struct AVInputFormat *iformat; // 输入数据的封装格式 AVIOContext *…...