摘要:在java中,成员初始化在使用之前应该都要保证已经完成初始化。对于在方法体中的局部变量,如果没有使用指定初始化的方法对成员变量进行初始化,编译器会提示一个错误。而对于类的数据成员,编译器会对这些成员赋予默认的初始值,下面这段代码反映了这一点。 输出表明,即使类中的成员变量没有进行指定初始化,编译器仍
阅读全文
摘要:this关键字是Java中一类很特殊的关键字,首先它只能在方法内使用,用来表示调用这个方法的对象,在这一点上this和其他对对象的引用的操作是相同的。我们之所以可以在方法内部访问到它是因为编译器在方法调用时,会将调用方法的对象作为第一个参数传到方法里面。下面列举几个例子来对this的用途做一些总结。
阅读全文
摘要:方法重载是java中编译器在方法调用时采用的一个重要机制。起初方法重载的初衷是方便构造器的调用,比如对于一个类,可以实现用不同的方法来初始化它,又由于构造器的名称都是一样的,所以必须使用到方法重载的机制,并且这种机制不仅限于构造器方法。下面这个例子提供了方法重载的构造器和一般方法的例子。 输出如下:
阅读全文
摘要:接下来进入第五章,java中初始化和清理的问题,这是两个涉及安全的重要命题。初始化的功能主要是为库中的构件(或者说类中的域)初始化一些值,清理的功能主要是清除程序中不再被需要的元素,防止资源过分被垃圾占用的出现,为解决这些问题,java中提供了对构造器和垃圾清理器的支持,首先讨论构造器的问题。 为了
阅读全文
摘要:总结java中所有的与流程控制有关的知识 (1)表达式判断 Java中只允许true或者false来作为判断条件,不允许用0或者非0值作为判断条件。 (2)if-else 与流程密切相关的语句,决定了语句应该往哪个方向发展,与代码的逻辑结构密切相关。 (3)迭代 下面的语句被划分为迭代语句。 (A)
阅读全文
摘要:对java中其他操作符及一些注意事项的总结 (1)按位操作符 按位操作符操作基本整数类型中的单个二进制位,有与(&),或(|),非(~)。按位操作符还可以和等号(=)联合使用,如~=,&=等。 (2)移位操作符 移位操作符运算对象也是二进制的位,并且只能用来处理整数类型。分为右移(>>)和左移(<<
阅读全文
摘要:(1)直接常量 在程序中使用直接常量,相当于指导编译器,告诉它要生成什么样的类型,这样就不会产生模棱两可的情况。比如flaot a = 1f等,后缀表示告诉编译器想生成的类型。常用的后缀有l/L(long),f/F(float),d/D(double)。 对于二进制数,没有直接常量表示法,但是可以用
阅读全文
摘要:逻辑操作符与(&&)或(||)非(^)能够对布尔类型的数据类型进行操作,并且生成布尔值,和关系操作符的产生的数据类型是一样的。需要注意的不多,有以下几点: (1)在需要使用string类型的地方使用了布尔类型的数据,编译器会自动调用布尔数据类型的toString()方法产生一个string类型对象。
阅读全文
摘要:java中的关系操作符有等于“=”,不等于“!=”,大于“>”,小于“<”,大于等于“≥”,小于等于“≤”等。这些都不再赘述了,有一个有意思的点是关于等价性的讨论。 在java中测试两个对象或者基本数据类型经常会使用到“=”和.equals静态方法,这两者的机制通常会让人感到迷惑。 下面贴出测试代码
阅读全文
摘要:java中的算术操作符与其它语言并无太大区别,常用到的是以下这些: (1)加号(+),减号(-),除号(\),乘号(*),取模操作符(%),其中除号需要特别注意的是,会自动截取掉小数点后面的部分,而不是四舍五入地取得结果,要想获得精确的表示结果,需要将获得的结果表示为浮点数类型(float或者dou
阅读全文
摘要:接下来展示方法调用中的别名问题,方法调用中的别名问题指的是,将一个对对象的引用传递给某一个方法时,方法操作的是这一个特定的引用而不是这个引用的拷贝。 输出: 从输出可以看出,grow1方法的原型定义为static void grow1(float height),传递的值是一个整型变量,操作的是传进
阅读全文
摘要:Java中的别名机制实际体现的是对于“=”这一类赋值操作符的使用规则和内涵。“=”的实际内涵是指将右边的变量的值(对于基本数据类型而言)或者某一个对象的引用(对于某个具体对象而言)复制到左边的变量名所指定的存储区域内,虽然两者可能只有细微区别但还是需要仔细区分。 例如在对基本数据类型进行赋值操作时,
阅读全文