-
静态
-
方便在没有创建对象的情况下来进行调用(方法/变量)。
-
static修饰的全局变量被称为静态变量,类变量
package sta;
public class Sta {
public static int a;
//类变量
//无论创建多少个对象,类中的类变量也只有一个
public Sta()
{}
public Sta(int num)
{
// this.a= num;静态资源不需要在构造器中进行初始化
}
public static void main(String[] argv)
{
Sta sta1 = new Sta();
Sta sta2 = new Sta();
//可以通过类的变量去访问类当中的静态修饰符(类变量)
sta1.a = 30;
//但是类变量的标准访问方式应该是:类名,类变量名
//在Java的内存中的方法区中的常量池与静态区
//这两个特殊区域不受Java对象的限制,无论是否创建对象,只要引用类名,那么常量、静态的资源就会被创建
Sta.a = 40;
System.out.println(sta1.a);
System.out.println(sta2.a);
}
}
static修饰的方法被称为静态方法,类方法
package sta;
public class Sta {
public static int a;
String str;
//类变量
//无论创建多少个对象,类中的类变量也只有一个
public Sta()
{}
public Sta(int num)
{
// this.a= num;静态资源不需要在构造器中进行初始化
}
/**
* 非静态方法可以访问类中的属性以及类变量
* 非静态方法可以访问类中的方法以及类方法
*/
public void test1()
{
a = 100;
this.str = "dsja";
this.test1();
}
public void test2()
{}
/**
* 静态方法只可以访问类变量,而不能访问类中的属性
* 静态方法只可以访问类方法,而不能访问类中的方法
* 因为在静态方法中无法确定已经创建了类对象那个
*/
public static void test11()
{
a = 100;
//this 不能访问
}
public static void test22()
{
test11();
}
public static void main(String[] argv)
{
Sta sta1 = new Sta();
Sta sta2 = new Sta();
//可以通过类的变量去访问类当中的静态修饰符(类变量)
sta1.a = 30;
//但是类变量的标准访问方式应该是:类名,类变量名
//在Java的内存中的方法区中的常量池与静态区
//这两个特殊区域不受Java对象的限制,无论是否创建对象,只要引用类名,那么常量、静态的资源就会被创建
Sta.a = 40;
System.out.println(sta1.a);
System.out.println(sta2.a);
}
}
静态语句块
静态初始化代码块
这个代码块不需要创建对象,只要调用了或访问了类就会被执行
用于类变量的初始化操作
创建对象时,向执行父类、子类所有的静态初始化代码块
然后再去创建对象
先父类,再在父类后加上子类的扩展
package sta;
public class Sta {
public static int a;
String str;
//类变量
//无论创建多少个对象,类中的类变量也只有一个
public Sta()
{}
public Sta(int num)
{
// this.a= num;静态资源不需要在构造器中进行初始化
}
/**
* 非静态方法可以访问类中的属性以及类变量
* 非静态方法可以访问类中的方法以及类方法
*/
//静态初始化代码块
static {
a = 30;
System.out.println("调用了静态初始化代码块");
}
public void test1()
{
a = 100;
this.str = "dsja";
this.test1();
}
public void test2()
{}
/**
* 静态方法只可以访问类变量,而不能访问类中的属性
* 静态方法只可以访问类方法,而不能访问类中的方法
* 因为在静态方法中无法确定已经创建了类对象那个
*/
public static void test11()
{
a = 100;
//this 不能访问
}
public static void test22()
{
test11();
}
public static void main(String[] argv)
{
Sta sta1 = new Sta();
Sta sta2 = new Sta();
//可以通过类的变量去访问类当中的静态修饰符(类变量)
sta1.a = 30;
//但是类变量的标准访问方式应该是:类名,类变量名
//在Java的内存中的方法区中的常量池与静态区
//这两个特殊区域不受Java对象的限制,无论是否创建对象,只要引用类名,那么常量、静态的资源就会被创建
Sta.a = 40;
System.out.println(sta1.a);
System.out.println(sta2.a);
}
}