成员变量随着对象创建而创建,对象存在,成员变量才存在,每个对象都各自拥有自己的成员变量
例:在main方法中使用Stu的成员变量name,必须先初始对象(先创建对象)
publicclass Stu { intage ; publicstaticvoid main(String[] args) { //创建对象1 Stu s1=new Stu(); //创建完对象后,才能使用对象s1的成员变量age s1.age=12; //只能通过对象名s1输出age的值 System.out.println(s1.age);
//输出匿名对象的age默认值 System.out.println("匿名对象age的值:"+new Stu().age); } } |
4.2)静态变量也叫类变量,随着类存在而存在,每个类有一份,所有实例对象共享,在一个对象中修改了静态变量的值,就等于修改了其他所有对象中该静态变量的值.用static修饰符来声明一个静态变量.和一个静态常量,如:
publicclass Stu { staticintage ; publicstaticvoid main(String[] args) { //创建对象1 Stu s1=new Stu(); s1.age=12; System.out.println(s1.age); //输出对象s1的值为12;
Stu s2=new Stu(); //输出对象s2的值为12?因为静态变量age被所有实例对象共享,s1对象赋值age后,所有对象的age值都是12; System.out.println(s2.age); s2.age=20; //输出对象s2的值为20 System.out.println(s2.age); //输出对象s1的值为20?对象s2修改了静态变量age的值,就等于修改了其他所有对象中该静态变量age的值 System.out.println(s1.age);
}
} |
4.3静态变量的内存空间是在程序中第一次使用该变量所在的类时分配的,所以静态变量可以通过类名直接调用。
publicclass Stu { staticintage ; publicstaticvoid main(String[] args) { //直接通过类名对age赋值 Stu.age=12; System.out.println(Stu.age); //所有的对象值都赋为12,直接通过类名输出所有对象的age值 System.out.println(new Stu().age); //也可以通过对象输出age的值 } } |
备注:1、方法内的局部变量不能声明为静态的,因为程序无法知道什么时候会调用该方法.
2、在使用final修饰符声明常量时,通常会使用static进行再次声明.因为常量的值是不可变的,索性就让它们当做类的所有对象所共享的唯一值.
4.3)在同一个类中,静态变量只能被静态方法直接调用;而成员变量可被所有的方法直接调用
相关推荐
C#静态方法与非静态方法的比较
方法名(参数)}”这种格式来调用Java类的静态方法。 开发环境:IntelliJ IDEA 2019.2.2 Spring Boot版本:2.1.8 新建一个名称为demo的Spring Boot项目。 1、pom.xml 加入Thymeleaf依赖 <groupId>org.spring...
Microsoft Visual Studio 2010做的C# winform类的静态成员及静态方法,主要代码: public class Student { private int IDBase = 20080000; private int ID; public static int StudentNumber; public string ...
可以用来Mock JAVA代码中的静态方法
(js)静态与非静态方法,(js)静态与非静态方法
PHP中静态方法(static)与非静态方法的使用及区别.docxPHP中静态方法(static)与非静态方法的使用及区别.docxPHP中静态方法(static)与非静态方法的使用及区别.docxPHP中静态方法(static)与非静态方法的使用及区别.docx
Java中的静态变量静态方法静态块与静态类.docx
本示例程序利用PowerMock演示了如何对静态方法和私有方法进行单元测试(其它模拟单元测试技术无法实现)。
EXT dojochina Ext类静态方法.rar EXT dojochina Ext类静态方法.rar
浅析Java中静态块与静态方法的区别与联系,执行顺序。
【Flutter】Dart 面向对象 ( get 方法 | set 方法 | 静态方法 ) https://hanshuliang.blog.csdn.net/article/details/113883540 博客源码快照
本例演示了如何使用反射,调用类的静态方法,封装了工具类ClsTool,统一实现静态方法的调用。使用反射,在特定场景下,能够很好的简化代码。例如mybatis
从JVM内存管理的角度谈谈静态方法和静态属性
20.静态方法.zip20.静态方法.zip20.静态方法.zip20.静态方法.zip20.静态方法.zip20.静态方法.zip20.静态方法.zip20.静态方法.zip20.静态方法.zip20.静态方法.zip20.静态方法.zip20.静态方法.zip20.静态方法.zip20....
JAVA语言静态变量和静态方法的分析及其应用研究.pdf
类方法和静态方法;类方法是类所拥有的方法,需要用修饰器“@classmethod”来标识其为类方法。对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(同self一样只是一个习惯),能够通过对象名调用类方法,...
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) ...
在这个文件中,可以像 Java 中的静态方法一样,定义函数或类方法,只需在函数名或方法名前加上 @staticmethod 或者不加,即可定义成静态方法,无需实例化相关对象即可直接调用。 在 Python 中,可以使用模块(Module...
用c++的类实现,对于c++初学者帮助较大,主要熟悉静态变量 静态方法的使用 将练习与数据结构相结合
静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。