Object相关

[复制链接]
发表于 2024-8-14 10:17:13 | 显示全部楼层 |阅读模式

final 实例域

image.png

静态域

image.png

image.png

静态常量

静态方法

工厂方法

静态方法还有另外一种常见的用途。类似LocalDate和NumberFormat的类使用静态工厂方法(factory method)来构造对象。你已经见过工厂方法LocalDate.now和LocalDate.of。NumberFormat类如下使用工厂方法生成不同风格的格式化对象:

image.png

为什么NumberFormat类不利用构造器完成这些操作呢?这主要有两个原因: ·无法命名构造器。构造器的名字必须与类名相同。但是,这里希望将得到的货币实例和百分比实例采用不用的名字。 ·当使用构造器时,无法改变所构造的对象类型。而Factory方法将返回一个DecimalFormat类对象,这是NumberFormat的子类(有关继承的详细内容请参看第5章)。

方法参数

Java程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,特别是,方法不能修改传递给它的任何参数变量的内容。

image.png

3)这个方法结束之后,参数变量x不再使用。 然而,方法参数共有两种类型: ·基本数据类型(数字、布尔值)。 ·对象引用。 读者已经看到,一个方法不可能修改一个基本数据类型的参数。而对象引用作为参数就不同了,可以很容易地利用下面这个方法实现将一个雇员的薪金提高两倍的操作:

image.png

当调用

image.png

时,具体的执行过程为: 1)x被初始化为harry值的拷贝,这里是一个对象的引用。 2)raiseSalary方法应用于这个对象引用。x和harry同时引用的那个Employee对象的薪金提高了200%。 3)方法结束后,参数变量x不再使用。当然,对象变量harry继续引用那个薪金增至3倍的雇员对象(如图4-7所示)。

image.png

读者已经看到,实现一个改变对象参数状态的方法并不是一件难事。理由很简单,方法得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用同一个对象。 很多程序设计语言(特别是,C++和Pascal)提供了两种参数传递的方式:值调用和引用调用。有些程序员(甚至本书的作者)认为Java程序设计语言对对象采用的是引用调用,实际上,这种理解是不对的。由于这种误解具有一定的普遍性,所以下面给出一个反例来详细地阐述一下这个问题。 首先,编写一个交换两个雇员对象的方法:

image.png

image.png

这个过程说明:Java程序设计语言对对象采用的不是引用调用,实际上,对象引用是按值传递的。 下面总结一下Java中方法参数的使用情况: ·一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。 ·一个方法可以改变一个对象参数的状态。 ·一个方法不能让对象参数引用一个新的对象。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

GMT+8, 2025-9-8 02:46 , Processed in 0.100524 second(s), 35 queries Archiver|手机版|小黑屋|Attic ( 京ICP备2020048627号 )

快速回复 返回顶部 返回列表