四、默认构造器
默认构造器(又名无参构造器)是没有形式参数的,它创建的是”默认对象“。举个例子:
public class TestMain {
//没有指定构造器,Java编译器会自动生成默认构造
public static void main(String[] args) {
new TestMain();
}
}
//输出
new TestMain()创建了一个新对象,并调用了默认构造——虽然我们并没有主动定义它。Java规定了,如果没有构造会生成默认构造,如果存在了一个及以上的构造便不会自动生成。
public class TestMain {
TestMain(int i) {}
TestMain(float f) {}
public static void main(String[] args) {
TestMain t1 = new TestMain(); //会报错,没有对应的构造方法
TestMain t2 = new TestMain(1);
TestMain t3 = new TestMain(2.0f);
}
}
//输出
new TestMain()编译器会报错,因为我们没有定义对应的无参构造方法,编译器无法顺利创建对象。如果你没有定义构造器,编译器会认为”你需要一个构造器,我帮你造一个“;如果你自己写了一个构造器,编译器会认为”你已经有构造器了,你知道自己在做什么,我不帮你生成“。
五、构造方法重载
有默认无参构造,就有带参构造;有带参构造也就会发生方法重载。为了满足不同的初始化需求,我们通常会需要定义多个带参构造器,由于都是构造器,它们的名称必须相同,为了让方法名相同而参数不同的方法存在,我们就必须使用 方法重载 。它是构造器所必须的。
public class TestMain {
TestMain() {
System.out.println(“默认构造”);
}
TestMain(int i) {
System.out.println(“int带参构造”);
}
TestMain(float f) {
System.out.println(“float带参构造”);
}
public static void main(String[] args) {
TestMain t1 = new TestMain();
TestMain t2 = new TestMain(1);
TestMain t3 = new TestMain(2.0f);
}
}
//输出
默认构造
int带参构造
float带参构造
从上述代码中我们可以看到,类中定义了三个不同的构造方法,main方法中,在括号里传递不同的参数,编译器会根据参数的类型寻找对应的构造方法,从而初始化三个不同的对象,这就是构造方法的重载。
涉及基本类型的重载
在使用构造方法的重载时,我们经常会遇到将基本类型传递给重载方法时的一些问题。基本类型可以从一个 较小(窄类型) 类型自动提升(转型)为一个 较大(宽类型) 类型,当涉及到方法重载时便会造成一些混淆。举个例子:
public class TestMain {
TestMain(int i) {
System.out.println(“int带参构造”);
}
TestMain(long l) {
System.out.println(“long带参构造”);
}
TestMain(double d) {
System.out.println(“double带参构造”);
}
public static void main(String[] args) {
TestMain t1 = new TestMain(2.0f);
TestMain t2 = new TestMain(‘菌’);
}
}
//输出
double带参构造
int带参构造
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/78d8da74c4a8b10e500c3d095738914e.jpeg)
独家面经总结,超级精彩
本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!
Java面试准备
准确的说这里又分为两部分:
- Java刷题
- 算法刷题
Java刷题:此份文档详细记录了千道面试题与详解;
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
2. 算法刷题
Java刷题:此份文档详细记录了千道面试题与详解;
[外链图片转存中…(img-NZyCwI9R-1713496913044)]
[外链图片转存中…(img-CgWtNx5C-1713496913046)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!