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

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

时间2025-08-03 08:54:34分类IT科技浏览4978
导读: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
scm.exe(scm.exe – scm是什么进程 有什么用) word下划线上怎么打字不延长下划线该怎么设置(Word下划线怎么打)