实例成员、静态成员

一、静态成员先于实例成员存在

类被加载到内存时,静态变量分配内存空间,静态方法分配入口地址

只有创建对象之后,实例变量分配内存空间,实例方法分配入口地址

当再创建对象时,实例方法不再分配入口地址,方法入口地址被所有对象共享

class A {static {System.out.println("class A static...");}
}public class B {public static void main(String[] args) { A a = new A(); // 创建对象}static {System.out.println("class B static...");}
}

在这里插入图片描述
二、推荐使用类名访问静态成员

静态成员与类相关联,可以通过类名访问,也可以通过对象访问

实例成员与相应的对象关联,只能通过对象访问,不能通过类名访问

class A {static int numberA = 100;
}class B {static int numberB = 200;public static void main(String[] args) {A a = new A();System.out.println(a.numberA);B b = new B();System.out.println(b.numberB);}/*** 编译之后的字节码文件 B.class* 使用对象访问静态成员,javac编译成“类名.静态成员”* class B {*     static int numberB = 200;**     B() { }**     public static void main(String[] args) {*         A a = new A();*         System.out.println(A.numberA); // javac编译成“类名.静态成员”*         B b = new B();*         System.out.println(numberB);   // 本类中访问静态成员,省略类名*     }* }*/
}

三、对象共享静态变量,对象独占实例变量

分配给不同对象的实例变量占有不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的实例变量

分配给不同对象的类变量占有相同的一处内存,改变其中一个对象的这个类变量会影响其他对象的这个类变量

class B {int n;               // 实例变量static int sum = 0;  // 静态变量public void setN(int n) {this.n = n;}int getSum() {for (int i = 1; i <= n; i++) {sum += i;}return sum;}
}public class Test {public static void main(String[] args) {B b1 = new B();b1.setN(3);B b2 = new B();b2.setN(5);System.out.println("b1-sum:" + b1.getSum()); // 1+2+3=6System.out.println("b2-sum:" + b2.getSum()); // 6+1+2+3+4+5=21}
}

四、静态不能访问实例,实例可以访问静态

静态方法只能操作静态变量,调用静态方法

实例方法可以操作实例变量、静态变量,调用实例方法、静态方法

class A {private String str;         // 实例变量public static int num = 10; // 静态变量public static void method() {// 静态不能【直接】访问实例// 在静态方法中创建对象,用对象访问实例成员new A().str = "hello"; System.out.println("num = " + num);}
}

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

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

相关文章

【Java从发入门到精通】Java StringBuffer 和 StringBuilder 类

Java StringBuffer 和 StringBuilder 类 当对字符串进行修改的时候&#xff0c;需要使用 StringBuffer 和 StringBuilder 类。 和 String 类不同的是&#xff0c;StringBuffer 和 StringBuilder 类的对象能够被多次的修改&#xff0c;并且不产生新的未使用对象。 在使用 Stri…

蓝桥杯[OJ 3412]-最小化战斗力差距-CPP-贪心

目录 一、问题描述&#xff1a; 二、整体思路&#xff1a; 三、代码&#xff1a; 一、问题描述&#xff1a; 二、整体思路&#xff1a; 首先每个值都有可能为min(b)&#xff0c;那么对于每个可能为min(b)的值&#xff0c;要使得max(a)尽可能小&#xff0c;因此枚举所有相差最…

【C/C++ API】C++内存分配和释放函数分析

文章目录 mallocrealloccallocmemalignposix_memalignfree参考 malloc malloc 是 C 标准库中的一个函数&#xff0c;用于动态分配内存。它的函数声明如下&#xff1a; void* malloc(size_t size);malloc 接受一个参数 size&#xff0c;表示要分配的内存块的大小&#xff08;以…

设置文件描述符:FD_CLOEXEC(MAC OSX/LINUX)

FD_CLOEXEC是文件描述符标志&#xff0c;用于确保在执行exec调用时关闭文件描述符。当一个文件描述符被设置为FD_CLOEXEC标志时&#xff0c;这个文件描述符会在执行exec调用时自动关闭&#xff0c;这样可以防止在新程序中意外地继承和使用这些文件描述符。 这种特性对于在多进程…

高颜值抓包工具Charles,实现Mac和IOS端抓取https请求

Hi&#xff0c;大家好。在进行测试的过程中&#xff0c;不可避免的会有程序报错&#xff0c;为了能更快修复掉Bug&#xff0c;我们作为测试人员需要给开发人员提供更准确的报错信息或者接口地址&#xff0c;这个时候就需要用到我们的抓包工具。 常见的抓包工具有Fiddler、Char…

【NR技术】 3GPP支持无人机服务的关键性能指标

1 性能指标概述 5G系统传输的数据包括安装在无人机上的硬件设备(如摄像头)收集的数据&#xff0c;例如图片、视频和文件。也可以传输一些软件计算或统计数据&#xff0c;例如无人机管理数据。5G系统传输的业务控制数据可基于应用触发&#xff0c;如无人机上设备的开关、旋转、升…

UHF 无线麦克风的技术设计

一、麦克风介绍 UHF 无线麦克风是一种广泛应用于演讲、表演、会议等场合的音频设备。它通过 UHF 无线电波传输音频信号&#xff0c;具有传输距离远、抗干扰能力强等优点。今天跟大家分享下 UHF 无线麦克风方案的技术设计开发&#xff0c;其主要包括发射机和接收机这两大主要模…

Oracle之ADG与DG的区别?

在上云后的Oracle数据灾备场景中&#xff0c;我们经常听到DBA迁移工程师讲到“在这个项目中用ADG进行数据实时备份&#xff0c;ADG比DG更好&#xff01;”。究竟ADG作Oracle数据灾备的优势在什么地方&#xff1f; 一、ADG主要解决了DG时代读写不能并行的问题 DG时代的数据同步…

c# winform部门管理系统

c# winform部门管理系统 数据库SQL语句脚本代码 CREATE TABLE Department(DepartmentID INT PRIMARY KEY IDENTITY(1,1),Name NVARCHAR(50) NOT NULL ); SELECT * FROM Department -- 插入部门数据 INSERT INTO Department (Name) VALUES (人力资源部); INSERT INTO Departmen…

计算机等级考试:信息安全技术 知识点六

1、P2DR模型是美国ISS公司提出的动态网络安全体系的代表模型&#xff0c;可用数学公式表达为Pt>DtRt&#xff0c;其中Pt表示&#xff1a;系统防护时间。 2、美国联邦政府颁布数字签名标准(Digital Signature Standard&#xff0c;DSS)的年份是1994 3、密码分析者(攻击者)已…

java.net.UnknownHostException

目录 报错信息 报错分析 UnknownHostException 分析 尝试解决 域名 报错可能 网络请求&#xff1a; 数据库连接&#xff1a; Socket通信&#xff1a; 总结&#xff1a; 报错信息 java.net.UnknownHostException Caused by: java.net.UnknownHostException:at java.…

深入浅出:Docker容器虚拟化技术解析

引言&#xff1a; 虚拟化技术的发展自20世纪末至今&#xff0c;经历了令人瞩目的演变。从最初的硬件虚拟化到后来的操作系统级虚拟化&#xff0c;每一次技术革新都为计算资源的管理和利用带来了巨大的变革。而在这不断发展的技术浪潮中&#xff0c;容器虚拟化技术的崛起引领着…

【c 语言 】移位操作符详解

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

【Java 并发】Semaphore

Java 中 的 Semaphore (信号量) 是多线程编程中一种重要的同步工具, 用于控制对共享资源的访问。 通过 Semaphore, 我们可以限制同时访问共享资源的线程数量, 有效地管理并发访问, 确保程序在多线程环境下的稳定性和效率。 在一些资源有限制场景下, Semaphore 是特别合适的, 比…

C++感受1-打开浏览器,线上玩转C++

介绍了五款在线编译、编译、运行的C线上环境。并选择其中的 “在线GDB” 网站动手编写、运行第一个C程序 “Hello World”&#xff0c;同时和线下IDE进行对比。 1. 课堂视频 打开浏览器&#xff0c;线上玩转C 2. 在线C编译环境对比 onlinegdb &#xff1a; www.onlinegdb.comr…

汽车大灯汽车尾灯破裂裂纹破损破洞掉角崩角等问题能修复吗?修复灯罩需要多久时间?

汽车大灯汽车尾灯破裂裂纹破损破洞掉角崩角等问题基本是可以修复的。 修复汽车灯罩的时间取决于多个因素&#xff0c;如灯罩的破损程度、修复方法的选择以及维修店的工作效率等。 一般来说&#xff0c;如果灯罩的破损程度较轻&#xff0c;仅需要进行简单的修复或翻新&#xf…

Python常用语法汇总(三):函数、类

9. 函数 #例1def greet_user(username): # 定义函数 """显示简单的问候语""" print(Hello, username.title() !) greet_user(Jesse) # 调用函数 #例2 def get_formatted_name(first_name,last_name): """返回整洁的姓名&q…

如何考上东南大学计算机学院?

东南大学招生学院是计算机科学与工程学院、苏州联合研究生院&#xff0c;复试公平&#xff0c;不歧视双非考生&#xff0c;985院校中性价比较高&#xff0c;但近年热度在逐年上涨&#xff0c;需要警惕。 建议报考计算机科学与工程学院081200计算机科学与技术专业目标分数为380…

帮管客CRM(jiliyu)接口SQL注入漏洞

文章目录 前言声明一、漏洞描述二、影响版本三、漏洞复现四、修复建议 前言 帮管客CRM客户管理系统专注于为企业提供crm客户关系管理、crm管理系统、crm软件产品及企业销售管理流程解决方案服务,助力企业业绩增长。 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由…

jdk17出现错误无法初始化主类 和NoClassDefFoundError:Vector的解决方法

概述&#xff1a;网上流传文章大多都是编译和运行都加下面这串代码 --add-modulesjdk.incubator.vector我估计他们大多都是复制粘贴的文章&#xff0c;这种东西就是电子垃圾&#xff0c;在idea中&#xff0c;大多人都习惯用maven来构建java项目&#xff0c;接下来我将讲解使用…