所谓JAVA中static的使用

 
 
Java 中被 static 修饰的成员称为静态成员或类成员,它是属于整个类所共有,也就是该类的所有对象所共有,不止属于某个对象, static 可以修饰变量、方法和代码块.
 修饰变量
 1.静态成员可以使用类名直接访问,也可以使用对象来访问。当      然,鉴于他作用的特殊性更推荐用类名访问。
 2.静态成员属于整个类,当系统第一次使用该类时,就会为其分      配内存空间直到该类被卸载才会进行资源回收.  代码如下:
java
package com.lingyun.demo;
publicclassHelloWorld {
 static String hobby = “lingyun”;
 publicstaticvoidmain(String[] args) {
   System.out.println(“通过类名访问hobby” + HelloWorld.hobby);
   HelloWorld hello = new HelloWorld();
   System.out.println(“通过对象访问hobby” + hello.hobby);
   hello.hobby = “凌云”;
   System.out.println(“通过类名访问hobby” + HelloWorld.hobby);
 }
}
  修饰方法
* 1.与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。代码如下:
java
package com.lingyun.demo;
publicclassHelloWorld {
 publicstaticvoidprint() {
   System.out.println(“欢迎到中国!”);
 }
 publicstaticvoidmain(String[] args) {
   // 直接使用类名调用静态方法
   HelloWorld.print();
//    也可以使用对象来调用静态方法
   HelloWorld demo = new HelloWorld();
   demo.print();
 }
}
 2. 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态        成员。如果希望在静态方法中调用非静态变量,可以通过创建类的对        象,然后通过对象来访问非静态变量.
3.在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,静     态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。      代码如下:
java
package com.lingyun.demo;
publicclassHelloWorld {
 String name;
 static String hobby;
 publicstaticvoidprint() {
 }
 publicstaticvoidmain(String[] args) {
//    静态方法中可以直接调用同类中的静态成员
   System.out.println(“欢迎到中国!”+HelloWorld.hobby);
//    在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。
   HelloWorld demo = new HelloWorld();
   System.out.println(“欢迎到中国!”+demo.name);
 }
}
4.普通成员必须通过对象来调用代码如下:
java
package com.lingyun.demo;
publicclassHelloWorld {
 static String hobby;
 public  voidshow() {
   System.out.println(“欢迎到中国!”);
 }
publicstaticvoidprint(){
 System.out.println(“欢迎到中国!”);
}
 
 publicstaticvoidmain(String[] args) {
   System.out.println(“欢迎到中国!”+HelloWorld.hobby);
//  普通成员方法必须通过对象来调用
   HelloWorld demo = new HelloWorld();
   demo.show();
//    可以直接调用静态方法
   print();
 }
}
 静态初始化态
1.Java 中可以通过初始化块进行数据赋值.代码如下:
java
publicclassHelloWorld{
//定义一个成员变量;
String name;
//为初始化块为成员变量赋值;
name=“凌云“;
}
}
 2.在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。代码如下:
java
package com.lingyun.demo;
publicclassHelloWorld {
 String name; // 声明变量name
 String sex; // 声明变量sex
 staticint age;// 声明静态变量age
 // 构造方法
 publicHelloWorld() {
   System.out.println(“通过构造方法初始化name”);
   name = “tom”;
 }
 // 初始化块
 {
   System.out.println(“通过初始化块初始化sex”);
   sex = “男”;
 }
 // 静态初始化块
 static {
   System.out.println(“通过静态初始化块初始化age”);
   age = 20;
 }
 publicvoidshow() {
   System.out.println(“姓名:” + name + “,性别:” + sex + “,年龄:” + age);
 }
 publicstaticvoidmain(String[] args) {
   // 创建对象
   HelloWorld hello = new HelloWorld();
   // 调用对象的show方法
   hello.show();
 }
}
 3.程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象时并不会执行静态初始化块。代码如下;
java
package com.lingyun.demo;
publicclassHelloWorld {
 int num1; // 声明变量num1
 int num2; // 声明变量sex
 staticint num3;// 声明静态变量num3
 // 构造方法
 publicHelloWorld() {
   System.out.println(“通过构造方法初始化num1”);
   num1 = 88;
 }
 // 初始化块
 {
   System.out.println(“通过初始化块初始化num2”);
   num2 = 89;
 }
 // 静态初始化块
 static {
   System.out.println(“通过静态初始化块初始化age”);
   num3 = 20;
 }
 publicstaticvoidmain(String[] args) {
   // 创建hello对象
   HelloWorld hello = new HelloWorld();
   System.out.println(“num1是” + hello.num1);
   System.out.println(“num2是” + hello.num1);
   System.out.println(“num3是” + num3);
//    创建新的对象hello2
   HelloWorld hello2 = new HelloWorld();
 }
}
本站所有文章均来自互联网,如有侵权,请联系站长删除。极客文库 » 所谓JAVA中static的使用
分享到:
赞(0)

评论抢沙发

评论前必须登录!