【Java语言基础】构造方法、this和内存

发布于:2022-12-22 ⋅ 阅读:(525) ⋅ 点赞:(0)

目录

1. 构造方法

2. this

3. null

4. 引用类型数组(上)

## 补充:


1. 构造方法

构造函数、构造器、构建器------------------复用给成员变量赋初始值的代码

   - 作用:给成员变量赋初始值
   - 语法:与类同名,没有返回值类型(连void都没有)
   - 调用:在创建(new)对象时被自动调用
   - 若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了构造方法,则不再默认提供
   - 构造方法可以重载

2. this

this:指代当前象,哪个对象调用方法它指的就是哪个对象

   ​      只能用在方法中,方法中访问成员变量之前默认有个this.

   this的用法:

   - this.成员变量名--------------------------访问成员变量

     > 注意:当成员变量与局部变量同名时,若想访问成员变量,则this不能省略

   - this.方法名()-------------------------------调用方法(一般不用,了解即可)

   - this()-----------------------------------------调用构造方法(一般不用,了解即可)

3. null

null表示空,没有指向对象。

   > 注意:若引用的值为null,则该引用不能进行任何点操作了,若操作则发生NullPointerException空指针异常

4. 引用类型数组(上):------记住与基本类型数组的2点区别即可

   - 区别1:给引用类型数组的元素赋值,需要new个对象


     ObserveSubmarine[] oses = new ObserveSubmarine[3]; //创建侦察潜艇数组对象
     oses[0] = new ObserveSubmarine(); //创建侦察潜艇对象
     oses[1] = new ObserveSubmarine();
     oses[2] = new ObserveSubmarine();

     package ooday02;
     //学生类
     public class Student {
         String name; //成员变量
         int age;
         String address;
     
         //构造方法----给成员变量赋初始值
         Student(String name,int age,String address){ //局部变量
             this.name = name;       //ls.name="lisi"
             this.age = age;         //ls.age=24
             this.address = address; //ls.address="JMS"
         }
     
         void study(){
             System.out.println(name+"在学习...");
         }
         void sayHi(){
             System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
         }
     }
     
     package ooday02;
     //构造方法的演示
     public class ConsDemo {
         public static void main(String[] args) {
             //Student s = new Student(); //编译错误,Student类没有无参构造
             Student zs = new Student("zhangsan",25,"LF");
             Student ls = new Student("lisi",24,"JMS");
             zs.sayHi();
             ls.sayHi();
         }
     }


 

## 补充:

1. 成员变量和局部变量是可以同名的,使用时默认采取就近原则,若想访问成员变量,此时this不能省略

2. 何时方法需要带参:

   - 若方法中的数据可以写死(固定的),则不需要传参。若想把方法中的数据不能写死,则必须传参
   - 窍门:当方法不知道要不要参数的时候,就统一先设计为无参的,然后去写方法体,如果方法体中的数据都能正常写出来,意味着就不需要传参,但是若写着写着不知道数据怎么写了,那就需要传参过来。

3. 内存管理:由JVM来管理的

   - 堆:new出来的对象(包括成员变量、数组的元素)

   - 栈:局部变量(包括方法的参数)

   - 方法区:

     > 注意:基本类型变量中装的是具体的数,引用类型变量中装的是堆中对象的地址

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到