Java——Static与final修饰的变量与方法(总结)

前言:

        Java语法学过一遍之后,我相信大多数和我一样脑瓜子嗡嗡的,甚至有点乱了,这时候应该自己把之前的能总结的,或者不熟悉的都要总结一遍,以便于后期的学习!!

static修饰的成员变量:        

        首先我们来讨论一下static修饰的成员变量:

        static修饰的成员变量,语法形式:

        (限定修饰符)(public、protected、private)+static+ 变量类型+变量名;

 static修饰的变量究竟怎么用?

        static修饰的便令有什么用?

        首先值得注意的是:被static修饰,意味着在这个变量属于类了,而不属于对象了!!

那是什么意思?

        首先被static修饰的变量被放在了方法区(Java中有5大区:虚拟机栈、本地方法栈、堆区、方法区、程序计数器)。

        拿起的没有被static修饰的方法被放在了哪里呢?

        首先没有被static修饰的方法是不属于类的,是属于对象的,也就是如果我们没有new一个新的对象的话是调用不了的,所以可以理解为没有被static修饰的方法当new一个新对象后是储存在虚拟机栈中的,也就是当这个对象销毁,对应的方法也就调用不了了,对应的所有初始化也会被重置!

例如:

 class  Person{public static String name;public static int age;}

 此时我可以直接在main方法中调用:

 class  Person{public static String name;public static int age;public static void main(String[] args) {Person.name = "haha";Person.age = 12;System.out.println(Person.name);System.out.println(Person.age);}

 打印结果:

那此时有人就问了,你这个main方法就在Person类里面,我是不是可以直接初始化name和age呢?

没错!!

我甚至都不需要写类名,可以直接调用! 

 class  Person{public static String name;public static int age;public static void main(String[] args) {name = "haha";age = 14;System.out.println(name);System.out.println(age);}

那如果是在其他的方法中可不可以初始化静态变量呢?

 class  Person{public static String name;public static int age;public void init(){name = "hehe";age = 15;System.out.println(name);System.out.println(age);}

发现没有报错,也是可以滴!

此时我在其他类中的main方法中初始化看看效果!

public class Test {public static void main(String[] args) {Person.name = "haha";Person.age = 18;System.out.println(Person.name);System.out.println(Person.age);}
}

发现此时就必须写类名了,但是此时不需要实例化对象。

所以,这时候,可以总结一下了:

        1.当静态成员在自己类中被调用时,不需要类名.成员名,直接可以初始化。但是不能用this.类名的形式进行初始化,因为此时成员不属于对象的。

        2.当静态成员在其他类中初始化,调用时形式必须是类名.成员名

大家可以踊跃尝试各种情况!

static修饰的成员方法:

        static修饰的成员方法语法形式:

               (限定修饰符)(public、protected、private)+static+ 方法返回类型+方法名;

       static修饰的成员放法和成员变量是一样的,都放在方法区中,调用时可以直接类名.方法名调用!

例如:
 

 class  Person{public static String name;public static int age;public static void init(){name = "hahaha";age = 17;}public static void main(String[] args) {Person.init();}
}

 

        这些对大家都很简单,但是此时有一个问题,刚刚我在静态方法中初始化的时候,我初始化的是静态成员,那此时如果我有几个变量不是静态的那可不可以调用初始化呢?

 class  Person{public static String name;public static int age;public int high;public static void init(){name = "hahaha";age = 17;high = 20;//报错了}
}

        此时报错出现了,那有人又说,因为没有被static修饰的是属于对象的,那我此时可不可以new一个对象再访问呢?

 class  Person{public static String name;public static int age;public int high;public static void init(){name = "hahaha";age = 17;Person person = new Person();person.high = 20;}
}

没有问题滴!!

总结一下:

1、static修饰的成员方法可以直接访问该类内部的被static修饰的成员变量。

2、static修饰的成员方法在被访问时,一般是通过类名.成员方法名访问。

final修饰的成员变量:

final修饰的基本变量:

语法形式:

(访问限定修饰符)+(static)+final+变量类型+变量名;

        被final修饰的意思就是常量的意思,也就说这个变量不能再被改变!!被final修饰的基本变量放在虚拟机栈中,由于此时变成了常量,所以一开始就必须给该变量赋值,不能定义为:

这是错的!!

还是一样,此时该变量如果要调用该怎么调用?

调用的形式还是和普通的一样,如果在同一个类中,可以直接访问,如果外部需要访问还是要new一个新的对象,然后调用!

值得注意的是:

        1.无论怎么调用,该变量的值不能改变不了。

        2.改变变量是属于对象的!

final修饰的引用类型:

        如果final修饰一个String类,那么是什么意思?

        此时我们都知道,String类型引用堆区的对象,此时如果加final关键字意思就是堆区的这个对象的内容也不能改变了,但是我们还是可以改变String引用的对象的指向的!

例如:
 

此时相当于改变了name引用对象的内容是不可以的!

这里就来区分一下如果没有加final那么两个String类是如何赋值的:

 public static void main(String[] args) {String name = "hahaha";String name1 = "hehehe";name1 = "wawawa";System.out.println(name);System.out.println(name1);}

问:此时name1的改变影不影响name的值?

答案是:不会的!

这个在之前Java--String类-CSDN博客有讲过,也就是String内部是怎样的有关!

不熟悉的可以看看哦!

final修饰的类:

        这里只需要记住一句话:

final修饰的类没有办法继承!

final修饰的成员方法:

这里也需要记住一句话:

final修饰的方法,不能在其他类中重写!(前提是该类被其它类继承)

例如:

 

此时如果重写父类中的方法会报错!!

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

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

相关文章

[附源码]SpringBoot+VUE+Java实现人脸识别系统

今天带来一款优秀的项目:java人脸识别系统源码 。 系统采用的流行的前后端分离结构,内含功能包括 “人脸数数据录入”,“人脸管理”,“摄像头识别” 如果您有任何问题,也请联系小编,小编是经验丰富的程序员…

数码好物抢先看!2024有什么好用又实惠的好物推荐!

在数字科技日新月异的今天,各种数码好物层出不穷,它们以其先进的技术、创新的功能以及不断提升的性能,为我们的生活带来了极大的便利和乐趣。对于消费者来说,在众多的数码产品中挑选出好用又实惠的好物,无疑是一件既令…

Spring Controller

服务器控制 响应架构 Spring Boot 内集成了 Tomcat 服务器,也可以外接 Tomcat 服务器。通过控制层接收浏览器的 URL 请求进行操作并返回数据。 底层和浏览器的信息交互仍旧由 servlet 完成,服务器整体架构如下: Server: Tomcat…

电机知识总结

一.直流无刷电机(BLDC) 27N30P指有27个槽,30的极数,它的极对数:30/215,所以是15对极。 N必须是3的倍数,P必须是偶数, 电角度是电气特性,机械角度是空间特性,必须指明是谁…

Selenium等待机制:理解并应用显式等待与隐式等待,解决页面加载慢的问题

目录 引言 等待机制的重要性 显式等待(Explicit Wait) 原理 应用方式 代码示例 优点与缺点 隐式等待(Implicit Wait) 原理 应用方式 代码示例 优点与缺点 解决页面加载慢的问题 1. 合理设置等待时间 2. 优先使用显…

数据三维可视化技术的应用场景

数据三维可视化技术作为一种强大的工具,已经在各个领域展现出了巨大的应用潜力。它不仅提供了直观、生动的数据展示方式,还让用户能够更深入地理解数据间的关联和趋势。下面将探讨数据三维可视化技术的应用范围及其在不同领域中的重要性。 数据三维可视化…

控价服务如何判断高低

在当今竞争激烈的市场环境中,品牌控价成为企业发展的关键一环。许多品牌选择与第三方控价公司合作,借助其专业的电商价格监测系统,既能节省人力成本,又能获得高质量的服务。然而,如何判断第三方控价服务系统的优劣呢&a…

VirtualBox7.1.0 安装 Ubuntu22.04.5 虚拟机

环境 (1)宿主机系统:Windows10 (2)虚拟机软件:VirtualBox7.1.0 (3)虚拟机系统:Ubuntu 22.04.5 LTS (Jammy Jellyfish) 步骤 (1)第一步 &…

2024年最新版TypeScript学习笔记——泛型、接口、枚举、自定义类型等知识点

今天带来的是来自尚硅谷禹神2024年8月最新的TS课程的学习笔记,不得不说禹神讲的是真的超级棒! 文章目录 TS入门JS中的困扰静态类型检查编译TS命令行编译自动化编译 类型检查变量和函数类型检查字面量类型检查 类型推断类型声明声明对象类型声明函数类型…

个人驾校预约管理系统设计与实现

个人驾校预约管理系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装个人驾校预约管理系统软件…

3.js - THREE.CubeTextureLoader() 添加环境纹理,以创建立方体贴图

使用 THREE.CubeTextureLoader() 添加环境纹理,以创建立方体贴图 不使用 THREE.CubeTextureLoader() 的时候 源码 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls import { RGBELoader } from three/exam…

SHAP 模型可视化 + 参数搜索策略在轴承故障诊断中的应用

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Python轴承故障诊断入门教学-CSDN博客 Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客 Python轴承故障诊断 (14)高创新故障识别模型-CSDN…

【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器(上)

文章目录 前言一、ArkTS基本介绍1、 ArkTS组成2、组件参数和属性2.1、区分参数和属性的含义2.2、父子组件嵌套 二、装饰器语法1.State2.Prop3.Link4.Watch5.Provide和Consume6.Observed和ObjectLink代码示例:示例1:(不使用Observed和ObjectLi…

新媒体运营

一、新媒体运营的概念 1.新媒体 2.新媒体运营的五大方向 用户运营 产品运营 。。。 二、新媒体的岗位职责及要求 三、新媒体平台

数仓工具:datax

datax可以理解为sqoop的优化版, 速度比sqoop快 因为sqoop底层是map任务,而datax底层是基于内存 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定…

群晖NAS使用Docker本地部署网页版Ubuntu系统并实现无公网IP远程访问

文章目录 前言1. 下载Docker-Webtop镜像2. 运行Docker-Webtop镜像3. 本地访问网页版Linux系统4. 群晖NAS安装Cpolar工具5. 配置异地访问Linux系统6. 异地远程访问Linux系统7. 固定异地访问的公网地址 前言 本文旨在详细介绍如何在群晖NAS部署docker-webtop,并结合c…

性能问题的典型特征有哪些?

各位好,我是 道普云 一站式云测试SaaS平台。一个在软件测试道路上不断折腾十余年的萌新。 欢迎关注我的专栏和我的主页 道普云 文章内容具有一定门槛,建议先赞再收藏慢慢学习,有不懂的问题欢迎私聊我。 (双击屏幕有新大陆&…

土壤墒情测定仪的工作原理

土壤含水量监测仪器,也称为土壤水分测定仪或土壤墒情测定仪,是专门用于测量和监测土壤中含水量的设备。这些仪器在农业、环境科学、地质勘探等领域具有广泛应用,对于指导农业生产、评估土壤质量、研究土壤水分动态等具有重要意义。以下是对土…

2024国家网络安全周 | 海云安凭借AI大模型在软件开发安全领域的创新实践,跻身创新创业投资专场活动决赛圈

近日,2024国家网络安全宣传周-创新创业投资专场活动在广州南沙成功举办,这是首次在国家网络安全宣传周上开展创新创业投资专场活动。本次活动由广东省人民政府指导,广州市人民政府主办,旨在搭建网络安全垂直领域专业、创新投资平台…

[JavaEE]———进程、进程的数据结构、进程的调度

阿华代码,不是逆风,就是我疯,你们的点赞收藏是我前进最大的动力!!希望本文内容能帮到你! 目录 一:操作系统 1:操作系统的定位和功能 2:多任务操作系统 3&#xff1a…