第6关:static关键字
任务描述
本关任务:使用static关键词设置方法和变量的属性。
相关知识
为了完成本关任务,你需要掌握:1.static关键字有什么作用,2.怎么使用static关键字。
什么是static关键字
static关键字我们经常接触,不过我们一直没有讨论过它到底是什么,有什么具体的作用,那static关键字是什么呢,有啥用呢?
static是静态的意思,是一个修饰符,就像是一个形容词,是用来形容类,变量,方法的。
static修饰变量,这个变量就变成了静态变量,修饰方法这个方法就成了静态方法,
static关键字方便在没有创建对象的情况下来进行调用(方法/变量)。
static关键字的作用
static关键字你可以理解为是一个形容词,一般是用来形容类、方法、变量,代码块,还有一个作用是用来静态导包,本关我们只讨论它的三个用法。
1.修饰变量
不使用static关键字访问对象的属性:
使用static关键字访问对象的属性:
注意:如果一个类的成员变量被static修饰了,那么所有该类的对象都共享这个变量。无论这个类实例化多少对象,它的静态变量只有一份拷贝。
如:
输出:
李四
李四
李四
2.修饰方法
用static关键字修饰的方法叫做静态方法。静态方法我们已经用过,它有一个特点相信你已经很熟悉,那就是不需要创建对象就可以直接使用。
如:
注意:
静态方法不能使用类的非静态变量;
静态方法可以直接调用静态方法,但是调用普通方法只能通过对象的实例才能调用。
3.静态代码块
我们先来看一段静态代码块的运行效果:
输出结果:
我被调用了
上图中static{ }就是一个静态代码块。
我们在main方法中没有编写任何代码,可是运行的时候,程序还是会输出我被调用了,由此我们可以发现静态代码块是不需要依赖main方法就可以独立运行的。
关于静态代码块你只需要记住一句话:在类被加载的时候运行且只运行一次。
静态代码块中变量和方法的调用也遵守我们之前所说的规则,即只能直接调用静态的属性和方法。
编程要求
现在编辑器中代码有异常,请利用本关所学知识修改右侧代码使其能输出如下结果:
hello educoder
我叫楚留香
我喜欢在educoder上学习java
注意: 在Java中是不能用static关键字修饰局部变量的,为什么? 因为这个是老大说的,我们做小弟的不能不听呀。
本关概念较多,需要你用心记下来哦,开始你的任务吧,祝你成功!
package step5;
public class Test {
/********** Begin **********/
static String name = "楚留香";
static{
System.out.println("hello educoder");
}
public static void main(String[] args) {
System.out.println("我叫" + name);
study();
}
public static void study(){
System.out.println("我喜欢在educoder上学习java");
}
/********** End **********/
}
有任何问题都可以随时关注私信!