首页IT科技类 对象 方法(1.类&对象&构造方法)

类 对象 方法(1.类&对象&构造方法)

时间2025-06-20 20:18:35分类IT科技浏览4356
导读:1. 类和对象的内存处理方式 1.1 方法区(method area) 也称静态区,用于存放用户定义的各个类、静态变量等。...

1. 类和对象的内存处理方式

1.1 方法区(method area)

也称静态区              ,用于存放用户定义的各个类             、静态变量等             。

1.2 堆(heap)

堆中存放对象和非静态变量                    。 在使用new关键字产生对象后                    ,对象会存放进堆中进行管理      ,对象名就是对象在堆中的地址       。 对象把被它调用的成员变量直接存储到堆中             。 对象把被它调用的成员方法地址存储到堆中       ,间接调用                    。 堆中的内容会被垃圾回收器回收       。

1.3 栈(stack)

调用的方法都会进入到栈中(包括main方法)                    ,方法执行完成就出栈      。若调用的是对象的方法             ,则会先进入堆中找到这个方法的地址       ,再根据地址进入方法区进行调用                    。

2. 对象作为方法的参数和返回值

对象可作为方法的参数

public void fun(Scanner scan){ int i = scan.nextInt(); System.out.println(i); }

对象可最为方法的返回值

public Student getStu(){ Student stu = new Student(); stu.setName("XiaoMing"); stu.setAge(11); return stu; }

3. 成员变量和局部变量

3.1 基本特征

成员变量位于方法外                    ,可供整个类使用;局部变量位于方法内             ,仅它所在的方法可使用              。 成员变量有默认值null,定义时可不赋值;局部变量没有默认值                    ,定义时必须赋值      。

3.2 内存管理

由于成员变量在类中定义                   ,而类实例化为对象后是进入堆中,故成员变量是在堆中进行管理                   。 局部变量在方法中定义              ,方法是在栈中进行管理                   ,故局部变量也在栈中进行管理              。

3.3 生命周期

局部变量在栈中      ,故最终随方法出栈以结束生命周期              ,周期较短。 成员变量在堆中                    ,故最终以垃圾回收的方式结束周期      ,周期较长                   。

3.4 this关键字的使用

若某个类中       ,局部变量的名称和成员变量名称相同                    ,则可使用this关键字对局部变量进行标识             ,以区分两个变量                    。 若有多个类       ,则this表示的是造成重名的那个类。

4. private型变量的访问

若类中有变量private int age                    ,则在类以外无法直接访问这个变量             。 若要在类外访问private型变量age             ,需在类中定义setAge()和getAge()两个方法,按格式要求                    ,变量名age的首字母必须为大写(idea中使用alt+insert可快速创建)                    。 setAge()和getAge()方法中可编写访问控制语句       。

5. 构造方法

构造方法用于创建对象                   ,若默认的构造方法无法满足使用需求,可自定义构造方法              ,以替代默认方式                   ,在创建对象时提供额外的功能(实现逻辑                    、为变量赋值等)             。

自定义的构造方法名需和类名相同                    。定义构造方法时      ,无需设置返回值类型       。

public class Student { public Student (){ System.out.println("Im a student"); }; }

构造方法可进行重载(可创建多个同名构造方法              ,方法名称相同                    ,但参数列表不同      ,使用时根据参数列表进行区分)      。

public class Student { public Student (){ System.out.println("Im a student"); }; public Student(String name,int age){ System.out.println("My name is"+name+", Im "+age+"years old"); } }

同一个类中的无参构造方法可用this调用本类中的有参构造方法:

public class Student { public Student (){ this("java",18) ;//无参构造方法中调用有参构造方法 System.out.println("Im a student"); }; public Student(String name,int age){ System.out.println("My name is "+name+", Im "+age+" years old"); } /*输出结果: My name is java, Im 18 years old Im a student */ }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
热传导ppt(PointNet解读)