Java static关键字特点
一、特点
1、随着类的加载而加载
2、优先于对象存在
3、被类的所有对象共享
4、可以通过类名调用
二、调用特征
静态方法:
成员变量:只能访问静态变量
成员方法:只能访问静态成员方法
非静态方法:
成员变量:可以访问静态变量,也可以是非静态变量
成员方法:可以访问静态成员方法,也可以是非静态成员方法
简单记:静态只能访问静态
原因:类优先于对象存在
三、案例分析
1 package statics; 2 /** 3 * static关键字,案例1 4 * @author zhongfg 5 * @date 2015-06-16 6 */ 7 class Person { 8 9 private String name; 10 private int age; 11 public static String country; 12 13 public Person(String name, int age) { 14 this.name = name; 15 this.age = age; 16 } 17 18 public Person(String name, int age, String country) { 19 this.name = name; 20 this.age = age; 21 Person.country = country; 22 } 23 24 public void show() { 25 System.out.println("姓名:"+name+",年龄:"+age+",国籍:"+country); 26 } 27 } 28 public class StaticDemo { 29 30 public static void main(String[] args) { 31 32 Person p1 = new Person("凤姐", 30, "中国"); 33 p1.show(); 34 35 Person p2 = new Person("范冰冰", 34); 36 p2.show(); 37 38 Person p3 = new Person("Angelababy", 26); 39 p3.show(); 40 41 System.out.println("-----------------"); 42 43 //修改静态变量的值 44 Person.country = "美国"; 45 p1.show(); 46 p2.show(); 47 p3.show(); 48 } 49 } 50 51 运行结果: 52 姓名:凤姐,年龄:30,国籍:中国 53 姓名:范冰冰,年龄:34,国籍:中国 54 姓名:Angelababy,年龄:26,国籍:中国 55 ----------------- 56 姓名:凤姐,年龄:30,国籍:美国 57 姓名:范冰冰,年龄:34,国籍:美国 58 姓名:Angelababy,年龄:26,国籍:美国
1 package statics; 2 3 class Student { 4 5 int num = 1; 6 static int num2 = 2; 7 8 public void showA() { 9 System.out.println(this.num); 10 getNameA(); 11 getNameB(); 12 } 13 14 public static void showB() { 15 // System.out.println(num); 报错,静态方法不能访问非静态方法 16 System.out.println(num2); 17 // getNameA(); 报错,静态方法不能调用非静态方法 18 getNameB(); 19 } 20 21 public void getNameA() { 22 System.out.println("小明,非静态方法"); 23 } 24 25 public static void getNameB() { 26 System.out.println("小辉,静态方法"); 27 } 28 } 29 public class StaticDemo2 { 30 public static void main(String[] args) { 31 32 Student s = new Student(); 33 s.showA(); 34 35 System.out.println("--------------"); 36 37 //静态方法既可以用类名调用,也可以用对象调用,建议用类名调用 38 Student.showB(); 39 s.showB(); 40 } 41 } 42 43 运行结果: 44 1 45 小明,非静态方法 46 小辉,静态方法 47 -------------- 48 2 49 小辉,静态方法 50 2 51 小辉,静态方法