javaSE07基础-static 关键字

it2025-04-28  15

static 关键字

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

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

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

static String school

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

当所有对象的某一个值都相同时,加一个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)