第五章 对象(1.3)

3.1、创建对象

被声明过的类可以用来创建对象,所谓的创建对象就是声明变量并初始化的过程。
创建对象的语法格式:

类名  对象名;
对象名 = new 类名();
或者
类名  对象名 = new 类名();

下面是一个实例:

public class Test1 {
	public static void main(String[] args) {
		// 声明一个Student类型的变量
		Student stu1;
		// 创建一个Student类型的对象并通过"=="初始化变量stu1
		stu1 = new Student();
		// 或者写在一起
		Student stu2 = new Student();
	}
}

解释:

  • 1.使用new运算符创建对象,实质就是为对象在堆内存中分配内存空间。
  • 2.new Student()会创建一个Student类的对象,这个过程也叫做实例化一个Student类的对象。
  • 3.一个类可以实例化多个对象,不同对象在内存中是独立的。

3.2、使用对象

对象被创建后(或称被实例化后),这个对象就拥有了所属类的属性和方法,对象可以使用“.”运算符来访问属性(访问成员变量)或执行行为(调用成员方法)。

下面是一个示例:

public class Test {
	public static void main(String[] args) {
		Student  stu = new Student();//对象的创建
		// 向对象的属性赋值
		stu.name = "林冲";
		stu.age = 21;
		stu.studentNo = "10001";
		// 调用对象的方法
		stu.introduce();
	}
}

本例中,在main方法中声明了一个Student类型的变量stu,并实例化了一个Student类型的对象,赋值给了变量stu,之后通过变量stu访问了该对象的属性并对属性进行了赋值,最后调用了该对象的方法introduce()

3.3、对象的内存分配

上面示例中的代码在运行时,内存中是怎样变化的呢,下面用图示来说明:

解释:

执行代码Student stu时,在main方法对应栈帧的局部变量表中,为Student类型的变量stu分配一块内存。

执行stu = new Student()时,首先,new操作符会让JVM(虚拟机)在堆内存中分配一块内存空间(最主要的就是为属性分配内存空间),用来存储一个Student类型的对象,之后,赋值操作会将堆内存中已经分配好的内存空间的首地址存储到变量stu在局部变量表里对应的位置。

在堆内存中为刚才创建的Student对象的name属性,age属性,studentNo属性赋值,即向这些变量对应的内存中存入值,基本数据类型存具体数据,引用类型存内存地址编号。

注意:
实例化一个Student对象时,该对象的属性是具有初始值(默认值)的,byte、short、int、long类型的属性的初始值是0float、double类型的属性的初始值是0.0boolean类型的属性的初始值是falsechar类型的属性的初始值是’\u0000’,引用类型的属性的初始值是null
下面是一个示例:

public class Test2 {
	public static void main(String[] args) {
		Student stu = new Student();
		stu.introduce();
	}
}

输出的结果将是:
大家好,我是null,我今年0岁,我的学号是:null
事实上,在堆中分配内存,总会默认的进行初始化,堆中分配的内存中总是有初始值;而在栈中分配内存,则需要显式的初始化。

3.4、空指针 null

观察并运行下面的示例:

public class Test {
	public static void main(String[] args) {
		Student stu;
		stu = null;
		stu.introduce();
	}
}

当执行stu.introduce()时,程序会抛出一个异常,如下:

Exception in thread "main" java.lang.NullPointerException
	at com.luas.test.Test.main(Test.java:5)

造成这个异常的原因就在于stu = null这一句代码,将变量stu赋值为null。
引用类型的变量应该存储一个内存地址编号,而null值则表明变量没有引用任何内存地址编号,是一个空引用。当变量的值是null时,访问属性或调用方法,都将会抛出NullPointerException

