第二章一切都是对象

本文深入探讨了Java的基础概念,包括对象的创建与操纵、不同类型的存储区域、基本类型与包装类的区别、数组的特性、对象生命周期管理、类的设计原理以及方法的定义。此外,还介绍了如何构建Java程序,包括命名约定、静态关键字的应用、主程序的编写方法及文档注释的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.1 用引用操纵对象
1、一切都被视为对象,操纵的标识符实际上是对象的一个“引用”。
2、创建一个引用的同时便进行初始化。
3、字符串可以用带引号的文本初始化。通常,必须对对象采用一种更通用的初始化方法。
2.2必须由你创建所有对象
2.2.1 存储到什么地方
1、寄存器。最快的存储区。
2、堆栈。位于通用RAM中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。
3、堆。一种通用的内存池(也位于RAM区),用于存放所有的Java对象。
4、常量存储。常量值通常直接存放在程序代码内部,永远不会被改变。
5、非RAM存储。流对象和持久化对象。
2.2.2 特例:基本类型
1、不用new来创建变量,而是创建一个并非是引用的“自动”变量。这个变量直接存储“值”,并置于堆栈中,因此更加高效。
2、基本类型 boolean 包装类型Boolean
基本类型 char 包装类型 Character 16位
基本类型byte 包装类型 Byte 8位
基本类型short 包装类型Short 16位
基本类型int 包装类型Integer 32位
基本类型long 包装类型Long 64位
基本类型float 包装类型Float 32位
基本类型double 包装类型Double 64位
Void
3、Java提供了两个用于高精度计算的类:BigInteger和BigDecimal。二者大体上属于“包装类”的范畴,但是二者都没有对应的基本类型。这两个类包含的方法,提供的操作与对基本类型所能执行的操作相似。作用于int和float的操作,也能同样作用于BigInteger和BigDecimal,只不过必须以方法调用方式取代运算符方式来实现。
4、BigInteget支持任意精度的整数。BigDecimal支持任何精度的定点数。
2.2.3 Java中的数组
1、Java确保数组会被初始化,而且不能在它的范围之外被访问。
2、当创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值,该值拥有自己的关键字null。Null代表着这个引用还没有指向某个对象。
2.3 永远不需要销毁对象
2.3.1 作用域
2.3.2 对象的作用域
1、Java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象。随后,释放这些对象的内存空间,以便共其他新的对象使用。
2.4 创建新的数据类型:类
2.4.1 字段和方法
1、一旦定义了一个类,就可以在类中设置两种类型的元素:字段(有时被称作数据成员)和方法(有时被称作成员函数)。字段可以是任何类型的对象,那么必须初始化该引用,以便使其与一个实际的对象相关联。
2、在Java中你所做的全部工作就是定义类,产生那些类的对象,以及发送消息给这些对象。
3、基本成员默认值。若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值。当变量作为类的成员使用时,Java才确保给定其默认值,以确保那些是基本类型的成员变量得到初始化,方式产生程序错误。但是,这些初始值对你的程序来说,可能是不正确的,甚至是不合法的,所以最好明确地对变量进行初始化。
4、上述确保初始化的方法并不适用于“局部”变量。
5、基本类型boolean 默认值false
基本类型char 默认值”\uoooo”(null)
基本类型byte 默认值(byte)0
基本类型short 默认值(short)0
基本类型int 默认值0
基本类型long 默认值0L
基本类型float 默认值0.0f
基本类型double 默认值0.0d

