Java static静态属性和静态方法内存分析和注意事项静态方法不能调用非静态属性和非静态方法,普通方法可以调用静态属性和方法
来源:互联网 发布:qq空间个性域名注册 编辑:程序博客网 时间:2024/06/15 10:03
Java static 静态属性和方法
1、静态属性和方法从属于类,不从属与对象
2、不能在静态方法中调用非静态变量和非静态方法
3、可以在普通方法中调用静态属性和方法
我们以下面的这个简单的Student类为例
public class Student { //普通属性 private String name; //静态属性又称类属性 private static String id; public Student(String name){ this.name = name; } //静态方法又称类方法 public static void study() { System.out.println(id); } //普通方法 public void doHomework() { }}
那么我们来对下面这个程序来做一下内存分析
Student s1 = new Student("张三");
我们需要注意到的是在通过类模板构建对象的时候,对象中是不包含static静态属性和方法的信息的,很简单,因为static属性和方法从属于类,可以通过类名.例如Student.study()来直接调用
Student.id
以上代码的内存分析就是直接在Student类模板中的static属性和变量专区查找指定的静态属性和方法,而无需通过s1对象
静态方法不能调用非静态属性或非静态方法
例如以下的代码是不合法的
public static void study() { System.out.println(name);//这是不合法的,静态方法不能调用非静态属性 }
由于name是普通方法,外界要操纵普通属性必须通过对象,可以简单的理解为普通属性从属于对象,由于static方法从属于类,所以在静态方法中无法获取普通属性和普通方法
非静态方法可以调用静态属性或静态方法
例如以上面的例子为例,一下的代码是合理的
public void doHomework() { study(); System.out.println(id); }
原因在于,普通方法从属于对象,可以通过这个对象确定方法区的类模板,知道了这个类模板,作为这个类模板中的一部分,静态属性和静态方法自然而然就可以访问到
阅读全文
0 0
- Java static静态属性和静态方法内存分析和注意事项静态方法不能调用非静态属性和非静态方法,普通方法可以调用静态属性和方法
- OGNL调用静态属性和静态方法
- 静态方法和属性调用
- 静态属性和静态方法
- PHP static 静态属性和静态方法
- static静态方法和属性
- 静态字段、静态属性和静态方法
- freemarker之调用JAVA静态方法和静态属性
- java中 静态方法和非静态方法的调用
- java调用静态方法和非静态的方法
- #java#静态方法如何调用非静态方法和变量
- 静态和非静态方法
- 静态方法调用和非静态方法调用
- 【静态和非静态方法】调用静态和非静态方法【原创】
- java中静态属性,静态方法和静态初始化器
- 静态方法和非静态方法的调用
- php静态属性和静态方法
- php静态属性和静态方法
- 【深入浅出jQuery】源码浅析--整体架构
- 堆和栈的区别
- ping工具模拟实现
- 用两个栈实现队列
- struts2与ajax
- Java static静态属性和静态方法内存分析和注意事项静态方法不能调用非静态属性和非静态方法,普通方法可以调用静态属性和方法
- 总结-2017/10/8
- 开放系统互联
- 实验二 线性表综合实验之《单链表》
- java第三天/10.1
- struts2运行流程
- 理论篇~第六章 元数据
- JavaWeb-NewsServlet-大总结
- 每天一个linux命令(4):mkdir命令