发表于: 2017-07-30 00:56:42
2 992
一 今天做的事情:
了解了如下的知识:
A 方法
a 方法类似于C语言中的函数。在Java语言中方法必须定义在类里,方法在逻辑上要么属于类,要么属于对象,不能独立存在。方法有三个要素:1 方法名,方法的标示。2 调用者。可以是类,可以是对象。3 参数列表。
b 如果一个方法使用了修饰符static来修饰,那么这个方法属于一个类,否则属于对象。
c 因为方法不能独立存在,所以在使用时的形式是“类.方法”或者“对象.方法”。
d 在同一类中,一个方法调用另一个方法时,若被调方法有static修饰,则默认类为调用者;若无static修饰,则用this作为调用者。
e 方法参数传递方式为值传递,参数本身的值不会改变。
d 在定义方法时,在最后一个形参类型后增加三点...,则定义了一个形参个数可变的参数,相当于一个数组。一个方法中最多只能有一个个数可变的形参,而且必须位于形参列表的最后。
例子:
语句 public static void test(int a ,String... ex) 等价于 public static void test(int a ,String[] ex)
f 一个方法体内调用自身称之为方法递归。方法的递归必须在满足某个条件下返回值能确定,否则就成了无穷递归,相当于死循环。另外,递归一定要向已知方向递归。
g 同一个类中可以定义多个同名但是形参列表不同的方法,这就是方法重(chong)载。因为形参列表不同,系统在调用时可以区分。不用返回值作为区分的原因是:在调用方法时返回值可以省略,这样就不能区分是在调用哪个方法了。程序不能有二义性,否则错误。
h 写程序时避免重载参数可变的方法,降低程序的可读性。
例子: public void test(String...books)
public void test(String books)
B 变量
a 成员变量分为没有static修饰的实例变量和有static修饰的类变量。访问类变量的语法为:类.类变量或者实例.类变量。访问实例变量的语法为:实例.实例变量。
例子:
b 局部变量分为形参、方法局部变量、代码局部变量。
形参在定义方法签名时被定义,作用域为整个方法;方法局部变量在方法内部某一行被定义,作用域为从定义的行开始一直到方法的结束;代码局部变量:在由{}限定的代码块里的变量,作用域为从定义的行开始到};
除了形参外,方法和代码局部变量必须先显式初始化,否则不能访问。形参在定义时已经由系统隐式初始化,所以无需显式初始化。
显式初始化:一开始我以为是显示初始化(因为在《疯狂Java讲义中我找到了很多错误》,所以首先想到的是书错了),随手一搜是这个,书上没错。显式初始化是指定义变量时给变量符初值,例如语句 int i1 = 2 ; 而隐式初始化是指只定义变量不赋初值,例如 int i2 ;
例子:
c 局部变量和成员变量允许重名,因为作用域不同。书上啰七八嗦地一段话跟绕口令似的,说的就是作用域不同,允许重名,否则不允许重名。
d P128 当程序需要当问类变量时,尽量使用类作为主调,而不要使用对象作为主调这样可以避免程序产生歧义,提高程序的可读性。
e Java语法中允许通过对象来访问类成员(包括类变量、方法)可以说完全是一个缺陷,聪明的开发者应该学会避开这个陷阱,而不是天天在这个陷阱旁边绕来绕去!
f 上面的d、e两点是书上的原话,不是很理解,因为程序写得少。相信在之后的某一天我会全然明白,或者在翻日报时看到这两句话恍然大悟,明白了作者这两句话真正的含义。
评论