Java之static静态对象 |
您所在的位置:网站首页 › js对象声明静态变量是什么 › Java之static静态对象 |
static关键字: 1.概念: 被该类的所有对象共享使用,不依赖于某个具体的对象,和对象无关,依赖于类,在内存中唯一只有一份 2.类的加载过程: 第一次使用new创建Student类的对象时,首先检查.class文件,是否被加载到方法区中,如果没有,把 Student类的.class文件加载到方法区中(此时还没有对象),如果.class文件中有static静态修饰的内容, 会把static静态修饰的内容,加载方法区的静态区中,并且要完成静态成员的初始化然后: 才进行对象的创建。 所以: 先有静态代码块,才加载对象。 static修饰修饰成员变量(类变量: 依赖于类,与对象无关) 1.定义格式: static 数据类型 变量名称 = 数据值; 2.使用格式: 类名.静态成员变量名称; 推荐使用 对象名.静态成员变量名称; 不推荐使用 static修饰成员方法的使用static修饰成员方法(类方法: 依赖于类,与对象无关) 1.定义格式: public static 返回值类型 方法名称(参数列表...) {...} 2.使用格式: 类名.静态成员方法名称(...) 推荐使用 对象名.静态成员方法名称(...) 不推荐使用 3.注意: 静态成员变量也有默认初始化值 public class JavaEE372Student { String name;//不能使用static修饰: 属于每个对象的特有数据 static String room;//使用static修饰: 属于所有对象的共享数据 //定义静态方法 public static void show() { System.out.println("班级: "+room); } } //测试类 public class Demo05Static { public static void main(String[] args) { System.out.println(JavaEE370Student.room);//null //创建JavaEE372Student类的对象 JavaEE372Student stu = new JavaEE372Student(); //不推荐使用对象调用静态成员 System.out.println(stu.room);//null System.out.println("---------"); //给静态成员赋值 JavaEE372Student.room = "HMTBD1002"; System.out.println(JavaEE372Student.room);//HMTBD1002 System.out.println(stu.room);//HMTBD1002 System.out.println("---------"); JavaEE372Student stu2 = new JavaEE372Student(); stu2.room = "HMTBD1003"; System.out.println(stu.room);//HMTBD1003 System.out.println(stu2.room);//HMTBD1003 System.out.println(JavaEE372Student.room);//HMTBD1003 System.out.println("---------"); //调用静态成员方法 //推荐使用类名调用 JavaEE372Student.show();//班级: HMTBD1003 //不推荐使用对象调用 stu.show();//班级: HMTBD1003 } } 静态代码块静态代码块 1.格式: static { ... } 2.特点: (1)假如只创建对象,静态代码块会优先于构造方法执行,唯一执行一次 (2)静态代码块,随着类的加载而加载并唯一执行一次 (3)完成静态成员变量的赋值,没有赋值,会有默认初始化值 (4)静态代码块,仍然属于静态内容,内部不能使用非静态 (5)完成项目的初始化工作 /* 静态代码块 1.格式: static { ... } 2.特点: (1)假如只创建对象,静态代码块会优先于构造方法执行,唯一执行一次 (2)静态代码块,随着类的加载而加载并唯一执行一次 (3)完成静态成员变量的赋值 (4)静态代码块,仍然属于静态内容,内部不能使用非静态 (5)完成项目的初始化工作 */ public class Demo07StaticKuai { public static void main(String[] args) { //创建对象 //Person p = new Person(); //Person p2 = new Person(); System.out.println(Person.country); } } //此类只针对咱们中国人 public class Person { String name;//不能使用static修饰: 每个对象的特有数据 static String country = "CHINESE";//必须使用static修饰: 所有的对象的共享数据 //空参构造方法 public Person(){ System.out.println("空参构造被执行了..."); } //静态代码块 static { System.out.println("静态代码块执行了..."); //(3)完成静态成员变量的赋值 country = "CHINA"; //(4)静态代码块,仍然属于静态内容,内部不能使用非静态 /* name属于非静态成员变量,必须由对象调用, 但是静态代码块执行时,还没有完成对象的创建, 所以静态代码块中不能使用非静态的内容 */ //System.out.println(name); /* this代表对象,但是静态代码块执行时,还没有完成对象的创建 */ //System.out.println(this.name); //(5)完成项目的初始化工作 init(); } //模拟项目初始化的方法 public static void init() { System.out.println("项目正在完成初始化,需要稍等10秒钟...."); for (int i = 10; i > 0; i--) { //此代码直接复制,后面多线程中讲解 try { Thread.sleep(1000);//1000毫秒,程序在此处休眠1000毫秒(1秒) } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(i); } System.out.println("项目初始化完成,你可以尽情使用了...."); } } 静态的注意事项 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |