java 类中的细节

java 中类:

类是用于描述统一类型的对象的一个抽象的概念,类中定义了这一类对象所因具有的静态和动态属性。

举例: 瓶子
静态: 有一个口、长长的形状-->java类中的成员变量
动态属性: 可以倒水 -->java类中的方法(函数)

 1 package com.Demo;
 2 import java.lang.*;
 3 
 4 public class Demo {
 5     //成员变量
 6    private int id;
 7    private String name;
 8    
 9     //有参构造方法
10    Demo(int _id,String _name){
11        id=_id;
12        name=_name;
13    }
14  
15     public int getId() {
16         return id;
17 }
18    /*
19     * 为了考虑安全性,不能修改身份号
20     * public void setId(int id) {
21     * this.id = id;
22 }*/
23 
24     public String getName() {
25         return name;
26 }
27 
28     public void setName(String name) {
29         this.name = name;
30 }
31    /*
32      * 输出信息
33     */
34     public void printInfo() {
35         System.out.println("学生身份号:"+id);
36         System.out.println("学生姓名:"+name);
37     }
38 
39    //主函数
40     public static void main(String[] args) {
41         Demo tom=new Demo(20,"张三");
42         Demo john=new Demo(21,"李四");
43         tom.printInfo();
44     }
45    
46 }
47     

代码的详细理解:

Demo tom=new Demo(20,"张三");

Demo john=new Demo(21,"李四");

 

Demo tom 是局部变量,同时也是引用类型。类的对象tom存放在stack(栈)中

new Demo(20,"张三")是new出来的东西,存放在heap(堆)中,与此同时new Demo(20,"张三") 会调用有参构造函数 Demo(int _id,String _name)。

_id,_name也是也是局部变量,但是id,name是"全局变量"!

_id,_name,tom都是局部变量存放在stack中!

然而 id,name,new class()存放在heap中!

此时整句Demo tom=new Demo(20,"张三")执行结束;

 

分析内存的变化:

调用完 Demo tom=new Demo(20,"张三"); 这句语句时,stack中的局部变量(_id,_name)全都消失,但是保留类的对象 tom!

 

构造方法问题:

(1).如果不写构造方法,系统会自动生成默认的构造方法(无参数). 如果有写有参数构造方法,系统不会生成默认的构造方法(无参数).

 

posted @ 2017-02-15 22:19  勤学鸟  阅读(154)  评论(0编辑  收藏  举报