static修饰实例

public class ExtB{
/*类变量和实例变量都是全局变量,无须初始化
* 两者的区别是:
* 类变量由static修饰,由所有对象共享
* 实例变量不用static修饰,由每个对象各自占有自己的,类似于在实例化时创建了实例变量的副本
* */
static int i = 10;//不必须初始化
int j = 20 ;//不必须初始化
public ExtB(int j) {
this.j = j;
}
public ExtB() {
}
public void hello(){
System.out.println(“Hello,我是非静态方法~”);
System.out.println(“Hello,我是非静态方法~我在调用类变量i= ” + i);
System.out.println(“Hello,我是非静态方法~我在调用实例变量j= ” + j);
System.out.println(“Hello,我是非静态方法~我在调用静态方法helloStatic()”);
helloStatic();
}
public void hello1(){
hello();//非静态方法调用非静态方法没有问题
System.out.println(j);//非静态方法调用非静态变量没有问题
}
public static void helloStatic() {
System.out.println(“Hello,我是静态方法~”);
System.out.println(“Hello,我是静态方法~我在调用类变量i= ” + i);
//System.out.println(“Hello,我是静态方法~我在调用实例变量j= ” + j);//报错,非静态变量不能直接调用
}
public static void main(String[] args) {
int x;//局部变量必须初始化

    ExtB extb1 = new ExtB(30);
    ExtB extb2 = new ExtB(40);
    System.out.println("ExtB.i= "+ExtB.i);
    System.out.println("extb1.i= "+extb1.i);
    System.out.println("extb2.i= "+extb2.i);
    System.out.println("--------------------");

    //System.out.println("ExtB.j= "+ExtB.j);//报错,非静态变量不能直接调用
    System.out.println("new ExtB(1).j= "+new ExtB(1).j);//在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。  
    System.out.println("extb1.j= "+extb1.j);
    System.out.println("extb2.j= "+extb2.j);
    System.out.println("--------------------");

    //System.out.println(x);//报错,局部变量必须初始化

    ExtB.helloStatic();//调用静态方法,没有问题,或者直接helloStatic();也行
    System.out.println("--------------------");

    //hello();//报错,非静态方法不能直接调用
    new ExtB().hello();
    System.out.println("--------------------");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++中,`static` 关键字用来指定某个变量或者方法的存储期、链接性和作用域。当我们用 `static` 修饰一个变量时,它具有以下特性: 1. 存储期:`static` 变量具有静态存储期,意味着它在程序启动时被创建,在程序结束时销毁。在函数内部定义的 `static` 变量只会在第一次调用函数时初始化,并且即使函数返回,`static` 变量的值也会保持不变,直到下次函数调用。 2. 链接性:如果 `static` 关键字用在类外的全局变量上,它具有文件作用域(内部链接性)。这表示它只能在定义它的源文件内被访问,其他源文件即使使用相同的变量名,也访问的是另一个独立的变量实例。 3. 作用域:`static` 变量在类内部定义时,表示该变量属于类所有,而不是类的某个对象的所有。这样的变量称为类变量或静态成员变量。静态成员变量不依赖于类的任何对象,即使没有创建类的对象,静态成员变量也可以被访问(通过类名直接访问)。 使用 `static` 修饰常量时,我们通常是在类中定义静态常量成员。这样的常量可以使用 `const` 关键字来保证其值不可变。静态常量成员可以在类外初始化,并且需要在类定义中使用 `static` 和 `const` 关键字。例如: ```cpp class MyClass { public: static const int MyStaticConst = 10; // 静态常量成员 }; // 类外初始化 const int MyClass::MyStaticConst; ``` 在类外初始化时,不需要再使用 `static` 关键字,只需使用 `const` 即可。这样定义的静态常量成员可以在没有创建类对象的情况下被访问和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值