![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
《java核心技术》笔记
java学习内容笔记
白茶.清欢
白茶清欢无别事,我在等风也等你。
展开
-
2021-06-16
关键字this表示引用方法的隐式参数。然而,这个关键字还有另外一个含义。如果构造器的第一个语句形如this(…),这个构造器将调用同一个类的另一个构造器。下面是一个典型的例子:当调用new Employee(60000)时,Employee(double)构造器将调用Employee(String,double)构造器。采用这种方式使用this关键字非常有用,这样对公共的构造器代码部分只编写一次即可。...原创 2021-06-16 12:15:10 · 64 阅读 · 0 评论 -
显式字段初始化
在类的定义中,可以直接给实例字段赋值,这是不同于c++c++c++的一个重要地方,例如:在执行构造器之前,会先执行这个赋值操作。当一个类的所有构造器都希望把相同的值赋予某个特定的实例域时,这种方式特别有用。初始值不一定是常量值。在下面的例子中,可以调用方法对域进行初始化。仔细看一下Employee类,其中每个雇员有一个id域。可以使用下列方式进行初始化:...原创 2021-06-16 12:13:44 · 156 阅读 · 0 评论 -
默认初始化
如果在构造器中没有显式地给域赋予初值,那么就会被自动地赋为默认值:数值为0、布尔值为false、对象引用为null。然而,只有缺少程序设计经验的人才会这样做。确实,如果不明确地对域进行初始化,就会影响程序代码的可读性。但是注意如果是一个方法中的局部变量,是必须进行初始化的,否则就会出错...原创 2021-06-16 12:12:23 · 120 阅读 · 0 评论 -
按值调用与按引用调用
javajavajava采用的都是按值调用,但是要记住,对于引用类型而言,javajavajava生成的副本的值同样也是指向那个对象的,所以也会改变对象的状态。总结为:方法参数不能那个修改基本数据类型的参数方法可以修改对象参数的状态方法不能让一个对象参数引用另一个新的对象对于第三点,有如下的理解:编写一个交换两个雇员对象的方法:但是注意最终是无法实现交换的效果的,因为方法并没有改变存储在变量a和b中的对象引用。swap方法的参数x和y被初始化为两个对象引用的拷贝,这个方法交换的是这两个拷.原创 2021-06-16 12:10:58 · 204 阅读 · 0 评论 -
静态实例字段与静态方法字段
静态实例字段如果将域定义为static,每个类中只有一个这样的域。而每一个对象对于所有的实例域却都有自己的一份拷贝。例如,假定需要给每一个雇员赋予唯一的标识码。这里给Employee类添加一个实例域id和一个静态域nextId: private int id; private static int nextId;现在,每一个雇员对象都有一个自己的id域,但这个类的所有实例将共享一个nextId域。换句话说,如果有1000个Employee类的对象,则有1000个实例域id。但是,只有一原创 2021-06-16 12:09:34 · 172 阅读 · 0 评论 -
final实例字段
可以将实例域定义为finalfinalfinal。构建对象时必须初始化这样的域。也就是说,必须确保在每一个构造器执行之后,这个域的值被设置,并且在后面的操作中,不能够再对它进行修改。例如,可以将EmployeeEmployeeEmployee类中的namenamename域声明为finalfinalfinal,因为在对象构建之后,这个值不会再被修改,即没有setNamesetNamesetName方法。public class Employee { private final String nam原创 2021-06-16 12:05:39 · 126 阅读 · 0 评论 -
尽量不要编写返回可变对象引用的访问器方法
在雇员类中,设计的返回雇佣天的访问器方法为:但是如下,如果更改了ddd,雇员的状态也会发生变化。因为他们之间的状态图如图所示:如果需要返回一个可变对象的引用,应该首先对它进行克隆(clone)。对象clone是指存放在另一个位置上的对象副本:...原创 2021-06-16 12:04:38 · 82 阅读 · 0 评论 -
构造器实参存在null类型
假设我们不希望hireDayhireDayhireDay类的namenamename字段被构造器初始化为nullnullnull,宽容型方法如下: if (n == null) { name = "unknown"; } else { name = n; }在java9java9java9中,objectsobjectsobjects类对这提供了一个便捷的方法: public Employee(Str原创 2021-06-16 11:51:21 · 112 阅读 · 0 评论 -
对象与对象变量
在javajavajava中newnewnew操作符的返回值是一个引用,所以下面的第二个只是声明了一个对象变量dedalinededalinededaline,而实际上它没有引用任何对象,所以是不能使用任何DateDateDate的方法的。 Date birthday = new Date(); Date deaeline;...原创 2021-06-16 11:50:04 · 60 阅读 · 0 评论 -
类之间的关系
依赖(dependence):依赖(dependence),即“uses-a”关系,是一种最明显的、最常见的关系。例如,订单(Order)类使用账户(Account)类是因为Order对象需要访问Account对象查看信用状态。但是商品(Item)类不依赖于Account类,这是因为Item对象与客户账户无关。因此,如果一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类。应该尽可能地将相互依赖的类减至最少。如果类A不知道B的存在,它就不会关心B的任何改变(这意味着B的改变不会导致A产生任何bu原创 2021-06-16 11:48:25 · 61 阅读 · 0 评论