第二章 java语言概述
Java的核心是面向对象编程。
计算机程序由两类元素组成:代码和数据。
面向对象编程的一个实质性的要素是抽象(abstraction)。
使用层级分类是管理抽象的一个有效方法,复杂系统的分层抽象也能被应用于计算机程序设计。
面向对象编程的三个原则:
(1)              封装(Encapsulation)将代码机器处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用
Java封装的基本单元是类(class):一个类定义了将被一个对象集共享的结构和行为(数据和代码)
类是一种逻辑结构,而对象是真正存在的物理实体。
成员(member)当创建一个类时,需要制定组成类的代码和数据。这些元素都被称作该类的成员
成员变量(member variables/实例变量(instance variables):类定义的数据
成员方法(member methods):操作数据的代码
java中,一个类的行为和接口是通过方法来定义的,类这些方法对它的实例数据进行操作。
(2)              继承(inheritance)一个对象获得另一个对象的属性的过程。
(3)              多态性(polymorphism)允许一个接口被多个同类动作使用的特性,即“一个接口,多种方法”
 
2.2 第一个简单程序
注意:类名必须与源程序的文件名相同
      Java中,所有程序活动都发生在类中
所有的java应用程序都通过调用main()开始执行
java中,所有的语句都以一个分好结束
注释(comment):
(1)       多行注释:始于“/*”,终于“*/
(2)       单行注释:“//
 
2.3 第二个简单程序
声明变量的一般形式: type var-name;
java中,赋值符号是等号
 
2.4两个控制语句
If控制语句:ifconditionstatement
For循环:forinitialization;condition;iterationsattement
 
2.6 基本词汇
空白分隔符(whitespace):必须在已经被运算符或分隔符描述的标记之间至少留出一个空白分隔符
标识符(identifiers):赋给类、方法或是变量的名字。不能以一个数字开始,区分大小写
常量(literal
分隔符(separators):()   {}   []   ;   ,   .
Java关键字
Java类库
 
第三章 数据类型、变量、数组
Java是强类型语言:
(1)       每个变量都有类型,每个表达式都有类型,每种类型都是严格定义的
(2)       所有的数值传递,都要先进行类型相容性的检查
8个基本数据类型
(1)       字节型(byte 有符号,长度为8;用于从网络或文件处理数据流,以及可能与java的其它内置类型不直接兼容的未加工的二进制数据
(2)       短整型(short)有符号, 长度为16;适用于16位计算机,目前使用较少
(3)       ×××(int)有符号, 长度为32;最常用,通常被用来控制循环及做数组的下标;当整数表达式包含byteshortint及字面量数字,在进行计算以前,所有表达式的类型都被提升到int
(4)       长×××(long):有符号,长度为64
(5)       字符型(char):java使用unicode码代表字符,类型为16位,没有负数;尽管char不是整数,但允许将2个字符相加,或对一个字符变量值进行增量操作
(6)       浮点型(float):当计算的表达式有精度要求时被使用;分为单精度浮点型(float 32位)以及双精度浮点型(double 64位)
(7)       布尔型(boolean):值只能是真或假中的一个
字面量
(1)       整数字面量:任何一个数字的值就是一个整数字面量
十进制、八进制(前面加一个前导为0);十六进制(前面加一个前导为0x
(2)       浮点字面量:
变量:
声明一个变量:type identifier [ = value][, identifier [ = value]….];
动态初始化:
变量的作用域(scope)和生存期:
(1)       java允许变量在任何程序块内被声明
(2)       在一个作用域中定义的变量对于该作用域外的程序是不可见的
(3)       作用域可以进行嵌套:外部作用域定义的对象对于内部作用域中的程序是可见的,但是反过来就是错误的
(4)       变量可以在程序块内任何地方被声明,但是只有他们被声明以后才是合法有效的。
(5)       变量在其作用域内被创建,离开其作用域时被撤销
(6)       尽管程序块能被嵌套,但是不能将内部作用域声明的变量与其外部作用域声明的变量重名。
 
类型转换与强制类型转换
自动类型转换的条件:(1)这两种数据是兼容的(2)目的类型数的范围比来源类型的大
强制类型转换:(target-typevalue
Target-type:目标类型
表达式的类型提升规则(type promotion rules):所有byte型和short型的值都将被提升到int型;如果一个操作数是long型,整个表达式将被提升到long型‘如果一个操作数是float型,整个表达式将被提升到float型;如果有一个操作数是double型,计算结果就是double
 
数组
数组(array)是相同类型变量的集合,可以使用共同的名字引用,通过下标来访问
一维数组(one-dimensional array):相同类型变量列表
声明格式:type var-name[];
运用new来为其分贝地址并且赋值,new是专门用来分配内存的运算符
一般形式:array-var = new type[size];
多维数组(multidimensional arrays
定义二维数组: int d[][] = new int [4][5];
另一种数组声明方式:type [] var-name;
 
Java不支持或不允许指针:如果这样做,将允许java applet突破java运行环境和主机指尖的防火墙
 
第四章 运算符
Var =var op .;运算语句可以被重写为 var op=.;
好处:(1)比标准的等式要紧凑(2)有助于提高java运行效率
 
 
赋值:var = .
 
三元运算符(ternary)用于取代某个类型的if-then-else语句,即?
通用格式:.1?.2:.3
.1为真,则.2被求值,反之,则.3被求值
 
圆括号不会降低程序的运行速度
 
第五章 程序控制语句
编程语言使用控制(control)语句来产生执行流,从而完成程序状态的改变。
Java的程序控制语句分为:选择、重复和跳转
根据表达式结果或变量状态选择(selection)语句来时程序选择不同的执行路径
重复(iteration)语句使程序能够重复执行一个或一个以上语句
跳转(jump)语句允许程序以非线性的方式执行
 
Java的两种选择语句:if语句和switch语句
If语句格式:if(condition) statement1;else statement2;
注意:直接跟在if或者else后的语句只能有一句,如果想包含更多的语句,需要建立一个程序块
Switch语句的3个重要特性:
(1)       switch语句不通与if语句的是switch语句仅能测试相等的情况,而if语句可计算任何类型的布尔表达式
(2)       在同一个switch语句中没有两个相同的case常量
(3)       Switch语句通常比一系列嵌套if语句更有效
如果需要在一组值中做出选择,switch语句将比与之等效的if-else语句快的多
 
Java的循环(loop)语句有:forwhile;和do-while
While语句通用格式:while(conditong){//body of loop} condition为真时,循环体就被执行
有些控制不需要循环体,所有的行为都出现在条件表达式自身内部,在专业化java代码中,一些可以由控制表达式本身处理的短循环通常都没有循环体
Do-while循环:do{//body of loop}while(condition);先执行循环体,然后再计算条件表达式,如果表达式为真,则循环继续,否则,循环结束
Do-while在编制菜单选择时尤为管用。
For循环的通用格式:for(initialization;condition;iteration){//body}
For循环内申明变量时,该变量的作用域在for语句执行后就结束了,在for循环外,变量就不存在了。
 
Java支持3中跳转语句:breakbontinuereturn 这些语句把控制转移到程序的其它部分
Break的作用:(1)在switch语句中,用来终于一个语句序列;(2)退出一个循环(3)作为一种“goto”语句来使用
标签(lable):仍和合法有效的java标识符后跟一个冒号。
如果一个标签不在包围break的块中定义,就不能break到该标签。
Continue语句:使控制直接转移给控制循环的条件表达式,然后继续循环过程
Return语句:用来明确地从一个方法返回,return语句使程序控制返回到调用它的方法。
 
第六章 介绍类
类定义了对象的本性,是java的核心和本质。Java程序中实现的每一个概念都必须封装在类以内。
类是对象的模板(template),而对象就是类的一个实例(instance
由于一个对象就是一个类的实例,因此objcetinstance这两个词经常互换
定义一个类,要声明它的准确的格式和属性,类的代码定义了该类数据的接口。
获得一个类的对象需要两步:(1)声明该类类型的一个变量(2)该声明要创建一个对象的实际的物理拷贝,并把对于该对象的引用赋给该变量(通过new运算符实现)
New的通用格式: class-var = new classname();
类与对象指尖的区别:类创建一种新的数据类型,该种类型能用来创建对象。也就是:类创建了一个逻辑的框架,该框架定义了它的成员指尖的关系。
当将一个对象引用赋值给另一个对象引用时,并没有创建该对象的一个拷贝,而是仅仅对引用的一个拷贝
方法的一般形式:type nameparament-list{//body of method}
如果方法不返回任何值,则type必须为void;不返回void的方法,方法返回值调用它的调用程序:return valuevalue是返回的值
对于返回值,需要注意:(1)方法返回的数据类型必须与该方法制定的返回类型相兼容;(2)接收方法返回值的变量也必须与制定方法返回值的类型相兼容。
 
构造函数(constructor)在对象创建时初始化。它与它的类同名,它的语法与方法类似。构造函数没有返回值,即使是void型的值也不返回。一个类的构造函数内隐藏的类型是它自己类的类型,构造函数的任务就是初始化一个对象的内部状态,以便使创建的实例变量能够完全初始化,可以被对象马上使用。
一旦定义了构造函数,默认构造函数将不再被使用
 
This关键字:调用该方法对象的一个引用
垃圾回收(garbage collection):自动提处理重新分配的内存的办法,编写的大多数程序,不需要考虑垃圾回收的问题
 
Finalize()方法:
收尾(finalization):定义一些特殊的操作,这些操作在一个对象将要被垃圾回收程序释放时执行
通用格式:protected void finalize(){// finalization code here}
 
堆栈(stack):先进后出的顺序存储数据
堆栈通过两个传统的操作来控制:压栈(push)和出栈(pop
 
第七章 方法和类
重载(overloaded:同一个类中的2个或2个以上的方法可以有同一个名字,只要参数声明不同即可。这种方法被称作重载,这个过程称为方法重载(method overloading
方法重载支持多态性,它是实现“一个接口、多个方法”范型的一种方式
重载的价值在于它循序相关的方法可以使用同一个名字来访问
 
计算机语言给子程序传递参数的方法有两种:(1)按值传递:将一个参数值赋值成为子程序的正式参数,对子程序的参数的改变不影响调用它的参数(2)引用调用:参数的引用被传递给子程序参数。对子程序参数的改变将会影响调用子程序的参数
 
方法能够返回任何类型的数据,包括创建类的类型
递归(recursion):依照自身定义事物的过程,允许方法调用自身调用的属性
递归的优点在于:某些类型的算法采用递归比采用地带算法更加清晰和简单
在做递归的时候,必须使用if条件语句在递归调用不执行时来强制方法返回