java中static详解
Java中static(随着类的出现而出现):
-
适用范围:可以修饰变量和方法
-
静态(
static)修饰如下:
a.变量:称为类变量、静态变量
b.方法:称为类方法、静态方法
c.代码块:称为静态代码块
3.特点:
a.随着类的加载而加载
public class Demo {
//创建一个类,定义一个静态变量,一个实例变量
String name="赵丽颖";
static String sex="男";
// 在mian方法里面调用这两个变量是不一样的
public static void main(String[] args) {
// 静态变量可以通过类调用也可以通过对象调用,而实例变量只能通过对象调用
System.out.println(Demo.sex);
Demo demo=new Demo();
System.out.println(demo.sex);
System.out.println(demo.name);
}
}
b.优先于对象存在 (为创建对象的时候就已经存在)
c.被类的所有对象共享(静态变量随着类的加载出现,全局中类只会被加载一次,静态会被所有对象共享)
public class Demo {
//创建一个类,定义一个静态变量,一个实例变量
static int age=18;
int a=10;
public static void main(String[] args) {
// 静态变量是被所有对象共享的,实例对象是每个对象里面都是独立的
// demo1,demo2对age都进行了修改,以最终修改为主
Demo demo1=new Demo();
demo1.age=22;
demo1.a=5;
Demo demo2=new Demo();
demo2.age=30;
demo2.a=50;
System.out.println(demo1.age);
System.out.println(demo1.a);
System.out.println(demo2.age);
System.out.println(demo2.a);
}
}
d.可以通过类名调用
4.类的成员变量可以分为以下两种:
- 静态变量(或称为类变量),指被 static 修饰的成员变量。
- 实例变量,指没有被 static 修饰的成员变量。
5. 注意事项:
a.在静态方法中不可以使用this关键字(静态方法随着类的出现而出现,this指向的是当前对象,类出现时对象还没有出现,所以不能用this)
b.静态方法只能访问静态的成员变量和静态的成员方法(静态方法随着类的出现而出现,成员变量,成员方法需要对象的调用,类出现时对象还没有出现)
c.子类不能重写父类中含有static,final,private修饰的方法
6.静态变量和成员变量的区别:
a. 所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
b. 内存中位置不同
静态变量存储于方法区的静态区(常量池)
成员变量存储于堆内存
c.内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
d.调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
7.代码块
- 定义:在Java中,使用{}括起来的代码被称为代码块,根据位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块。
-
public class Demo { static { System.out.println("Demo 静态代码块"); } { System.out.println("Demo 代码块"); } public Demo() { System.out.println("Demo 构造方法"); } } public class Test { static { System.out.println("我是静态代码块"); } public static void main(String[] args) { System.out.println("我是main方法"); Demo demo1=new Demo(); Demo demo2=new Demo(); } }![]()


浙公网安备 33010602011771号