清水鱼:static 关键字
程序员文章站
2022-03-21 07:49:12
static关键字(1)static修饰符可以修饰属性,我们叫静态变量或类变量。可以修饰方法,我们叫静态方法或类方法。可以修饰代码块,我们叫静态块。不使用static修饰的属性,我们叫实例变量。不使用static修饰的方法,我们叫实例方法。不使用static修饰的代码块,我们叫普通块。同义词:实例==对象我们把创建对象的过程,叫实例化。(2)成员的调用类变量和类方法属于类,可以使用类名直接调用;实例变量和实例方法属于对象,可以使用对象名直接调用;所有类变量和类方法可以共享给对象使用...
static关键字
(1)static修饰符
可以修饰属性,我们叫静态变量或类变量。
可以修饰方法,我们叫静态方法或类方法。
可以修饰代码块,我们叫静态块。
不使用static修饰的属性,我们叫实例变量。
不使用static修饰的方法,我们叫实例方法。
不使用static修饰的代码块,我们叫普通块。
同义词:实例==对象
我们把创建对象的过程,叫实例化。
(2)成员的调用
类变量和类方法属于类,可以使用类名直接调用;
实例变量和实例方法属于对象,可以使用对象名直接调用;
所有类变量和类方法可以共享给对象使用,所以可以通过对象名调用类变量和类方法。
综上所述:对象可以调任何属性和方法,类只能调用类变量和类方法。
public class te {
public int a=3;
public static int b=6;
public static void ss(){
System.out.println("我是静态方法");
}
public void zz(){
System.out.println("我是实例方法");
}
}
public class jie01 {
public static void main(String[] args) {
new StaticBlock();
te st=new te();
System.out.println(st.a);
te.ss();
st.ss();
// System.out.println(te.a);类只能调用类方法和类变量,如何调用实例方法和实例变量,
}
}
大家访问的类变量和类方法,都是同一个变量和方法!!!
每个对象调用的实例变量和实例方法,都是每一个对象独有的!!!
(3)方法之间的调用
实例方法中可以直接调用任何属性和方法。
类方法中只能直接调用类变量和类方法,不能直接调用实例变量和实例方法。
如果在类方法中想要调用实例变量和实例方法,需要指定对象。
public class StaticDemo {
public int a;
public static int b;
public void test1() {
System.out.println(11);
test2();
test11();
System.out.println(a);
System.out.println(b);
}
public static void test2() {
System.out.println(22);
// test11();
// System.out.println(a);
StaticDemo sd=new StaticDemo();
sd.test11();
sd.a=9;
test22();
System.out.println(b);
}
public void test11() {
System.out.println(1111);
}
public static void test22() {
System.out.println(2222);
}
}
(4)静态块
使用static修饰的代码块,我们叫静态块。
它和属性、方法、构造器并列。
静态块中只能直接访问静态资源,如果需要访问实例成员需要指定对象。
代码块在调用构造器的时候执行。
public class jie01 {
public static void main(String[] args) {
new StaticBlock();
}
}
class StaticBlock {
{ final int a=1;
System.out.println("普通代码块:"+a);
}
static {
int b=2;
System.out.println("静态代码块:"+b);
}
public StaticBlock() {
int b=3;
System.out.println("构造代码块:"+b);
}
}
public class jie01 {
public static void main(String[] args) {
new StaticBlock();
new StaticBlock();
}
}
执行过程:
先执行静态块;
在执行普通代码块;
最后执行构造器方法体。
注意:静态代码块有且仅在第一次访问该类时执行一次,后面就不在执行了。
执行结果:
静态代码块:2
普通代码块:1
构造代码块:3
普通代码块:1
构造代码块:3
本文地址:https://blog.csdn.net/qq_41284819/article/details/110822725