类之成员变量(里面的很多种)
图片查看可以点击链接(如果失效请@我):
文档:类之成员变量.md
链接:http://note.youdao.com/noteshare?id=5aaff2fbd1d0ca6ae00adac060a1a924&sub=74D293EF95BB4DF1B271C801FE1C0ADE
//类又以下五个部分构成
class 类名{
成员变量
方法(){}
构造方法
代码块 //static静态代码段 构造代码块{}
内部类 class 类名 {
}
}
- 成员变量
定义在类的内部,方法的外部
package 成员变量;
public class dog {
String name;
int age;
void barking()
{
int count = 3;
for (int i = 0; i < count; i++) {
System.out.println("wangwang");
}
}
}
package 成员变量;
public class text {
public static void main(String[] args) {
dog d = new dog();
d.name = "w";
d.barking();//其中有一个局部变量是count,它在d.count中是找不到的,
//因为new dog()在堆中,还没有创建出来barking,但是局部变量count在barking中,也就是在栈里面
}
}
局部变量不用,可以暂时不用赋值,但是如果用,就必须赋值,否者会报错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Msmd1HYP-1591433907663)(7D492F210B9841DCABB998C4ECA4A19C)]
判断:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OYaK9hsB-1591433907664)(AD2B9E47C6B24A4088AAB6D67D72F9B6)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kNoZh3xA-1591433907666)(383187DD9BFC432B8D2E395E68D5D08A)]
判断题,分析内存变化:
- 栈:student s
- 堆:new student() 其中的成员变量和方法一起被new出来,在堆中
- 堆中出现new student()的同时会产生一个 堆地址 0x1122
- 0x1122传给栈中的 s
- student.method() 通过地址0x1122找到它并在栈中创建出来
- syso中的name根据就近原则,找到method中的name =‘张三’,并输出
- 完成后,销毁
- 创建形参method(string name),根据就近原则,找到name=李四
- 完成后销毁
方法在内存中的全过程:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-okBJ4qQF-1591433907668)(20DE43D327A64BEB930BFE3A5718B44B)]