public class StaticStu{
/*
方法签名(方法名+形参列表)和方法名
static:静态的,从属于类的
静态的属性:不具备对象个体特征,一个类通用的属性,我们定义为静态属性;(系统配置项等)
static 数据类型 变量名;
静态的方法:一个类通用的方法,定义为静态方法(工具方法等);
public static 返回值类型 方法名
静态的属性和方法,都建议直接使用
类名.属性名 类名.方法名()
大概了解jvm的类加载机制:
1.首次使用一个类时,加载类信息(生成对象,调用静态属性和方法,子类被加载,反射的时候)
2.加载并初始化静态的资源;
3.执行类相关的动作;
注意点:
1.静态的场景中,不能使非静态的资源
2.非静态的场景中,可以使用静态的资源(静态先于成员存在)
3.对象可以调用静态的资源,但是不被建议
拓展:
静态块:
在类被第一次加载的时候,会执行一次
静态的资源在被加载的时候,是从上往下依次加载;
静态块->构造块->构造器
static与this:
1.this指向当前对象,可以调用静态的资源
2.静态的场景中可以使用this吗?不行,静态资源初始化的时候,还不存在当前对象
*/
public static void main(String[] args){
System.out.println(Dog.eyeCount);
//Dog.run();
Dog dog = new Dog();
dog.name = "旺财";
dog.shout();
dog.run();//不建议使用对象来调用静态的资源
Dog dog1 = new Dog();
}
}
class Dog{
{
System.out.println("调用了构造块");
}
static{
eyeCount = 2;
System.out.println("调用了静态块");
}
static int eyeCount;
String name;
double height;
char sex;
int price;
boolean cute;
public static void run(){
System.out.println("用四条腿奔跑");
}
public void shout(){
System.out.println(name+"在咆哮");
this.run();
}
}
/*
方法签名(方法名+形参列表)和方法名
static:静态的,从属于类的
静态的属性:不具备对象个体特征,一个类通用的属性,我们定义为静态属性;(系统配置项等)
static 数据类型 变量名;
静态的方法:一个类通用的方法,定义为静态方法(工具方法等);
public static 返回值类型 方法名
静态的属性和方法,都建议直接使用
类名.属性名 类名.方法名()
大概了解jvm的类加载机制:
1.首次使用一个类时,加载类信息(生成对象,调用静态属性和方法,子类被加载,反射的时候)
2.加载并初始化静态的资源;
3.执行类相关的动作;
注意点:
1.静态的场景中,不能使非静态的资源
2.非静态的场景中,可以使用静态的资源(静态先于成员存在)
3.对象可以调用静态的资源,但是不被建议
拓展:
静态块:
在类被第一次加载的时候,会执行一次
静态的资源在被加载的时候,是从上往下依次加载;
静态块->构造块->构造器
static与this:
1.this指向当前对象,可以调用静态的资源
2.静态的场景中可以使用this吗?不行,静态资源初始化的时候,还不存在当前对象
*/
public static void main(String[] args){
System.out.println(Dog.eyeCount);
//Dog.run();
Dog dog = new Dog();
dog.name = "旺财";
dog.shout();
dog.run();//不建议使用对象来调用静态的资源
Dog dog1 = new Dog();
}
}
class Dog{
{
System.out.println("调用了构造块");
}
static{
eyeCount = 2;
System.out.println("调用了静态块");
}
static int eyeCount;
String name;
double height;
char sex;
int price;
boolean cute;
public static void run(){
System.out.println("用四条腿奔跑");
}
public void shout(){
System.out.println(name+"在咆哮");
this.run();
}
}
更多java知识,请访问:
How2J 的 Java教程