static的用法解读

例一:

public class mystatic1 {
 // static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问
    static String hobby="imooc";
 public static void main(String[] args) {
   System.out.println("通过类名访问静态变量:"+mystatic1.hobby);
   //创建类对象
   mystatic1 my=new mystatic1();
   System.out.println("通过对象访问静态变量:"+my.hobby);
   //在创建一个对象
   mystatic1 my2=new mystatic1();
   //通过对象2修改静态成员
   my2.hobby="imooc2";
   //再次用my输出静态变量,从而证明所有的类对象共享静态成员。
   System.out.println("通过第一个对象输出第二个对象修改后内容:"+my.hobby);
 }
}
//静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收

例二:

//与静态变量一样,也可以使用 static 修饰方法,称为静态方法或类方法。
public class mystatic2 {
 //实用static关键字声明静态方法
    public static void print(){
     System.out.println("谢谢访问!");
    }
 public static void main(String[] args) {
       //直接通过类名调用静态方法
  mystatic2.print();
  //也可以通过对象名调用,推荐实用类名
  mystatic2 my=new mystatic2();
  my.print();
 }

}

例三:

public class mystatic3 {
    String name="路飞";
    static String hobby="海贼王";
    // 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员
    public static void print(){
     //System.out.println("谢谢访问:"+name); //提示错误不能对非静态成员访问
     System.out.println("爱好:"+hobby+"!");
    }
   //在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
    public void show(){
     System.out.println("谢谢访问:"+name+"!");
     System.out.println("爱好:"+hobby+"!");
    }
   // 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法
    public static void main(String[] args) {
  System.out.println("调用静态方法:");
  mystatic3.print();
  System.out.println("调用普通成员方法");
  new mystatic3().show();     
 }
}
例四:

/*在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。
需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
*/

public class mystatic4 {
    int num1;
    int num2;
    static int num3;
    public mystatic4(){
      num1=91;
      System.out.println("通过构造方法给num1赋值");
    }
    {//初始化块
     num2=74;
     System.out.println("通过初始化块为变量num2赋值");
    }
    static {//静态初始化块
     num3=83;
     System.out.println("通过静态初始化块为静态变量num3赋值");
    }
 public static void main(String[] args) {
        mystatic4 my=new mystatic4();
        System.out.println("num1:"+my.num1);
        System.out.println("num2:"+my.num2);
        System.out.println("num3:"+num3);
        //再次创建对象
        mystatic4 my2=new mystatic4();
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值