Java程序设计大学教程第二章 程序设计基础本章是学习 Java程序设计的基础。我们首先通过一个简单的 Java程序来了解程序的组成结构、语言要素和编写规范,建立程序的基本概念。然后以数据和运算作为程序设计的基础,通过讲解数据和数据类型、变量和常量、表达式和运算符以及流程控制,开始 Java程序设计语言的探索之旅
Java程序设计大学教程
2.1 程序
程序是指按照时间顺序依次安排的工作步骤。而程序设计则是对这些步骤的编排和优化。
计算机处理的核心是数据和运算。数据的基本存储单位是位,数据按照不同的数据类型来组织和存储。
运算的基础是表达式,运算的控制手段是流程。无论是多么复杂的运算,都可以分解成顺序、选择和循环这三种基本的程序结构。
Java程序由一个或多个独立的类组成,但其中必须有一个公有类,而且源代码文件(,java文件)必须与这个公有类的名字相同。
Java程序设计大学教程
2.1.1 初识 Java程序一个 Java程序的基本框架结构:
Java程序由一个或多个独立的类组成,但其中必须有一个公有类(如,HelloWorld),而且源代码文件必须与这个公有类的名字相同(如,HelloWorld.java)。
Java的类可以由一个或多个方法组成,其中公有类中的
main方法可用作程序运行的入口。
// The First Java Program
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World! ");
}
}
程序头的注释 HelloWorld类
main方法修饰符方法头方法体方法名参数返回类型
Java程序设计大学教程
2.1.1 初识 Java程序
Java程序的编辑、
编译和运行过程编辑程序代码
HelloWorld.java
javac生成出错信息
Yes
编译程序代码
javac HelloWorld.java
HelloWorld.class
解释执行字节码
java HelloWorld
有编译错误吗?
No
Java程序编译通过,会自动生成一个包含了这个源程序字节码的同名,class文件。该文件可以通过 Java虚拟机运行。
Java程序设计大学教程
2.1.2 标识符和关键字
在 Java语言中,标识符用于表示变量、常量、方法、类或接口的名称。标识符是大小写敏感的,但没有长度限制。
Java关键字是为编译器保留的、具有特定含义的标识符,
不能把它用做变量、类或方法的名称。
Java语言中的保留字
abstract default if private throw
boolean do implements protected throws
break double import public transient
byte else instanceof return try
case extends int short void
catch final interface static volatile
char finally long super while
class float native switch
const for new synchronized
continue goto package this
Java程序设计大学教程
2.1.3 撰写规范的程序代码程序代码质量评审原则:
正确性 指程序代码要实现软件设计所要求的功能;
可靠性 指程序代码最后编译的程序要能够稳定、可靠、安全的运行;
规范化 指程序代码书写的风格、命名规则等要符合规范;
可读性 指程序代码要便于查看和理解;
灵活性 指程序代码的设计和编写应该易于维护和改动。
// 程序说明
package 包的名称
import 类的名称类修饰符 class 类的名称构造方法类成员:方法 (按照以下访问特性次序排列)
public
protected
private protected
private
类成员:域 (按照以下访问特性次序排列)
public
protected
private protected
private
静态变量(即使用 static修饰符的。按照以下访问特性次序排列)
public
protected
private protected
private
常量 (即使用 static final修饰符的 )
Java程序设计大学教程
2.2 数据和数据类型
数据是我们对信息的一种组织和表达形式。计算机是一个数据处理器,而程序就是处理数据的具体步骤和方法。
Java是强类型语言,在 Java中,常量和变量必须事先声明数据类型才能使用。 Java通过声明的数据类型在合适的地方为它们分配内存。
Java程序设计大学教程
2.2.1 数据
无论数据以何种形式出现,但对于计算机而言,程序所处理的都是同样的二进制位模式数据。计算机存储器仅仅将数据以位模式存储。至于解释位模式是数值类型、文本类型、或其它的数据类型,则是由输入 /输出设备或程序的完成。
位( bit,binary digit的缩写)是存储在计算机中的最小单位;它是 0或 1。长度为 8的位模式被称为 1个字节。
不同的位模式集合可以设计用于表示文本符号。我们称一类位模式集合为码。表示符号的过程被称为编码。
常用的码有 ASCII码、扩展 ASCII码,Unicode码。
Java程序设计大学教程
2.2.2 常量和变量变量是指其值在运行时可以改变的量。在程序运行期间其值保持不变的量,我们称之为常量。 Java语言中使用关键字 final来定义常量。例如:
final double PI = 3.14159; // PI是实数类型常量
int x,y; // x,y是整数类型变量
double w = 3.1415;// w是实数类型变量
boolean truth = true;// truth是布尔类型变量
Constant const = new Constant();// const是对象类型变量
Java程序设计大学教程
2.2.3 数据类型
Java中的数据类型可以分为基本类型
( primitive type)和对象类型( object
type)两大类。其中的基本数据类型包括:整数类型、实数类型(也称浮点类型)、字符类型和布尔类型。
Java中的对象数据类型是一种抽象数据类型
( ADT),它将数据和相关的操作封装在一起。
除了 Java类库提供的大量作为 API的对象数据类型外,Java允许程序员定义自己的对象数据类型,满足更复杂的编程需要。
Java中的数据类型基本类型
( primitive)
字符类型布尔类型整数类型实数类型
float
char
对象类型
( object)
int
long
byte
short
double
boolean
整数,字符,布尔,实数类,接口字,字节,位字符串,集合,
数组 基本数据类型机器内部表示对象数据类型抽象
Java程序设计大学教程
2.2.3 数据类型
字符串是指一个字符序列的集合。在 Java中字符串完全被当成对象,字符串类型是标准 Java类库中预定义的 String类。
字符串作为对象数据类型还封装了许多相关的操作,便于我们对字符串进行处理。
int length() 返回字符串的长度。
String substring(int beginIndex,int endIndex) 返回原字符串中从 beginIndex位置开始到 endIndex位置(不包括该位置)之间的所有字符组成的新字符串。
int indexOf(int ch) 返回从索引 0开始的与 ch字符相匹配的首个字符的位置(索引值)。未检索到匹配字符的则返回 -1。
int indexOf(String str) 返回从索引 0开始的与 str字符串相匹配的首个子串的开始位置(索引值)。未检索到匹配的字符串则返回 -1。
boolean equals(Object anObject) 比较字符串是否相等,
相当时返回 true,否则返回 false。
比较字符串是否相等应该使用 equals方法 。
示例程序 2-2 字符串的引用与构造
Srting name1 = new String("李白 ");//构造字符串对象,李白,,
//name1引用该字符串对象
Srting name2 = "李白 ";//name2引用已构造的字符串对象,李白,
Srting name3 = "杜甫 ";//隐式构造字符串对象,杜甫,,name3引用该字符串对象
name1 = "杜甫 ";//name1引用字符串对象,杜甫,
Java程序设计大学教程
2.2.3 数据类型
Java程序在首次声明变量时,需要为其指定一种类型。类型决定了变量中存储的值的范围,以及能对变量值执行的操作。 Java是一种强类型语言,它能区别多种数据类型,并且通常不允许用一种类型替换另一种。这样,使得编译器能高效处理数据,防止由于类型不匹配导致的运行时错误。当需要更高的灵活性时,Java
语言也提供了类型转换的机制。
char
byte short int long
float double
语法与规则 ( 类型指示符 ) 表达式double pi = 3.1415926;
int p = (int)pi; //p=3
Java程序设计大学教程
2.3 表达式与运算符
一个表达式就是一个能够返回值的简单结构。最简单的表达式是变量和常量。在 Java中也可以通过使用运算符、方法调用以及类型转换等,建立复杂的表达式。
建立表达式没有通用的方法,因为要取决于所用的运算符,Java包括有赋值运算符、逻辑运算符、算术运算符、布尔运算符、位运算符等等。表达式可用于赋值给一个变量、计算方法的参数、或者判断一个条件,表达式也可以包含方法的调用。例如:
x { 变量 }
PI { 常量 }
System.out.println("字符串长度,"+n);{ 方法调用 }
x * y { 算术运算 }
x = 1.5 { 变量赋值 }
love2.equals(love1) { 逻辑运算 }
int p = (int)PI; { 类型转换 }
理解表达式的重点之一就是要了解不同的运算符。
Java程序设计大学教程
2.3 表达式与运算符运算符是用来完成一个动作的特定语言的语法记号。
赋值运算符
增减运算符
算术运算符
关系运算符
逻辑运算符
位运算符运算符 含义
= 直接赋值
+= 加法赋值
-= 减法赋值
*= 乘法赋值
/= 除法赋值
%= 模赋值运算符 Java C/C++ Delphi Visual Basic
增 ++ ++ Inc() 无减 -- -- Dec() 无运算符 Java C/C++ Delphi Visual Basic
加 + + + +
减 - - - -
乘 * * * *
浮点数除 / / / /
整数除 / / div /
取模 % % Mod Mod
运算符 Java C/C++ Delphi Visual Basic
相等 == == = =或 is
不相等 != != <> <>
大于 > > > >
小于 < < < <
小于等于 <= <= <= <=
大于等于 >= >= >= >=
运算符 Java C/C++ Delphi Visual Basic
逻辑与 && && And And
逻辑或 || || Or Or
逻辑非 ! ! Not No
运算符 Java C/C++ Delphi Visual Basic
与 & & and and
或 ~ ~ not not
取反 | | or or
异或 ^ ^ xor xor
左移 << << Shl 无右移 >> >> Shr 无
Java程序设计大学教程
2.3 表达式与运算符
Java语言中明确地规定了各种运算符的优先级。在优先级条件下,运算规则是:优先级高的运算符在优先级低的运算符之前求值,优先级相同时自左向右求值。
优先级 运算符类型 运算符优先级最高 一元运算符 [ ],()(方法调用)
! ~ ++ -- + - new
()(强制类型转换)
优先级较高 算术运算符位移运算符
* / % + -
<< >>
优先级较低 关系运算符位移运算符逻辑运算符
< <= > > == !=
& ^ |
&& ||
:(三元判断运算符,例如,A>B?X:Y)
优先级最低 赋值运算符 =
+= -= *= /= %=
Java程序设计大学教程
2.4 流程控制
任何程序流程均可以用顺序结构、选择结构、
循环结构这三种基本控制结构实现。
程序中的语句是按照编写时写入的顺序一条接一条地执行的,这一过程称为顺序执行。
Java提供了两种选择结构语句,if语句和
switch语句。
循环结构使用条件表达式来控制一个(一组)
动作的重复执行。 Java语言中支持的循环语句包括,while循环,do-while循环,for循环。
Java程序设计大学教程
2.4 流程控制
switch语句是多分支判断选择结构。根据选择器的值,
switch语句可以从很多可能的条件中选择一个分支中的语句或语句块执行。
语法与规则 switch (表达式 ) {
case 值 1:
语句 1;//满足值 1的条件执行语句
break;
case 值 2:
语句 2;//满足值 2的条件执行语句
break;
...
case 值 n:
语句 n;//满足值 n的条件执行语句
break;
default,
缺省语句 ;
}
语法与规则
if (条件表达式 ) {
//做某事的语句 ;
...
}//如果是单条语句,可不使用 {}
else{
//做另一件事的语句 1;
...
}//如果是单条语句,可不使用 {}
if-else语句允许在两个程序块之间进行选择。同样,无论条件的值如何,都能确保有且只有一种选择被执行。 if语句还可以嵌套任意层以构成更复杂的判断选择结构。
Java程序设计大学教程
2.4 流程控制
while循环
do-while循环
for循环
while (布尔表达式 ) {
语句 ;
...
} //如果循环体是单条语句,可不使用 {}
do {
语句 ;
...
} while (布尔表达式 );
for ( 初值表达式 ; 布尔表达式 ; 步进表达 式 ) {
语句 ;
...
} //如果循环体是单条语句,可不使用 {}
Java程序设计大学教程
2.4 流程控制
break,在 while,do-while或 for循环中,当某种条件满足时需要立即跳出循环时,使用 break关键字,
可以使得程序的执行流程立即跳出循环。
continue,如果想跳过循环中的部分代码重新开始下一次循环,就使用 continue关键字。
Java程序设计大学教程一个有趣的例题
,射雕英雄传,的朋友,一定还记得黄蓉遇上神算子瑛姑,给她出的三道题目中有一题是这样的:今有物不知其数,三三数之剩二,五五数之剩三,
七七数之剩二,问物几何?也就是说,有一个未知数,这个数除以三余二,
除以五余三,除以七余二,问这个数是多少?
示例程序 2-11,黄蓉的题目,Calc.java
public class Calc{
public static void main(String[] args) {
int x;
for (x=0;x<100;x++) {
if ((x%3==2) && (x%5==3) && (x%7==2)) {
System.out.println("这个数字是,"+x);
}
}
}//end of main
}//end of Calc