第二章
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
控制语句:
if
(
condition
)
statement
;
For
循环:
for
(
initialization;condition;iteration
)
sattement
2.6
基本词汇
空白分隔符(
whitespace
):必须在已经被运算符或分隔符描述的标记之间至少留出一个空白分隔符
标识符(
identifiers
):赋给类、方法或是变量的名字。不能以一个数字开始,区分大小写
常量(
literal
)
分隔符(
separators
):
() {} [] ; , .
Java
关键字
Java
类库
第三章
数据类型、变量、数组
Java
是强类型语言:
(1)
每个变量都有类型,每个表达式都有类型,每种类型都是严格定义的
(2)
所有的数值传递,都要先进行类型相容性的检查
8
个基本数据类型
(1)
字节型(
byte
)
有符号,长度为
8
;用于从网络或文件处理数据流,以及可能与
java
的其它内置类型不直接兼容的未加工的二进制数据
(2)
短整型(
short
)有符号,
长度为
16
;适用于
16
位计算机,目前使用较少
(3)
整形(
int
)有符号,
长度为
32
;最常用,通常被用来控制循环及做数组的下标;当整数表达式包含
byte
、
short
、
int
及字面量数字,在进行计算以前,所有表达式的类型都被提升到
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-type
)
value
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
)语句有:
for
;
while
;和
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
中跳转语句:
break
,
bontinue
和
return
这些语句把控制转移到程序的其它部分
Break
的作用:(
1
)在
switch
语句中,用来终于一个语句序列;(
2
)退出一个循环(
3
)作为一种“
goto
”语句来使用
标签(
lable
):仍和合法有效的
java
标识符后跟一个冒号。
如果一个标签不在包围
break
的块中定义,就不能
break
到该标签。
Continue
语句:使控制直接转移给控制循环的条件表达式,然后继续循环过程
Return
语句:用来明确地从一个方法返回,
return
语句使程序控制返回到调用它的方法。
第六章
介绍类
类定义了对象的本性,是
java
的核心和本质。
Java
程序中实现的每一个概念都必须封装在类以内。
类是对象的模板(
template
),而对象就是类的一个实例(
instance
)
由于一个对象就是一个类的实例,因此
objcet
和
instance
这两个词经常互换
定义一个类,要声明它的准确的格式和属性,类的代码定义了该类数据的接口。
获得一个类的对象需要两步:(
1
)声明该类类型的一个变量(
2
)该声明要创建一个对象的实际的物理拷贝,并把对于该对象的引用赋给该变量(通过
new
运算符实现)
New
的通用格式:
class-var = new classname();
类与对象指尖的区别:类创建一种新的数据类型,该种类型能用来创建对象。也就是:类创建了一个逻辑的框架,该框架定义了它的成员指尖的关系。
当将一个对象引用赋值给另一个对象引用时,并没有创建该对象的一个拷贝,而是仅仅对引用的一个拷贝
方法的一般形式:
type name
(
parament-list
)
{//body of method}
如果方法不返回任何值,则
type
必须为
void
;不返回
void
的方法,方法返回值调用它的调用程序:
return value
,
value
是返回的值
对于返回值,需要注意:(
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
条件语句在递归调用不执行时来强制方法返回
本文出自 “藏云台” 博客,谢绝转载!