package oop7;
//static:静态的
public class Student {
//静态属性
private static int age;//静态变量 多线程1
private double score;//非静态变量
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 oop7;
//static:静态的 和类一块加载
public class Student {
//静态属性
private static int age;//静态变量 多线程1
private double score;//非静态变量
//静态方法
public void run() {
go();/*类中非静态方法可访问静态方法*/
}
public static void go() {
}
public static void main(String[] args) {
new Student().run();//对象.方法 调用
Student.go();
go();//和上边那条代码表达意思一样
//run();/*但静态方法不能访问非静态方法*/
}
}
package oop7;
public class Person {
{
//代码块(匿名代码块)//创建对象的时候就自动创建了,在构造器之前
}
static {
//静态代码块//类一加载就直接执行
}}
package oop7;
public class Person {
{
System.out.println("匿名代码块");//第二执行
}
static {
System.out.println("静态代码块");//第一执行
}
public Person() {//构造器(也就是构造方法)
System.out.println("构造方法");//第三执行
}
public static void main(String[] args) {
Person person1 = new Person();
}
}
package oop7;
public class Person {
{//赋初始值
System.out.println("匿名代码块");//第二执行
}
static {//只执行一次
System.out.println("静态代码块");//第一执行
}
public Person() {//构造器(也就是构造方法)
System.out.println("构造方法");//第三执行
}
public static void main(String[] args) {
Person person1 = new Person();
System.out.println("===============");
Person person2 = new Person();
}
}
package oop7;
public class Test {
public static void main(String[] args) {
System.out.println(Math.random());//输出随机数
}
}
每次执行输出的数是不一样的
package oop7;
//静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;//数学的那个派
public class Test {
public static void main(String[] args) {
System.out.println(Math.random());//输出随机数
System.out.println(random());
System.out.println(PI);
}
}
如果一个类被final定义,那这个类就没办法去继承
package oop7;
public final class Person {
}
package oop7;
public class Student extends Person{//继承不了,会报错
}