上节课,我们只是微微提到了static,今天我们来具体讲讲static的用法
static
1.类名.静态成员变量(上篇博客Java入门十一有讲)
为了方便大家查看,我把链接放在这里Java入门11——关键字总结+static-CSDN博客
2.类名.静态成员方法
这里,我们首先创建两个类,分别是java12和demo1,然后调用demo1中名字为action的方法,我们发现可以直接用 类名.静态成员变量 来调用函数,不需要实例化对象
代码如下:
public class demo1 {
public String name;
public int age;
public static void action(){
System.out.println("animal action");
}
public demo1(String name, int age) {
this.name = name;
this.age = age;
System.out.println(this.name + " " + this.age);
}
}
public class java12 {
public static void main(String[] args) {
demo1.action();
}
}
我们来看一下输出的结果~
3.静态代码块 》实例代码块 》构造方法
在这个地方,主要跟大家讲一下他们执行的先后顺序,首先我们要知道什么是代码块~
在 Java 中,代码块是用大括号 {}
括起来的一段代码,比如静态代码块为如下格式:
static {
}
实例代码块则直接是大括号,接下来我们做个演示,让大家理解它们执行的顺序~
public class demo2 {
public demo2(){
System.out.println("构造方法代码块");
}
{
System.out.println("实例代码块");
}
static{
System.out.println("静态代码块1");
}
}
public class java12 {
public static void main(String[] args) {
demo2 test = new demo2();
System.out.println(test);
}
}
我们来看一下运行结果:
这个时候我们发现,它们执行的顺序为静态代码块 》实例代码块 》构造方法
那么下面这个 demo2@6504e3b2 又是什么东西嘞~
原来,在我们调用test的时候,它会自动调用底层的代码toString,在toString中,如果为空则返回一个类似于地址的东东,那这个时候我们不想让它输出这么一堆,只想输出一个demo2怎么办呢?
很简单,我们只需要重写一下这个方法,也就是加入这么几行:
我们再来看看整体代码:
public class demo2 {
public demo2(){
System.out.println("构造方法代码块");
}
{
System.out.println("实例代码块");
}
static{
System.out.println("静态代码块1");
}
@Override
public String toString() {
return "demo2";
}
}
这个时候我们再来看输出结果:
就完美打印了demo2~
4.静态内部类
接下来,我们再来讲讲静态内部类~
接下来我们要写一个demo3为外部类,innerDemo3为内部类的代码举例
代码如下:
public class demo3 {
public int age;
public String name = "You";
public static String avtion = "code!!!";
public static class innerDemo3{
public void print(){
System.out.println(avtion);
}
}
}
public class java12 {
public static void main(String[] args) {
demo3.innerDemo3 test = new demo3.innerDemo3();
test.print();
}
}
我们来看一下打印结果~
code!!!就成功的打印出来了,这个innerDemo3类,甚至 直接用外部类直接访问,然后new一个就可以,但是注意,这里在外部类,只有被static修饰才能被内部类所用
如果不是静态成员变量就不可以,我们改下demo3里的代码,引用name看看会不会报错:
public class demo3 {
public int age;
public String name = "You";
public static String avtion = "code!!!";
public static class innerDemo3{
public void print(){
System.out.println(name);
}
}
}
运行结果如下:
我们发现就报错了
好啦,今天的内容就到这里了,这就是 static 的全部内容~大家下来要多动手实操哦~
加油!!!
标签:Java,代码,System,static,println,toString,public,out From: https://blog.csdn.net/2302_81032013/article/details/143505544