java什么是静态变量和静态方法,java静态变量怎么定义

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: