java中的static

表示静态方法:

在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法

一旦使用statice修饰成员方法,那么这就成为静态方法,静态方法不属于对象,而是属于类。

没有statice关键字,必须首先创建对象,然后通过对象才能使用他。

对于奔雷的静态方法,可以省略类名称

它们仅能调用其他的static 方法。

它们只能访问static数据。 · 它们不能以任何方式引用this 或super。因为this是指当前对象,但是静态和对象没有关系

调用一个静态方法就是“类名.方法名”

静态方法常常为应用程序中的其它类提供一些实用工具所用

 

 

 

package com.company.tobe;

class QuanName{
    private static String name = "QQ"
    private int age = 11;

    public static void showName(){
        System.out.println("quan"+name );
//        System.out.println("age"+age);因为age不是静态变量,所以不能访问
    }
}

public class StaticTest {
    public static void main(String[] args) {
//        不需要实例化QuanName就能调用静态函数
        QuanName.showName();
    }
    
}

 

 

 

表示静态变量

声明为static的变量实质上就是全局变量。

当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量

所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间

 

 

 

表示静态类

 只有一个内部类才可以设置为静态类

为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。

package com.company.tobe;

class QuanName{
    private static String name = "QQ";
    private int age = 11;

    public static class QQ{
        public static void showQQ(){
            System.out.println("QQQ1");
        }
    }
}

public class StaticTest {
    public static void main(String[] args) {
//        也是不需要实例化QuanName就可以使用内部静态类QQ
        QuanName.QQ.showQQ();
    }

}

 

 

 

结合final

static final修饰变量:表示一旦给值就不可修改,并且通过类名可以访问。

statice final修饰方法:表示不可覆盖,并且可以通过类名直接访问。

package com.company.tobe;

class QuanName{
   static final String name = "QQ";
    private int age = 11;

//    public void setName(String n){
//        name = n;但是不能修改,因为final
//    }
//}

public class StaticTest {
    public static void main(String[] args) {
//        直接通过类名访问不是私有的变量,
        System.out.println(QuanName.name);
    }

}

 

 

静态代码块:

package com.company.statice;

/**\
 * 特点:当第一次用到本类的时候,静态代码块执行唯一一次
 * 静态内容总时优先于非静态,所以静态代码比构造方法先执行
 * 
 * 静态代码块的典型用途:用来一次性对静态变量进行赋值.
 */

public class StaticeBlock {
    static {
        System.out.println("静态代码执行");
    }
    public  StaticeBlock(){
        System.out.println("构造函数执行");
    }
}
package com.company.statice;

public class StaticeTest {
    public static void main(String[] args) {
        StaticeBlock sb = new StaticeBlock();
        StaticeBlock sb2 = new StaticeBlock();
    }
}


结果:
静态代码执行
构造函数执行
构造函数执行

 

posted @ 2020-05-24 09:26  小丑quan  阅读(169)  评论(0)    收藏  举报