java什么是静态变量和静态方法,java静态变量怎么定义
如何解决写爬虫IP受阻的问题?立即使用。
本教程运行环境:windows7系统,java8版本8,DELL G3电脑。
1. JVM运行时数据区域
Java堆几乎存储了所有的对象实例,所有线程共享的方法区(永久生成)和Java堆一样是所有线程共享的内存区。它用于存储类信息、常量、静态变量等。由虚拟机加载的类
2. static变量
被static修饰的类的变量,也称为静态变量。非静态变量也称为实例变量。
静态变量和实例变量的区别在于:
静态变量由所有类实例对象共享,在内存中只有一个副本,并且只有在类第一次加载时才会被初始化。实例变量归实例对象所有,在创建对象时初始化,并且有多个副本。每个实例对象拥有的副本不会影响公共类MyStatic {
//静态变量
私有静态int index=0;
//实例变量
private int count=0;
公共无效公司(){
指数;
数数;
}
公共字符串get() {
Return 静态变量index= index ,实例变量count= count
}
}/**
* index是一个静态变量
* count是实例变量。
* */
公共类StaticVariableTest {
公共静态void main(String[] args) {
my static MyStatic 1=new my static();
my static MyStatic 2=new my static();
my static MyStatic 3=new my static();
mystatic 1 . Inc();
System.out.println(myStatic1索引和myStatic1计数增加1:);
system . out . println( mystatic 1() of mystatic 1);
system . out . println( mystatic 2() of mystatic 2);
system . out . println( mystatic 3() \ n of mystatic 3));
mystatic 2 . Inc();
System.out.println(myStatic2索引和myStatic2计数增加1:);
system . out . println( mystatic 1() of mystatic 1);
system . out . println( mystatic 2() of mystatic 2);
system . out . println( mystatic 3() \ n of mystatic 3));
mystatic 3 . Inc();
System.out.println(myStatic3索引和myStatic3计数增加1:);
system . out . println( mystatic 1() of mystatic 1);
system . out . println( mystatic 2() of mystatic 2);
system . out . println( mystatic 3() of mystatic 3);
}
}运行结果:
可以看出:
静态变量index是多个对象实例共享的实例,对象count是多个对象实例私有的myStatic1。索引和计数增加1:
myStatic1的静态变量index=1,实例变量count=1
myStatic2的静态变量索引为1,实例变量计数为0。
myStatic3的静态变量索引为1,实例变量计数为0。
myStatic2的索引和计数增加1:
myStatic1的静态变量索引为2,实例变量计数为1。
myStatic2的静态变量索引为2,实例变量计数为1。
myStatic3的静态变量索引为2,实例变量计数为0。
myStatic3的索引和计数增加1:
myStatic1的静态变量索引为3,实例变量计数为1。
myStatic2的静态变量索引为3,实例变量计数为1。
myStatic3的静态变量索引为3,实例变量计数为1。
3. static变量误区
3.1 static不能作用于局部变量
C/C static是一个可以限定范围的局部变量。在Java中,不允许static修改局部变量。
不要问为什么,这是Java语法的一个规则。
3.2 this可以访问静态变量
虽然静态变量独立于对象,但并不意味着不能通过对象实例访问它们。所有静态方法和静态变量都可以通过对象实例访问(只要访问权限足够)。
这表示当前的对象实例,静态变量由所有对象共享,所以可以通过这个访问静态变量。
公共类StaticVariable {
公共静态int index=1;
公共静态void main(String[] args) {
static variable static variable=new static variable()。
static variable . get();
}
私有void get() {
int index=2;
system . out . println(this . index);
}
}运行结果:
3.3 static不会改变类成员的访问权限
Java中的static关键字不影响变量或方法的范围。在Java中,只有private、public和protected关键字(包括包访问权限)才能影响访问权限。
公共类MyStatic {
公共静态int index1=1
//静态变量
private static int index 2=0;
}
公共类StaticVariableTest {
公共静态void main(String[] args) {
system . out . println(my static . index 1);
system . out . println(my static . index 2);
}
}
相关视频教程推荐:java视频教程以上是什么是Java静态变量的详细介绍。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。