摘要:带参数的构造器 对于那些没有默认构造器,或者想调用一个带参的构造器的情况下,就必须用到super关键字显示的调用构造器。 class Game{ Game(int i){ System.out.println(“Game constructor”); } } class BoardGame extends Game{ BoardGame(int i){ super(i); System.out.p...
阅读全文
摘要:组合语法假设你需要创建一个具有多个基本数据类型,多个String对象,以及另一个类的对象。对于基本类型你可以直接定义,但对于非基本类型的对象,必须将其引用置于新的类中。class WaterSoure{ private String s; WaterSource(){ System.out.println(“WaterSource()”); s=”Constructed”;}public String toString(){return s;}}public class SprinklerSystem{ private String value1,value2,value3,value4; p
阅读全文
摘要:this关键字假设有同一类型的两个对象,分别是a与b. class Banana{ void peel( int i ){ /*……*/} } public class BananaPeel{ public static void main(String[] args){ Banana a=new Banana(),b=new Banana();a.peel(1);b.peel(2);}}如果只有一个peel()方法,它是如何知道是被a调用的还是被b调用的呢?实际上编译器做了一些幕后工作。它暗自把所操作对象的引用作为第一个参数传递给了peel(),所以上述两个方法改写一下,可变为:Banana
阅读全文
摘要:使用构造器确保初始化许多程序的错误都源于程序员忘记初始化变量。因此可以为每个类都顶一个initialize()方法。该方法会提示你在使用对象之前,应首先调用intitialize()。但构造器的命名存在这两个问题首先,无论构造方法起任何名称都有可能会与类中某个成员相冲突。其次,调用构造器是编译器的职责,编译器必须明确知道构造方法的名称。因此Java中的构造器命名采用与类相同的名称。 class Rock{ Rock(){ System.out.print(“Rock ”); } } public class SimpleConstructor{ public static void main(
阅读全文
摘要:名字的可见性 如果在程序的某个部分里建立了一个类型的名字,而其他人这个程序的另一个部分里也建立了相同的名字,那么该如何区分这种同名却不同的类型呢,Java中为了个一个类库生成不会与其他名字混淆的名字,Java设计者希望程序员反过来使用自己的Internet域名,这样就能保证这个名字是独一无二的,反转域名后句点用来代表子目录的部分。 运用其他构件 如果想在自己的程序中使用已经定义好的类,你需要告诉编...
阅读全文
摘要:如果在Java中一切都是对象,那么是什么决定了某一类对象的行为与特征呢?或者确定对象的类型呢?Java中使用class关键字来表示“我准备告诉你一种新类型的对象看起来像什么样子”。class这个关键字后面紧跟新类型的名称。 例如 class ATypeName { /*Class body goes here*/ } 这样就引入了一种新的类型。虽然这个对象并不具备任何作用,但我们已经可以使用new...
阅读全文
摘要:用引用操作对象 每种编程语言都有自己的操纵内存中元素的方式。有时候,程序员必须注意将要处理的数据是什么类型。你是直接操纵元素。还是用某种语法操纵元素。 在Java中一切都被视为对象,因此可以使用一种固定的语法来操纵元素。虽然一切都被视为对象但实际操作的是对象的一个引用(reference)。可以将这一情形想象成遥控(引用)来操纵电视机(对象),只要保持电视与遥控的链接,不管你需要对电视进行什么操...
阅读全文
摘要:按位操作符按位操作符用来操作整数基本数据类型中的单个bit,即二进制位。按位操作符对两个参数中对应的位执进行布尔代数运算。位操作符 Operator Use Operation & op1 & op2 运算op1和op2;如果op1和op2都是布尔值,而且都等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位与操作 | op1 | op2 算op1和op2;如果op1和op2都是布尔值,而且有一个等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位或操作 ^ op1 ^ op2 运算op1和op2;如果
阅读全文
摘要:算数操作符 算数操作符+,-,*,/,%,的用法和大多程序设计语言是相同的,%号的作用是整数除法中产生余数,而整数法会直接去掉小数部分,而不是四舍五入。 赋值运算符也有和算数操作符所结合的用法之前附录中有提及,用法是:比如要将x加上4,然后再赋值给x,就可以写成x+=4. public class MathOps{ public static void main(String [] args){ Random rand=new Random(47); int i,j,k; j=rand.nextInf(100)+1; System.out.println(“j:”+j)
阅读全文
摘要:操作符接受一个或多个参数,并生成一个新值。操作符其实可以看做一个有返回值方法,但是参数的形式和调用和普通的调用不同。常见的操作符赋值操作符:=复合赋值运算符:+=,-=,*=,/=,%=算数运算符:+,-,*,/,%(ß二元运算符),++,--(ß一元运算符)条件运算符:>,<,>=,<=,!=,==逻辑运算符:&&,||,|,!几乎所有的操作符都只能操作基本数据类型,但是”=”,”==”和”!=”,这些操作符能操作所有的对象。除此以外String类支持&rd
阅读全文
摘要:switchswitch可被归纳为一种选择语句。根据正式表达式的值(也可以被<int型的变量代替),根据表达式的值,swtich语句可以从一系列代码选出一段去执行。switch的语法如下switch(integral-selector){ case integrak-value1 : statement;break; case integrak-value2 : statement;break; case integrak-value3 : statement;break; case integrak-value4 : statement;break; //…. defau
阅读全文
摘要:True和False Java中不允许讲一个非布尔(boolean)类型的的变量当做布尔值使用,虽然C和C++中可以(True=非零,False=0),若想在布尔测试中使用一个非布尔值,比如if(a)中,那么必须要加上一个条件表达式将其转化成布尔值 ,例如if(!=0)If-else if-else是控制流程的最基本形式 if(Boolean-expression) statement 若if后面扩后内boolean值为True则执行statement,statement是指用分号分开的的单句,或符合语句,复杂句应被扩在大括号中 If(Boolean-expression){ &hellip
阅读全文
摘要:1.面向对象 尽管Java是基于C++的,但是相比之下,Java是一种更“纯粹”的面向对象程序设计语言。 面向对象其实是现实世界模型的自然延伸,世间万物都可以看作为对象。对象之间通过消息相互作用,现实世界中任何实体都以归纳成为某类事物,也因此任何对象都是某一类事物的实例,如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。 面向对象语言都支持三个概念:封装,多态和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的各
阅读全文
摘要:1990年12月,SUN MicroSystem公司成立了一个名为(Green Team)绿色项目的小组,Jame Gosling(Java之父),Bill Joe等人便是该小组的成员,小组成立的初衷是为了开发一种能够在电视,控制烤箱等家用消费类电子产品上进行交互式操作的分布式的系统框架,就这样一个名为Oak的软件诞生了。 1992年9月3日(Green Team)绿色项目小组展示了Start7手持设备,它类似于今天的PDA,这个设备中的程序就是用Oak程序设计语言实现的,Oak的名字由来是因为James Gosing的办公窗外有一棵橡树,根据这橡树命名。但是,在注册商标时却发现这个名字已经被
阅读全文