static关键字
1 public class Student { 2 String name; 3 int id; 4 5 static int ss; 6 public static void printSS(){ 7 //为什么报错 静态方法 不能引用 非静态变量? 8 //分析内存 因为 静态方法从属于类Student、 非晶态变量name 从属于对象 9 //同理 静态方法不能调用 非静态方法 study(),satHello() 方法也是 10 //name="高琪"; 11 //study(); 12 //sayHello(); 13 //记住2句话就行了 14 //1 静态方法只能调用静态方法 15 //2 非静态 可以调用非静态方法 也可以调用 静态方法 16 System.out.println("哈哈,我是静态方法!不能调用非静态方法哦,因为静态方法是属于类的,即静态方法是随着类的加载而加载的," + 17 "在加载类时,程序就会为静态方法分配内存,而非静态方法是属于对象的,对象是在类加载之后创建的," + 18 "也就是说静态方法先于对象存在,当你创建一个对象时,程序为其在堆中分配内存," + 19 "一般是通过this指针来指向该对象。静态方法不依赖于对象的调用,它是通过‘类名.静态方法名’这样的方式来调用的。" + 20 "而对于非静态方法,在对象创建的时候程序才会为其分配内存,然后通过类的对象去访问非静态方法。因此在对象未存在时非静态方法也不存在," + 21 "静态方法自然不能调用一个不存在的方法。"); 22 } 23 private static Object myObj; 24 public static void main(String args[]){ 25 System.out.println("What is value of myObjc : " + myObj); 26 } 27 public void study(){ 28 //非静态方法可以调用 静态方法 道理很简单 你没写对象名 那么肯定是类的从属静态方法 去类里面 一找就找到了 29 printSS(); 30 System.out.println(name+"在学习"); 31 } 32 public void sayHello(String sname){ 33 System.out.println(name+"对"+sname+"说: 你好"); 34 } 35 }
posted on 2017-09-28 21:21 PoeticalJustice 阅读(149) 评论(0) 编辑 收藏 举报