面向对象14:static关键字详解
常量类型:final
public final class Person{}
- final定义后不能被继承(extends),final定义后”断子绝孙“
代码块
1. 匿名代码块
- 处于构造器之前
//2:可以用来赋初始值
{
//代码块(匿名代码块),在构造器之前
System.out.println("匿名代码块");
}
2.静态代码块
- 静态代码块,当类一加载就执行,永久只执行一次
//1:只执行一次,当第二次实例化就不执行
static{
//静态代码块,当类一加载就执行,永久只执行一次
System.out.println("静态代码块");
}
例子
package com.oop.staticDemo08;
//final:常量类型 public final class Person:final定义后不能被继承(extends),final定义后”断子绝孙“
public class Person {
//2:可以用来赋初始值
{
//代码块(匿名代码块),在构造器之前
System.out.println("匿名代码块");
}
//1:只执行一次,当第二次实例化就不执行
static{
//静态代码块,当类一加载就执行,永久只执行一次
System.out.println("静态代码块");
}
//3
public Person(){
System.out.println("构造方法");
}
public static void main(String[] args) {
Person person1 = new Person();
System.out.println("=========");
Person person2 = new Person();
}
}
结果
-
静态代码块
匿名代码块构造方法
============
匿名代码块
构造方法
静态变量和非静态变量
private static int age;//静态变量 多线程
private double score;//非静态变量
静态方法和非静态方法
public void run(){
}
public static void go(){
//静态方法和类一起产生可以任何方法内调用,非静态方法要实例化后 属性.方法 调用
}
使用
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(Student.age); //静态变量可以用类名调用,对类而言内存中只有一个可以被类中的所有实例共享
//System.out.println(Student.score);//非静态变量不能用类名调用
System.out.println(s1.age);
System.out.println(s1.score);
}
例子
package com.oop.staticDemo08;
//static
public class Student {
private static int age;//静态变量 多线程
private double score;//非静态变量
public void run(){
}
public static void go(){
//静态方法和类一起产生可以任何方法内调用,非静态方法要实例化后 属性.方法 调用
}
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(Student.age); //静态变量可以用类名调用,对类而言内存中只有一个可以被类中的所有实例共享
//System.out.println(Student.score);//非静态变量不能用类名调用
System.out.println(s1.age);
System.out.println(s1.score);
}
}

浙公网安备 33010602011771号