第4章 数组、逻辑和循环
1. Java关键字null指的是null对象,可用于任何对象的引用,它并不像C中的NULL常量那样,为零或者'\0'
2. 所有数组都有一个名为length的实例变量。元素个数
第5章 创建类和方法
1 关键字extends用于指定超类
class SportsTicker extends Ticker{
//
}
2
局部变量:在方法中定义
实例变量:在方法之外定义,且没有关键字static 修饰的变量
类变量: 在方法之外定义,且有关键字static修饰的变量
3.如果方法返回一个数组对象,则方括号可谓与returnType 或者参数列表后,返回英国是实例化的对象(数组名)
class RangeLister {
int[] makeRange(int lower, int upper) {
int[] range = new int[(upper - lower) + 1];for(int i = 0; i <= range.length - 1; i++) {
range[i] = lower + i;
}
return range;
}
public static void main(String[] args) {
int[] range;
RangeLister lister = new RangeLister();range = lister.makeRange(3,6);
System.out.print("The array: [");
for (int i = 0; i <= range.length - 1; i++) {
System.out.print(range[i] + " ");
}System.out.println("].");
}
}
4.由于this是指向当前实例的引用,因此只能在实例方法的定义体内使用它,在类方法(用static声明的方法中),不能使用this
5.局部变量x与实例变量x同名:x是局部变量,this.x是实例变量
6.作用域:当引用变量时,Java从最里面的作用域向外查找其定义
如果在方法中没有找到,则检查类本身
可以在较小的作用域内创建一个变量来隐藏或者取代该变量的原始值
7.将参数传给方法
调用接收对象参数的方法时,对象是按引用传递的。在方法总对该对象所做的任何操作都将影响原来的对象。
对象包括数组以及数组的对象。
将数组传递给方法,并在方法中修改其内容时,将影响原来的数组。
基本数据类型是按值传递的。
8.类方法
类方法可被类的任何实例使用,也被其他类使用。与实例方法不用,调用类方法不需要类的实例
9.currentTimeMillis()返回一个long值,使用1970.1.1午夜开始到当前的微秒数
10.助手类
程序中可以创建任意数目的类
使用JDK这些类必须位于环境变量CLASSPATH列出的文件夹中
11 将参数传递给Java程序
1) 参数之间的空格
2)使用引号来方式空格被认为是参数之间的分隔符
12 名字相同,参数不同的方法--重载
重载不考虑返回值的类型(编译不通过),或者参数名
13与其他方法不用,构造函数不能直接调用
使用new来创建类的新实例
①为对象分配内存
②初始化对象的实例变量:赋予初值并设置默认值
③调用类的构造方法
14构造函数 vs常规方法
区别:构造函数的名字总是类的名字;构造函数无返回类型;构造函数不能使用return语句返回一个值
15 调用另一个构造函数的方法
this(arg1,arg2,...)
16 覆盖方法
调用对象的方法时,Java将在该对象的类中查找方法的定义。如果没有找到,则将方法调用沿类层次向上传递,只到找到方法的定义为止。
要读该方法可在子类中定义一个特征标和超类相同的方法
17.要调用原来的方法可以用关键字super
关键字super和this类似,表示的是超类
18覆盖构造函数,现实的调用超类的构造函数super(arg1,arg2,...)
Java对super()的用法有特殊的规定,必须是构造函数定义的第一个语句,如果构造函数没有显式地调用super(),Java将自动调用:使用不带参数的super();
19结束方法
功能与构造函数相反
调用finalize()并不会导致对象作为无用单元被收集,只有删除对象的所有引用后,才会导致被标记为删除
20优化Java类是,一种减少其占用的内存量的方法是一旦类和实例变量不在需要,便删除指向它们的引用,要删除引用,将其设置为null即可