成都建设网站公司简介,教人做衣服得网站有哪些,asp网站链接access,房地产开发网站建设类变量和类方法
引入
思考#xff1a;有一群小孩在玩堆雪人#xff0c;不时有新的小孩加入#xff0c;请问如何知道现在有多少小孩在玩#xff1f;
静态变量内存分析
1、静态变量被对象共享
2、静态变量可能在堆中#xff0c;也可能在方法区的静态域中#xff0c;这…类变量和类方法
引入
思考有一群小孩在玩堆雪人不时有新的小孩加入请问如何知道现在有多少小孩在玩
静态变量内存分析
1、静态变量被对象共享
2、静态变量可能在堆中也可能在方法区的静态域中这个根据GDK的版本而定。
注意不论在哪个地方保存均不影响对静态变量的使用
jdk8之前在方法区的静态域中。
jdk8之后存储在堆里面该类对应的class实例的尾部。
以上两种方式均在类信息加载的时候就已经生成静态变量。
什么是类变量
类变量也叫静态变量/静态属性是该类的所有对象共享的变量任何一个该类的对象访问它时取到的都是相同的值同样任何一个该类的对象去修改它时修改的也是同一个变量。
如何定义类变量
定义语法
访问修饰符 static 数据类型 变量名; 【推荐使用】
static 访问修饰符 数据类型 变量名
如何访问类变量
类名.类变量名【推荐】
对象名.类变量名 静态变量的 访问修饰符在访问权限和范围上 和 普通属性 是一样的 package com.zhangch.static_;public class Test {public static void main(String[] args) {//类名.类变量名// 说明类变量是随着类的加载而创建所以及时没有创建对象实例也可以进行访问System.out.println(A.name);}
}class A{// 类变量的访问必须遵守相关修饰符的访问权限 static String name zhang;
}类变量的使用注意事项和细节
1、什么时候使用类变量
**当我们需要让某个类的所有对象都共享一个变量时**就可以考虑使用类变量。
2、类变量和实例变量的区别
类变量是该类所有对象共享的而实例变量是每个对象独享的。
3、加上static称为类变量或静态变量否则称为 实例变量/普通变量/非静态变量
4、类变量可以通过 类名.类变量名 或者 对象名.类变量名 来访问但推荐使用类名
5、实例变量不能通过 类名.类变量名 方式访问
6、类变量是在类创建时就已经存在了【构造器是在对象进行实例化】
7、类变量的生命周期随着类的加载开始随着类的消亡而销毁。
类方法基本介绍
类方法也叫静态方法
格式
访问修饰符 static 数据返回类型 方法名(){}
调用
类名.类方法名
总结
1、当方法中不涉及到任何与对象相关的成员则可以将方法设计成静态方法提高开发效率
2、如果我们希望不创建实例也可以调用某个方法即当作工具来使用
比如Math类、Arrays类
3、将一些通用的方法设计成静态方法【根据实际情况考虑一般这些方法集成在一个类下】这样我们不需要创建对象就可以使用了。
比如打印一维数组冒泡排序完成某个计算任务等等
类方法的使用注意事项和细节讨论
1、类方法和普通方法都是随着类的加载而加载将结构信息存储在方法区 类方法中无this、super参数普通方法中隐含着 this、super参数。 2、类方法可以通过类名调用也可以通过对象名调用【非常不推荐记住只要是静态的不管属性还是方法统一使用类名.】
3、普通方法和对象有关需要通过对象名调用而普通方法不能通过类名调用。
4、类方法中只能访问静态变量或者静态方法
5、普通成员方法既可以访问 静态成员(方法) 也可以访问非静态变量(方法)
小结
静态方法只能访问静态成员(方法)而非静态方法则可以访问静态成员和非静态成员。