static关键字

static关键字
(1)可以修饰成员变量 :称为静态变量
public class Test4{
        static int a=10;//静态变量
        int b=20;//成员变量
        public static void main(String [ ]args){
                        System.out.println(Test4.a);  //静态变量的使用方式是使用 类名.静态变量名
                        //System.out.println(Test4.b);
                        Test4 t=new Test4();
                        System.out.println(t.b); //成员变量的使用方式只能是 对象名.成员变量名
        }
}
      静态变量与成员变量的区别
        a)使用方式不同,静态变量的使用方式  类名.静态变量名
                                  成员变量的使用方式 对象名.成员变量名
        b)在内存中的位置不同:   静态变量存储到方法区中的静态区
                                                 成员变量存储到堆内存中的
        c)进内存的时间不同  :静态的变量先进内存,在这个类第一次被使用时与类一起加载到内存
                                            成员变量在调用构造方法创建对象时,才进内存
       静态方法是不允许使用成员变量的:否则


(2)修饰成员方法:称为静态方法
    静态方法也不允许调用成员方法


 

解决方案:
创建Test4的对象,使用对象名去调用show方法


注意事项:成员方法可以调用静态方法,因为后进内存的可以使用先进内存的方法


public class Test4{
        static int a=10;//静态变量
        int b=20;//成员变量
        public void show(){
                System.out.println("void show");
                method();//可以 成员方法可以调用静态方法 (因为后进内存的可以使用先进内存)
        }
        public void fun(){
                show();//完全可以
                System.out.println("void fun()");
        }
        public static void method(){
                System.out.println("static void method()");
        }
        public static void main(String [ ]args){
                        System.out.println(Test4.a);  //静态变量的使用方式是使用 类名.静态变量名
                        //System.out.println(Test4.b);
                        Test4 t=new Test4();
                        System.out.println(t.b); //成员变量的使用方式只能是 对象名.成员变量名
                        t.show();
                        method();//可以,因为static可以直接调用static
        }
        
}
静态的归类所有 ,可以被这个类的所有的对象所共享
成员的归对象所有,每个对象都会有自己独立的属性空间

(3)修饰代码块 :静态代码块
   使用{}括起来的一段代码就称为代码块
    代码块根据定认的位置可分为以下几类
        a)普通代码块 :定义在方法里,语句块里
        b)构造代码块:定义在类中,方法外  (在创建对象时执行,而且优先于构造方法先执行,每创建一个对象,构造代码块都将执行一次)

        c)静态代码块:构造代码块前加static
        d)同步代码块 (多线程的时候讲解)

 public class Test5{
        //构造方法
        public Test5(){
                System.out.println("Test5的构造方法");
        }
        //构造代码块
        {
                System.out.println("构造代码块----------");
        }
        // 静态代码块
        static{
                System.out.println("-----------静态代码块------");
        }
        public static void main(String [ ]args){
            //普通代码块 可以限定变量的作用域
                {
                        int a=10;
                        System.out.println("a="+a);
                }
                //System.out.println("a="+a);
                
                Test5 t=new Test5();//对象名叫t
                new Test5();//匿名对象
                new Test5();
                
                
        }
}

构造代码块和普通代码块了解就行
通常我们使用的最多的是静态代码块和同步代码块

静态代码块的作用:是为了给类的静态属性进行初始化的

(4)static可以修饰类:称为静态内部类


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值