package Xiaobai; /** * 1.static 声明的成员变量称为静态变量或类变量 * 2、使用static声明的方法称为静态方法 * 3、在类加载的时候,会将静态的内容加载到方法区中的静态域中,静态的内容先于对象的存在, * 这个静态内容被所有该类的对象共享 * 4、普通变量被调用时使用 对象.变量 来进行调用 * 类变量或静态变量可以使用 对象.变量,也可以使用类名.变量来进行调用 * 5、调用静态的方式为:【推荐】 类名.方法(); 对象.方法(); *6、静态变量不能定义在方法中,局部变量是保存在栈中的,而静态变量保存在方法区, 局部变量出了方法就会被栈回收了,而静态变量不会,所以局部变量不能加static关键字,在静态方法中不能直接调用非静态的属性和方法,但反之可以 7、在static中不能使用super和this关键字,在类加载的时候,会将静态的内容加载到方法区中的静态域中,静态的内容先于对象的存在,但是this是指向当前对象的,super是指向父类的对象,所以不能使用 * new TestStatic().tt();//间接调用非静态方法 * static 使用场景: * 某些特定的数据想要在类中共享时,只有一块--》可以使用static * 静态属性:(类变量) * 非静态属性:(实例变量) */ public class TestStatic { /* //属性 int age; String name ; static char nation; public static void main(String[] args) { TestStatic.nation = '汉'; //创建对象 TestStatic t1 = new TestStatic(); //为属性赋值 t1.age = 12; t1.name = "张三"; // t1.nation = '汉'; TestStatic t2 = new TestStatic(); //为属性赋值 t2.age = 8; t2.name = "李四"; // t2.nation = '汉'; System.out.println(t1.nation); System.out.println(t2.nation); }*/ int a; static int b; static int widjh; public static void gg() { String nn; System.out.println("gg"); // System.out.println(a);1、在静态方法中不能直接访问非静态的属性 //System.out.println(new TestStatic().a); //static int n;静态变量不能定义在静态方法中 //new TestStatic().tt();//间接调用非静态方法 } void tt() { System.out.println("tt"); System.out.println(a); System.out.println(b); //static int w;静态变量不能定义在普通方法中 this.gg(); } public static void main(String[] args) { TestStatic hi = new TestStatic(); // System.out.println(this.a);2.在静态方法中,不能用this关键字 // hi.b = 20;//对象.静态属性 // TestStatic.b = 19;//类名.静态属性(推荐) // //调用方法 // TestStatic.widjh = 2; // //调用静态的方式为: 类名.方法(); 对象.方法(); //TestStatic.gg(); // hi.gg(); // gg();//调用静态方法 在同一个类中可以直接调用 hi.tt(); } } //声明一个静态属性 /* static int count; public TestStatic() {//无参的构造方法 count++; System.out.println("创建了"+count+"个对象"); } /** *匿名对象的特点: * 一次性,只能使用一次 * 格式: * new 类名(); * 匿名对象可以作为实际参数进行传递 public static void main(String[] args) { new TestStatic();//创建匿名对象 new TestStatic();//创建匿名对象 new TestStatic(); } } */
Static
于 2022-01-02 16:33:03 首次发布