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

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

时间2025-09-19 13:10:15分类IT科技浏览5628
导读: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
react router state(React Context源码实现原理详解)