已标记关键词 清除标记
相关推荐
中文扫描版, 第1 绪论   1.1 概念模型   1.2 模式世界   1.3 本书中的模式   1.4 概念模型与业务流程重组   1.5 模式与框架   1.6 模式的使用   参考书目  第1部分 分析模式  第2 责任模式    2.1 团体    2.2 组织层次    2.3 组织架构    2.4 责任    2.5 责任知识级    2.6 团体类别的泛化    2.7 层次性责任    2.8 操作范围    2.9 职位    参考书目   第3 观测与度量模式    3.1 数量    3.2 转换率    3.3 复合单位    3.4 度量    3.5 观测    3.6 子类化观测概念    3.7 观测方案    3.8 双时间记录    3.9 被否决的观测    3.10 临床观测、假设、推理    3.11 关联观测    3.12 观测流程    参考书目   第4 应用于企业财务的观测模式    4.1 企业片断    4.2 度量方案    4.3 范围    4.4 带范围的现象    4.5 使用最终框架    参考书目   第5 对象的引用    5.1 命名    5.2 标识规则    5.3 对象合 并    5.4 对象等价    参考书目   第6 库存与账务模式   第7 使用账务模型   第8 计划模式   第9 交易模式   第10 派生合同   第11 交易包  第2部分 支持模式  第12 信息系统的层次化构架   第13 应用门面   第14 类别模型模式——设计模板   第15 关联模式   第16 后记   第3部分 附录 附录A 技术和符号   参考书目  附录B 模式表  索引  附注
第1 C#入门 1.1 NET框架和C#语言简介 1.1.1 NET框架简介 1.1.2 认识C≠语言 1.2 Visual Studio.NET集成开发环境简介 1.2.1 VS.NET起始页 1.2.2 VS.NET集成开发环境 1.2.3 窗口布局调整 1.3 第一个控制台应用程序 1.3.1 案例说明 1.3.2 案例实现步骤 1.3.3 代码及分析 1.3.4 相关知识及注意事项 1.4 我的第一个Windows窗体应用程序 1.4.1 案例说明 1.4.2 案例实现步骤 1.4.3 代码及分析 1.4.4 相关知识及注意事项 1.5 本小结 1.6 习题 第2 C#语法基础 2.1 C#语言的数据类型 2.1.1 案例说明 2.1.2 代码及分析 2.1.3 相关知识及滓意事项 2.2 C#语言的运算符和表达式 2.2.1 案例说明 2.2.2 代码及分析 2.2.3 相关知识及注意事项 2.3 本小结 2.4 习题 第3 C#程序结构 3.1 顺序与选择结构 3.1.1 案例说明 3.1.2 代码及分析 3.1.3 相关知识及注意事项 3.2 选择结构的窗体应用 3.2.1 案例说明 3.2.2 案例实现步骤 3.2.3 代码及分析 3.2.4 相关知识及注意事项 3.3 while、do.while循环 3.3.1 案例说明 3.3.2 代码及分析 3.3.3 相关知识及注意事项 3.4 for循环 3.4.1 案例说明 3.4.2 代码及分析 3.4.3 相关知识及注意事项 3.5 本小结 3.6 习题 第4 方法 4.1 方法的定义与调用 4.1.1 案例说明 4.1.2 代码及分析 4.1.3 相关知识及注意事项 4.2 方法的嵌套调用 4.2.1 案例说明 4.2.2 代码及分析 4.2.3 相关知识及注意事项   …… 第5 类与对象 第6 数组和索引器 第7 继承 第8 多态 第9 接口 第10 异常处理 第11 委托和事件 第12 文件操作 第13 课程设计 参考文献
第1 绪论   1.1 概念模型   1.2 模式世界   1.3 本书中的模式   1.4 概念模型与业务流程重组   1.5 模式与框架   1.6 模式的使用   参考书目  第1部分 分析模式  第2 责任模式    2.1 团体    2.2 组织层次    2.3 组织架构    2.4 责任    2.5 责任知识级    2.6 团体类别的泛化    2.7 层次性责任    2.8 操作范围    2.9 职位    参考书目   第3 观测与度量模式    3.1 数量    3.2 转换率    3.3 复合单位    3.4 度量    3.5 观测    3.6 子类化观测概念    3.7 观测方案    3.8 双时间记录    3.9 被否决的观测    3.10 临床观测、假设、推理    3.11 关联观测    3.12 观测流程    参考书目   第4 应用于企业财务的观测模式    4.1 企业片断    4.2 度量方案    4.3 范围    4.4 带范围的现象    4.5 使用最终框架    参考书目   第5 对象的引用    5.1 命名    5.2 标识规则    5.3 对象合并    5.4 对象等价    参考书目   第6 库存与账务模式   第7 使用账务模型   第8 计划模式   第9 交易模式   第10 派生合同   第11 交易包  第2部分 支持模式  第12 信息系统的层次化构架   第13 应用门面   第14 类别模型模式——设计模板   第15 关联模式   第16 后记   第3部分 附录 附录A 技术和符号   参考书目  附录B 模式表  索引  附注
目录 第1 入门 1.1 背景 1.2 编程简史 1.3 方法学 1.4 关于本书 第Ⅰ部分 设置场景 第2 对象的概念 2.1 引言 2.2 什么是对象 2.3 相同还是相等 2.4 描述对象 2.5 封装 2.6 关联和聚合 2.7 图和树 2.8 链接和可导航性 2.9 消息 2.10 启动操作 2.11 协作示例 2.12 面向对象程序的工作原理 2.13 垃圾收集 2.14 类 2.15 类定义的内容 2.16 共享数据和共享操作 2.17 类型 2.18 术语 2.19 重用代码 2.20 小结 2.21 课外阅读 2.22 复习题 2.23 练习1的答案 2.24 复习题答案 第3 继承 3.1 引言 3.2 设计类层次结构 3.3 给类层次结构添加实现代码 3.4 抽象类 3.5 重定义方法 3.6 实现栈类 3.7 多重继承 3.8 使用继承的规则 3.9 小结 3.10 课外阅读 3.11 复习题 3.12 复习题答案 第4 类型系统 4.1 引言 4.2 动态和静态类型系统 4.3 多态性 4.4 动态绑定 4.5 多态性规则 4.6 类型转换 4.7 显式类型转换 4.8 使用模板进行泛化 4.9 小结 4.10 课外阅读 4.11 复习题 4.12 练习2的答案 4.13 练习3的答案 4.14 复习题答案 第5 软件开发的方法学 5.1 引言 5.2 软件开发中的经典阶段 5.3 软件工程和瀑布方法学 5.4 新方法学 5.5 面向对象的方法学 5.6 Ripple概述 5.7 小结 5.8 课外阅读 5.9 复习题 5.10 复习题答案 第Ⅱ部分 理解问题 第6 收集需求 第7 分析问题 第Ⅲ部分 设计解决方案 第8 设计系统体系结构 第9 选择技术 第10 设计子系统 第11 可重用的设计模式 第12 指定类的接口 第13 不间断的测试 附录A Ripple小结 附录B iCoot案例分析 附录C UML表示法小结
C++是在C语言基础上开发的一种集面向对象编程、通用编程和传统的过程化编程于一体的编程语言,是C语言的超集。本书是根据2003年的ISO/ANSI C++标准编写的,通过大量短小精悍的程序详细而全面地阐述了C++的基本概念和技术。 C++ Primer Plus全书分17和10个附录,分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间、类的设计和使用、多态、虚函数、动态内存分配、继承、代码重用、友元、异常处理技术、string类和标准模板库、输入/输出等内容。 本书针对C++初学者,从C语言基础知识开始介绍,然后在此基础上详细阐述C++新增的特性,因此不要求读者有较多C语言方面的背景知识。本书可作为高等院校C++课程的教材,也可供初学者自学C++时使用。 C++ Primer Plus目录 第1 预备知识 1.1 C++简介 1.2 C++简史 1.3 可移植性和标准 1.4 程序创建的技巧 1.5 总结 第2 开始学习C++ 2.1 进入C++ 2.2 C++语句 2.3 其他C++语句 2.4 函数 2.5 总结 2.6 复习题 2.7 编程练习 第3 处理数据 3.1 简单变量 3.2 const限定符 3.3 浮点数 3.4 C++简术操作符 3.5 总结 3.6 复习题 3.7 编程练习 第4 复合类型 4.1 数组 4.2 字符串 4.3 string类简介 4.4 结构简介 4.5 共同体 4.6 枚举 4.7 指针和自由存储空间 4.8 指针、数组和指针算术 4.9 总结 4.10 复习题 4.11 编程练习 第5 循环和关系表达式 5.1 for循环 5.2 关系表达式 5.3 while循环 5.4 do while循环 5.5 循环和文本输入 5.6 嵌套循环和二维数组 5.7 总结 5.8 复习题 5.9 编程练习 第6 分支语句和逻辑操作符 第7 函数——C++的编程模块 第8 函数探幽 第9 内存模型和名称空间 第10 对象和类 第11 使用类 第12 类和动态内存分配 第13 类继承 第14 C++中的代码重用 第15 友元、异常和其他 第16 string类和标准模板库 第17 输入、输出和文件 附录A 计数系统 附录B C++保留字 附录C ASCII字符集 附录D 操作符优先级 附录E 其他操作符 附录F string模板类 附录G STL方法和函数 附录H 精选读物和网上资源 附录I 转换为ANSI/ISO标准C++ 附录J 复习题答案
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页