2.5 方法、参数和返回值
1、Java的方法决定了一个对象能够接收什么样的消息。方法的基本组成部分包括:名称、参数、返回值和方法体。
2、返回类型描述的是在调用方法之后从方法返回的值。参数列表给出了要传给方法的信息的类型和名称。方法名和参数列表(它们合起来被称为“方法签名”)唯一地标识出某个方法。
3、举例 int x=a.f()。这种调用方法的行为通常被称为发送消息给对象。在上面的例子中,消息时f(),对象是a。面向对象的程序设计通常简单地归纳为“向对象发送消息”
2.5.1 参数列表
1、方法的参数列表指定要传递给方法什么样的信息。
2、若返回类型是void,return关键字的作用只是用来退出方法。因此,没有必要到方法结束时才离开,可以在任何地方返回。但如果返回类型不是void,那么无论在何处返回,编译器都会强制返回一个正确类型的返回值。
2.6 构建一个Java程序
2.6.1 名字可见性
1、包名一般是域名的反写。反转域名后,句点就用来代表子目录的划分。
2.6.2 运用其他构件
1、import准确告诉编译器你想要的类是什么。Import指示编译器导入一个包,也就是一个类库。(在其他语言中,一个库不仅包含类,还可能包含方法和数据;但是java中所有的代价都必须写在类里)
2.6.3 static关键字
1、static可以满足以下两方面的需要:
①只想为某个特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。
②希望某个方法不与包含它的类的任何对象关联在一起,也就是说,即使没有创建对象,也能够调用这个方法。
2、在用static方法前不需要创建任何对象。非static域或方法必须与某一特定对象关联。
3、有些面向对象语言采用类数据和类方法两个术语,代表那些数据和方法只是作为整个类,而不是类的某个特定对象而存在的。
4、引用static变量有两种方法,可以通过一个对象去定位它。对象.变量。也可以通过类名直接引用类名.变量。(首先方式)。同样适用于static方法
5、尽管当static作用于某个字段时,肯定会改变数据创建的方式。(因为一个static字段对每个类来说都只有一份存储空间,而非static字段则是对每个对象有一个存储空间),但是如果static作用于某个方法,差别却没有那么大。Static方法的一个重要用法就是在不创建任何对象的前提下就可以调用它。这一点对定义mian()方法很重要,这个方法运行一个应用时的入口点。
2.7 你的第一个Java程序
2.7.1 编译和运行
2.8 注释和嵌入式文档
2.8.1 注释文档
1、javadoc是提取注释的工具。Javadoc输出的是一个HTML文件,可以用web浏览器查看。该工具可以使我们只需创建和维护单一的源文件,并能自动生成有用的文档。
2.8.2 语法
1、使用javadoc的方式主要有两种:嵌入HTML,或使用“文档标签”。
2、独立文档标签是一些以“@”字符开头的命令,且要至于注释行的最前面(但是不算前导”*”之后的最前面)。而“行内文档标签”则可以出现在javadoc注释中的任何地方,它们也是以“@”字符开头,但要括在花括号内。
3、javadoc只能为public(公共)和protected(受保护)成员进行文档注释。Private和包内可访问成员的注释会被忽略掉,所以输出结果中看不到他们。这样做是因为只有public和protected成员才能在文件之外被使用,这是客户端成员所期望的。
2.8.3嵌入式HTML
1、所有类型的注释文档—-类、域和方法—-都支持嵌入式HTML。
2.8.4 一些标签示例
1、@see :引用其他类 会加一个具有超链接的’See Also
2、@link :该标签与@see极其相似,只是它作用于行内,并且是用“label”作为超链接文本而不用“See Also”
3、@docRoot 该标签产生到文档根目录的相对路径,用于文档树页面的显示超链接。
4、@inheritDoc 该标签从当前这个类的最直接的基类中继承相关文档到当前的文档注释中。
5、@version
6、@author
7、@since 该标签允许你指定程序代码最早使用的版本
8、@param
9、@return
10、@throw
11、@deprecated
2.8.5 文档示例
2.9 编码风格
1、类名的首字母要大写,如果类名由几个单词构成,那么就把它们并在一起,其中每个内部单词的首字母都采用大写形式。
2、方法,字段以及对象引用名称等,是标识符的第一个字母采用小写。
2.10 总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值