Ch8 多维数组
|
|

- Suppose int[][] m = { {4, 5, 6}, {2, 1, 0} }, what is m.length?
答案:2
- Suppose int[][] m = { {4, 5, 6}, {2, 1, 0} }, what is m[0].length?
答案:3
这里吐槽一下,hexo 编译markdown时候,不能连续写两个 {
或者}
,中间必须加空格,不然会编译出错 。
计算二维数组各项之和
|
|
Ch9 对象和类
源代码中的每个类都会被编译成.class文件
构造方法
构造方法在使用new操作符穿件对象的时候被调用
- 构造方法必须具备和所在类相同的名字
- 构造方法没有返回值类型,甚至连void也没有
- 构造方法是在创建一个对象使用new操作符时调用的1Circle myCircle = new Circle();
变量myCircle中放的是对Circle对象的一个引用。
基本类型变量和引用类型变量
对基本类型变量来说没对应内存所存储的值是基本类型值。对引用类型变量来说,对应内存所存储的值是一个引用,是对象的存储地址。
Random类
创建一个Random对象时,必须指定一个种子或者使用默认的种子。种子是一个用于初始化一个随机数字生成器的数字。无参构造方法使用当前已经逝去的时间作为种子,创建一个Random对象。如果这两个Random对象有相同的种子,那它们将产生相同的数列。
例如:
这些代码产生相同的int类型的随机数列:
From random1:734 660 210 581 128 202 549 564 459 961
From random2:734 660 210 S81 128 202 549 564 459 961
静态变量
静态变量将变量值存储在一个公共的内存地址。因为它是公共的地址,所以如果某一个对象修改了静态变量的值,那么同一个类的所有对象都会收到影响。Java支持静态方法和静态变量,无需创建类的实例就可以调用静态方法(static method)
类中的常量是被该类的所有对象所共享的,因此,常量应该声明为final static
实例方法和实例数据都是属于实例的,所以它们在实例创建之后才能使用。它们是通过引用变量来访问的。静态方法和静态数据可以通过引用变量
或它们的类名
来调用。
静态变量和方法可以在不创建对象的情况下访问。
静态成员和实例成员的关系

提示
使用类名.方法名(参数)
的方式调用静态方法,使用类名.静态变量
的方式访问静态变量,可以提高可读性。
设计指南
如果一个变量或方法依赖于类的某个具体实例,那就应该将它定义为实例变量或实例方法。如果一个变量或方法不依赖于类的某个具体实例,那就应该将它定义为静态变量或静态方法(比如判读素数?计算阶乘?等等)。
可见性修饰符

- private只能应用在类的成员上
- public可以应用在类或类的成员上
- 局部变量上使用修饰符public和private都会导致编译错误
注意
大多数情况下, 构造方法应该是公共的。但是,如果想防止用户创建类的实例,就用过使用私有构造方法。
比如,因为Math类的所有数据域和方法都是静态的,所以没必要创建Math类的实例。为防止用户从Math类创建对象,在java.lang.Math中的构造方法定义如下:
向方法传递参数
Java只有一种参数传递方式:值传递
(pass-by-value)

times 的内容改变,这并不会影响n的内容
而通过在printAreas方法内部的c与在方法外的myCircle来改变对象的属性,效果是一样的。引用上的传值在语义上最好描述为传共享
(pass-by-sharing),也就是说,在方法中引用的对象和传递的对象是一样的。
对象数组
数组既可以存储基本类型值,也可以存储对象
当使用new 操作符创建对象数组后,这个数组中的没给我元素都是默认值为null的引用变量。

变量的作用域
|
|
调用f.p()
x:1
- x被声明为类中初值为0的数据域,但是它在方法p()中又被声明了一次,初值为1,打印的是后者
y:0
- y在方法p()的外部声明,但在方法内部也是可访问的。
this引用
关键字this引用对象自身。它也可以在构造方法内部用于调用同一个类的其他构造方法。
- Java要求在构造方法中,语句this(参数列表)应在任何其他可执行语句之前出现。
- 如果一个类有多个构造方法,最好尽可能使用this(参数列表)实现它们。通常,无参数或参数少的构造方法可以用this(参数列表)调用参数多的构造方法。这样做通常可以简化代码,使类易于阅读和维护。
本章小结
- 类是对象的模板。它定义对象的属性,并提供用于以创建对象的构造方法以及操作对象的普通方法。
- 类也是一种数据类型。可以用它声明对象引用变量。对象引用变童中似乎存放了一个对象,但事实 上,它包含的只是对该对象的引用。严格地讲,对象引用变量和对象是不同的,但是大多数情况下, 它们的区别是可以忽略的。
- 对象是类的实例。可以使用new 操作符创建对象,使用点搡作符( .)通过对象的引用变量来访问该 对象的成员。
- 实例变量或方法属于类的一个实例。它的使用与各自的实例相关联。静态变量是被同一个类的所有 实例所共享的。可以在不使用实例的情况下调用静态方法。
- 类的每个实例都能访问这个类的静态变量和静态方法。然而,为淸晰起见,最好使用 “类名.变量” 和 “类名.方法” 来调用静态变量和静态方法。 6. 可见性修饰符指定类、方法和数据是如何被访问的。公共的(public)类、方法或数据可以被任何 客户访问,私有的(private)方法或数据只能在本类中被访问。
- 可以提供 get (访问器)方法或者 set (修改器)方法使客户程序能够看到或修改数据。
- get 方法具有方法签名 public returnType getPropertyNameO。如果返回值类型( returnType)是 boolean 型,则 get 方法应该定义为 public boolean isPropertyNameO。set 方法具有方法签名 public void setPropertyName(dataType propertyValue), ,
- 所有传递给方法的参数都是值传递的。对于基本类型的参数,传递的是实际值;而若参数是引用教据类型,则传递的是对象的引用。
- Java数组是一个可以包含基本类型值或对象类型值的对象。当创建一个对象数组时,它的元素被 賦予畎认值 null。
- 一旦被创建,不可变对象(immutableobject) 就不能被改变了。为了防止用户修改一个对象,可以 定义该对象为不可变类。
- 实例变童和静态变量的作用域是整个类,无论该变量在什么位置定义。实例变量和静态变量可以在 类中的任何位置定义。为一致性考虑,本书都在类的开始部分定义。
- this关键宇可以用于引用进行调用的对象。它也可以用于在构造方法中来调用同一个类的另外一 个构造方法。