什么样的类是不可变的?要使一个类成为不可变的,它必须标记所有数据域都是私有的,没有提供修改器的方法以及没有提供会返回一个指向可变数据域的引用的访问器方法Liang.Introduction to JavaProgramming.EighthEdition,(c)2011Pearson Education,Inc.Allrightsreserved.0132130807
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 6 什么样的类是不可变的? 要使一个类成为不可变的,它必须标记所有数据域都 是私有的,没有提供修改器的方法以及没有提供会返 回一个指向可变数据域的引用的访问器方法
变量的作用域实例变量和静态变量的作用域是整个类。可以在类内的任何地方声明它们局部变量的作用域是从它声明的地方开始一直到所包含这个局部变量的模块结束。一个局部变量必须在使用前显式地初始化Liang,Introduction toJava Programming,EighthEdition,(c)2011Pearson Education,Inc.Allrightsreserved.0132130807
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 7 变量的作用域 实例变量和静态变量的作用域是整个类。可以 在类内的任何地方声明它们。 局部变量的作用域是从它声明的地方开始一直 到所包含这个局部变量的模块结束。一个局部 变量必须在使用前显式地初始化
this关键字关键字this是指向调用对象本身的引用名。关键字this的一种常见用法就是引用类的隐藏数据域(hiddendatafields)关键字this的另一种常见用法是让构造方法调用同一个类的另一个构造方法。Liang,Introduction toJava Programming,EighthEdition,(c)2011Pearson Education,Inc.Allrightsreserved.0132130807
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 8 this关键字 关键字this是指向调用对象本身的引用名。关 键字this的一种常见用法就是引用类的隐藏数 据域(hidden data fields)。 关键字this的另一种常见用法是让构造方法调 用同一个类的另一个构造方法
引用隐藏数据域public class Foof假设f1和f2是Foo的两个对象。private int i = 5;private static double k=O;调用f1.setI(10)其实就是执行this.i=1o,这里this是指f1void setI(int i)this.i =i调用f2.setI(45)其实就是执行this.i=45,这里this是指f2static void setK(doublek)Foo.k = k;Liang.Introduction to JavaProgramming.EighthEdition,(c)2011Pearson Education,Inc.Allrightsreserved.0132130807
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved. 0132130807 9 引用隐藏数据域 public class Foo { private int i = 5; private static double k = 0; void setI(int i) { this.i = i; } static void setK(double k) { Foo.k = k; } } 假设f1和f2是Foo的两个对象。 调用 f1.setI(10) 其实就是执行 this.i = 10, 这里 this 是指 f1 调用 f2.setI(45) 其实就是执行 this.i = 45, 这里 this 是指 f2