static(静态)
1.概念
关键字,修饰符 变量,方法,代码块,内部类
2.静态变量
静态变量随着类的加载(方法区的静态常量池)而加载到方法区的静态区, 相当于与类同级也叫类变量,通过类名。形式来调用静态变量也可以通过对象来
调用静态变量。存储在方法区静态区时会默认给静态变量赋予系统默认初始值。
类产生的对象共享同一个静态变量。看静态变量是否需要被所有的对象来共享, 如果需要共享就设置成静态变量。
方法里可以定义静态变量? 静态变量与类同级,只有方法被调用时里面的内容才能出现,前后矛盾,不能 定义
package cn.tedu.staticx;
public class StaticDemo1 {
public static void main(String[] args) {
//创建Person类的对象
Person p=new Person();
p.name="郭靖";
p.age=19;
p.gender='男';
Person p1=new Person();
p1.name="黄蓉";
p1.age=18;
p1.gender='女';
//输出
System.out.println(p.toString());
System.out.println(p1.toString());
}
}
//定义代表人的类
class Person{
//属性
String name;
int age;
static char gender;
//定义方法来输出对象的属性值
public String toString(){
return this.name+","+this.age+","+this.gender;
}
}
*3.静态方法
静态方法会随着类的加载而加载到方法区的静态区,与类同级也叫做类方法, 通过类名.形式来调用也可以通过对象调用。静态区不会对静态方法赋予初始化
值但是被调用就会被加载到栈中执行。
java中静态信息可以直接使用静态信息,但是非静态信息可以直接使用非静态以及 静态。
package cn.tedu.staticx;
public class StaticDemo2 {
//静态变量
static int i=1;
//非静态变量
int j=2;
//静态方法
//静态方法可以直接使用静态信息不能直接使用非静态信息
public static void m(){
System.out.println