java 静态变量(方法)和实例变量(方法)

该文详细解释了Java中静态变量与实例变量的区别,包括它们的定义、访问方式以及在静态与实例方法中的使用规则。示例代码演示了如何正确访问这两种类型的变量,并指出main方法作为静态方法不能直接访问实例变量。通过修正后的代码,展示了正确的访问实例变量的方法。
摘要由CSDN通过智能技术生成
public class Example{
      static int allClicks = 10;         //静态变量
      String str = "hello world";        //实例变量
      public static void main(String[] args){
           System.out.println("静态变量allClicks" + "=" + allClicks);
           System.out.println("实例变量str" + "=" + str);
      }
}

上面这段代码是一个静态变量和实例变量的简单输出,但运行时会报错,是因为main方法是一个静态方法(static),不能直接访问所属类的实例变量和实例方法或适用this关键字。

 

为此了解了java中的实例变量和静态变量。

一、静态变量、实例变量的定义:

静态变量(类变量)静态变量指的是被static修饰的类的变量;静态变量被所有类实例对象所共享,在内存中只有一个副本,当且仅当在类初次加载时会被初始化。

实例变量:实例变量是指在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。

二、静态变量(方法)、实例变量(方法)的不同:

1、静态方法中不需要它所属类的任何实例就可以访问,使用在静态方法中不可以使用this关键字
2、静态方法没有隐式的关键字this传递,所以静态方法中不能直接访问所属类的实例变量和实例方法,但可以直接访问所属类的静态变量和静态方法。
3、实例方法中可以直接调用静态方法(或者静态变量),但静态方法不能直接调用实例方法(或者实例变量)。
4、在一个方法中,没有关键字this的话,就意味着没有对象,但是实例成员必须通过对象点来访问,所以在静态方法中无法访问实例成员。
5、在静态方法中,如果想调用此类中的非静态方法,可以通过创建此类的对象,通过对象点调用此非静态方法。

三、静态变量(方法)、实例变量(方法)的访问方式:

静态变量(方法)的访问方式:类名.变量名(方法名)。

实例变量(方法)需要先将类实例化后才可访问:对象名.变量名(方法名)。

原错误代码可改为以下代码:

public class Example {
	    static int allClicks = 10;                         //静态变量
	    String str = "hello world";                        //实例变量
        public static void method1(){                      //静态方法
                allClicks++;
                System.out.println("静态方法中的allClicks++" + "=" + allClicks);
        }
        public void method2(){                             //实例方法
                allClicks++;
                System.out.println("实例方法中的allClicks++" + "=" + allClicks);
                System.out.println("实例方法中的str" + "=" + str);
        }
	public static void main(String[] args) {
                System.out.println("静态变量allClicks" + "=" + allClicks);              //访问静态变量
		        System.out.println("静态变量allClicks" + "=" + Example.allClicks);  //访问静态变量
                Example.method1();                                                 //访问静态方法
                Example a = new Example();
		        System.out.println("实例变量str" + "=" + a.str);                    //访问实例变量
                a.method2();                                                        //访问实例方法
	}

}

按照访问方式修改即可以时代码得到运行。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值