这一章节我们来聊聊创建与初始化对象。
这个需要讨论的问题源自于c语言,在c语言中,很大部分的错误是忘记了初始化某些东西,他把库的构建的使用需要完成两个操作-创建与初始化,但是在java里面,使用构造器来创建与初始化,他们是在一起的,因此避免了一部分忘记初始化的错误。
package com.ray.testobject;
public class Test {
public static void main(String[] args) {
TestClass t1=new TestClass();
TestClass t2=new TestClass();
}
}
class TestClass {
public TestClass() {
System.out.println("TestClass created");
}
public TestClass(int param) {
System.out.println("TestClass created");
System.out.println(param);
}
}
输出:
TestClass created
TestClass created
1
从输出结果我们可以看到,其实在创建对象的时候我们利用构造器已经进一步的进行初始化,而不需要特定的运行初始化函数。
如果构造器不传入任何参数,那么,就会创建一个没有任何属性的对象。
需要注意的是:即便我们没有对对象初始化属性,编译器也会为我们初始化,这样就可以减少一定的错误。
我们修改一下上面的代码:
package com.ray.testobject;
public class Test {
public static void main(String[] args) {
TestClass t1 = new TestClass();
TestClass t2 = new TestClass(1);
}
}
class TestClass {
private String name;//增加属性
private int id;//增加属性
public TestClass() {
System.out.println("TestClass created");
System.out.println(id);
System.out.println(name);
}
public TestClass(int param) {
System.out.println("TestClass created");
System.out.println(param);
System.out.println(id);
System.out.println(name);
}
}
输出:
TestClass created
0
null
TestClass created
1
0
null
从输出结果可以看见,对象在初始化的时候,已经把里面的属性初始化。
我们再来修改一下程序,然后看看构造器初始化的参数与对象初始化的参数两者之间有什么不同。
package com.ray.testobject;
public class Test {
public static void main(String[] args) {
TestClass t1 = new TestClass();
TestClass t2 = new TestClass("1");
}
}
class TestClass {
private String name;
public TestClass() {
System.out.println("TestClass created");
System.out.println(name);
}
public TestClass(String param) {//修改了param 的类型
System.out.println("TestClass created");
System.out.println(param);
System.out.println(name);
}
}
输出:
TestClass created
null
TestClass created
1
null
因为如果需要使用具有param构造器来构造对象,必须初始化param,因此,param是认为的设置,而name这个属性域,则是由编译器自动初始化。
总结:这一章节讨论了创建与初始化对象的一些话题。
这一章节就到这里,谢谢。
-----------------------------------
目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
二进制代码部分可能包含预编译的库文件,这些文件可以直接在Java项目中引用,以快速实现JPEG2000图像的读取和写入功能,无需从头编译源代码。这对于那些不熟悉底层编码或希望快速集成JPEG2000支持的开发者来说,是...
标签 "jar" 和 "java" 明确了这个文件与Java编程语言和JAR文件格式的关系。Java开发者经常使用JAR文件来分发和部署他们的软件,因为它们可以作为一个单元被导入到其他项目中,或者作为独立的应用程序运行。JAR文件还...
1. **创建PDF**:能够从头创建PDF文档,添加文本、图像、形状、表格等各种元素,支持自定义样式和布局。 2. **编辑PDF**:可以编辑PDF文档中的文本、图像和页面内容,例如修改文本字体、颜色、大小,替换图片,调整...
用户可以轻松地导入现有的Java项目,或者从头开始创建新的项目,包括Maven或Gradle构建系统。 3. **构建工具**:Eclipse 集成了构建工具,如Ant和Maven,使得构建和管理项目依赖变得简单。对于现代Java开发,Maven...
FFmpeg 4.1.1 64位版 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的...它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
在标签中,“ntrip__java实现”表明这个客户端是用Java编程语言编写的,这是Android应用开发的常见选择,因为Java与Android SDK兼容性良好。“ntrip_android_client”和“ntrip_client”则明确了这是一个面向Android...
在这个SDK中,它用于序列化和反序列化数据,以便与百度AI服务进行数据交换。 综合以上信息,我们可以得出以下知识点: 1. **AIP Java SDK**:这是百度提供的一个开发工具,允许开发者在Android应用中集成AI功能。 ...
1. **文档创建**:支持从头创建新的文档,或基于现有模板生成文档。 2. **文档读取和解析**:能够打开并读取多种格式的文档,如DOCX、DOC、RTF、PDF、HTML等。 3. **格式转换**:可以在不同文件格式之间进行转换,...
【标题】: "手把手 - 微服务 Windows 开发环境从头搭建 2022-09-05 直播录像 - 软件安装包-2.zip" 这个压缩包文件包含了搭建微服务开发环境所需的基础软件,包括JDK(Java Development Kit)和MySQL数据库。...
接下来,根据Leancound的API文档,编写代码来初始化SDK,设置必要的认证信息,然后调用相应的API接口进行操作。 例如,要发送一条文本消息,开发者可能需要如下步骤: 1. 创建一个Leancound客户端对象,设置API密钥...
6. **Servlet生命周期**:Servlet的生命周期包括初始化(init)、服务(service,通过doGet、doPost等方法处理请求)、销毁(destroy)三个阶段。Servlet在服务器中保持活跃,可以处理多个请求,而CGI每次请求都会...
Java提供了两种内置的LookAndFeel:Metal(默认的Java Look and Feel)和SystemLookAndFeel,后者可以使Swing组件看起来与宿主操作系统(如Windows、Mac OS X或Linux)的原生控件一致。此外,开发者还可以自定义Look...
在Java编程中,多文件...通过这个"java-多文件上传dome"工具包,你可以快速实现上述功能,无需从头编写所有代码。不过,记得在实际项目中,除了功能实现,还要关注性能、安全性和可维护性,确保应用程序的稳定运行。
"java-lib"是一个与Java编程相关的资源集合,很可能包含了各种常用的Java库,这些库可以帮助开发者在进行Java开发时提高效率,解决特定问题。"java-all-lib"的标签可能表示这个压缩包包含了广泛的Java库,涵盖了多种...
1. **创建文档**:通过API,开发者能够从头开始构建Word文档,包括添加文本、图片、表格、形状、页眉和页脚等元素。 2. **编辑现有文档**:能够打开和修改现有的DOC或DOCX文件,进行内容替换、格式调整、页面布局...
1. 创建新文档:从头开始创建Word文档,设置页面布局、字体样式、段落格式等。 2. 编辑现有文档:加载现有的Word文件并修改内容,包括文本、图像、表格、页眉页脚等元素。 3. 转换文档:将Word文档转换为其他格式,...
在Java开发中,创建具有模糊效果的视图背景可以提升应用程序的用户体验,使其看起来更加现代和精致。"使用渲染脚本实现模糊视图背景"是一个常见的技术实践,它通常涉及到图形处理和用户界面的设计。在这个项目中,...
通过这个课程,你将从安装Java开发环境(如JDK)开始,逐步学习Java语法、类与对象、封装、继承、多态等核心概念。此外,你还将接触到控制流(条件语句、循环)、异常处理、文件操作、集合框架、IO流、多线程、网络...