0
点赞
收藏
分享

微信扫一扫

javaSE07基础-static 关键字


static 关键字

static被称为静态,可以用来修饰类的属性,方法,代码块,内部类.

  • 修饰的成员,被所有对象所共享
  • 不创建对象,直接被调用
  • 优先于对象存在静态优先于非静态
  • 类加载时执行

1.可直接通过类名访问 也可以通过对象名访问

static

如过不是静态,每一个对象都要复制一份变量,浪费空间,

当所有对象的某一个值都相同时,加一个static使其为静态,在内存中只有一份,所有对象共享

  • 静态方法只能访问 静态的变量
  • 成员方法可以方法可以访问 成员变量 还可以方法静态变量

package com.nie.day2.Demo1;

public class StaticTest {
String name;
int age;
static String school;//可直接通过类名访问 也可以通过对象名访问
//static
//修饰的成员,被所有对象所共享
//不创建对象,直接被调用
//优先于对象存在o
//随着加载而加载

public void work() {
System.out.println(name + "\t" + age + "\t" + school);
}
}

package com.nie.day2.Demo1;

public class Test1 {
public static void main(String[] args) {
StaticTest.school = "陕西";//可直接通过类名访问
StaticTest b = new StaticTest();
b.age = 12;
b.name = "sfdsf";
b.work();

StaticTest c = new StaticTest();
c.age = 33;
c.name = "花花";
c.work();
}
}

输出:

sfdsf 12  陕西
花花 33 陕西

代码块

代码分实例块和静态块

  • 静态变量优先于于非静态,
  • 类加载时自动调用,仅一次,与是否创建对象无关。

package com.nie.day2.Demo1;

public class Demo {
static int num = 10;

{
System.out.println("实例代码块");
}

static {
System.out.println("静态代码块");
}

public static void main(String[] args) {
new Demo();// 先加载类 然后创建对象
new Demo();

System.out.println(Demo.num);

}
}

输出:

静态代码块
实例代码块
实例代码块
10


举报

相关推荐

0 条评论