学习笔记--Java构造方法
2022/2/3 14:17:16
本文主要是介绍学习笔记--Java构造方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java构造方法
关于构造方法
-
构造方法又被称作:构造函数/构造器/Constructor
-
语法结构:
[修饰符列表] 构造方法名(形式参数列表){ 构造方法体; }
对比普通方法语法结构
[修饰符列表] 返回值类型 构造方法名(形式参数列表){ 构造方法体; }
-
对于构造方法来说,
返回值类型
不需要指定,也没有void
-
写了
void
就是普通方法
-
-
对于构造方法的方法名必须与类名保持一致
-
构造方法的作用:
- 存在意义,通过构造方法的调用,可以创建对象
- 创建对象的同时,初始化实例变量的内存空间
-
构造方法如何调用?
普通方法调用:
- 有
static
是:类名.方法名(实参列表)
- 无
static
是:引用.方法名(实参列表)
构造方法调用:
new 构造方法名(实参列表)
- 有
-
构造方法有返回值
但不需要写
return 返回值;
,构造方法结束后Java程序自动返回由于返回值类型是构造方法所在类的类型,所以返回值类型不用写
如果类中没有人为写构造方法,其中还存在一个默认无参数构造方法:
new 构造方法名(){ // 其中有代码,初始化实例变量的内存空间 // 不然实例变量哪里来的默认值呢 }
【回忆】实例变量默认值:
- byte,short,int,long 默认值
0
- float,double 默认值
0.0
- boolean 默认值
false
- 引用数据类型 默认值
null
- byte,short,int,long 默认值
-
构造方法支持支持重载机制
public class ConstructorTest { public static void main(String[] args) { User u1 = new User(); User u2 = new User("jock"); User u3 = new User(10); } }
public class User{ // 用户编号 private int id; // 用户名称 private String name; // 下列三个构造方法, // this 可以暂时看作类引用后的对象或实例的一个代称 public User(){ } public User(String n){ this.name = n; System.out.println("String"); } public User(int num){ this.id = num; System.out.println("int"); } }
参数传递
-
【回顾】对象和引用梳理:
-
对象【实例】:目前在使用
new
运算符在堆内存中开辟的内存空间称为对象 -
引用:是一个变量,不一定是局部变量也可能是成员变量。
引用保存了内存地址,指向了堆内存中的对象
-
参数传递中变量的变化
- 不变
public class Test01 { public static void main(String[] args) { int a = 10; // 10 a 是main方法的局部变量 add(i); // 11 其中main方法 a 的值传入add方法 i // 使用 add(i); 中的 i++ 不会影响到 main方法 a System.out.println(a); // 10 没有变化 } public static void add(int i){ // i 是add方法局部变量 i++; System.out.println("add --> " + i); } }
- 改变
public class Test02 { public static void main(String[] args) { User u = new User(10); // u.age 10 add(u); // 11 // u中的是内存地址,指向对象 // u 传入后 ,user 也会保存一个与 u 中相同的内存地址 System.out.println("main --> " + u.age); // 11 // 虽然是两个地址,但指向同一个对象 } public static void add(User user){ user.age++; System.out.println("add --> " + user.age); } } class User{ // 实例变量 int age; // 构造方法 public User(int i){ age = i; } }
比喻:
-
两个人,都有10元现金虽然钱一样多,但各是个的。有而是20元,各用各的
-
两个人,都知道一串密码【银行卡共用10元】,可以通过密码去银行取存钱。有而是10元,共有通过密码
- 密码 ------ 引用中保存的内存地址
- 银行卡 ---- 对象【实例】
- 去银行 ---- 方法
- 钱 -------- 实例变量
常规数据
int i = 10; int j = i; // i 传递给 j,实际只是将 i 变量中保存的 10 传递给 j,j 实际上是一块全新的内存空间
涉及引用数据
User u1 = 0x1234; // 0x1234内存地址,new运算符+调用构造方法 User u2 = u1; // u1 传递给 u2,实际上是将0x1234这个值赋值给 u2,与上面是一样的,u1 和 u2各是两个不同的局部变量 // 不过在此之上 u1 和 u2 保存内存地址0x1234指向堆内存中的同一个对象【实例】
这篇关于学习笔记--Java构造方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27本地多文件上传的简单教程
- 2024-11-27低代码开发:初学者的简单教程
- 2024-11-27如何轻松掌握拖动排序功能
- 2024-11-27JWT入门教程:从零开始理解与实现
- 2024-11-27安能物流 All in TiDB 背后的故事与成果
- 2024-11-27低代码开发入门教程:轻松上手指南
- 2024-11-27如何轻松入门低代码应用开发
- 2024-11-27ESLint开发入门教程:从零开始使用ESLint
- 2024-11-27Npm 发布和配置入门指南
- 2024-11-27低代码应用课程:新手入门指南