1.数据运算
运算由表达式表示,表达式由运算符和运算分量组成,运算分量可以是常量、变量和方法调用Java基本运算分类图
1.1 赋值运算
1.1.1 简单赋值运算变量 = 表达式
程序执行过程:
(1):计算“=”号右端表达式。
(2):判断“=”号左右两端类型,将表达式的值的类型转换为变量的类型(符合类型转换规则的,否则要手动转换)。
(3):赋值“=”号右端至变量。
类型转换规则:byte→ short → int → float → double
赋值运算符结合性:从右至左(int i = j = 3;//赋值顺序:j、i)
1.1.2 复合赋值运算x = x
(e)
常用的复合赋值运算符:+=、-=、*=、/=、%=
1.2 算术运算算术运算符的运算分量类型需是整数型和浮点数型。
单目运算符:+(取正)、-(取负),结合性从右至左
双目运算符: + (加)、-(减)、*(乘)、/(除)、%(求余数),结合性从左至右
1.3 自增和自减运算自增和自减运算要求运算分量是数值型(整数型,浮点数型),且只能是变量,不能是常量或表达式。
i++,表示引用变量i之后,i才进行加1,即以加1前的值作为运算结果。
++i,表示引用变量i之前,i先加1,然后以加1后的i作为运算结果。
1.4 关系运算用来表达两个表达式的值的比较,运算结果是布尔型
6个关系运算符:、>=、==、!=,前4个运算优先级高于后两个。
关系运算符的优先级低于算术运算符的优先级。
关系运算符的结合方向是自左至右。
1.5 逻辑运算用来描述逻辑表达式,结果为布尔型
&&(逻辑与)、||(逻辑或)、!(逻辑否定),!运算优先级高于算术运算符,&&和||则低于。
a&&b:a和b必须都为true,表达式为true,否则表达式为false;先计算a后计算b,若a为false,则表达式值为false。
a||b:a或b只要有一个为true,表达式为true,反之表达式为false;若a为false,则计算b,若b也为false,表达式为false。
1.6 条件运算条件运算是三目运算符
逻辑表达式 ?表达式1 : 表达式2
执行过程:
(1)计算逻辑表达式
(2)若逻辑表达式为true,计算表达式1并以其值作为运算结果。
(3)若逻辑表达式为false,计算表达式2并以其值作为运算结果。
条件运算符优先级高于赋值运算符,低于逻辑运算符,也低于关系运算符和算术运算符
条件运算符的结合性为自右至左。
1.7 其它运算1.7.1 位运算
~(位反)、&(位与)、^(位异或)、|(位或)
1.7.2 移位运算
<>(算术右移运算符)、>> >(逻辑右移位运算符)
2. 语句
一个计算过程由一系列计算步骤组成。一个计算步骤或用一个语句,或用一个计算流程控制实现。程序语言用语句描述计算步骤。Java语句结构图
2.1基本语句
2.1.1 表达式语句赋值表达式、自增自减表达式和方法调用表达式之后加上分号(;)即变成语句,称它们是表达式语句。
2.1.2 空语句空语句是只有一个分号的语句。
2.1.3 break语句break语句必须出现在多路按值选择结构或循环结构中。break语句的执行强制结束它所在的控制结构,让程序从这个控制结构的后继语句继续执行。
2.1.4 continue语句continue语句只能出现在循环结构中,continue语句的执行将忽略它所在的循环体中在它之后的语句。
简单的说:continue语句提早结束当前轮次循环,进入下一轮次循环。
2.1.5 return语句return语句只能出现在方法体中,return语句的执行将结束方法的执行,将控制返回到方法调用处。
return语句有两种形式:return;或return 表达式;
2.2 复合语句用花括号({})括住一个顺序执行的计算步骤序列描述顺序结构,这样的顺序结构称作复合语句。复合语句中的每个计算步骤可以是单个语句,也可是一个控制结构,特别情况也可以为空。
例子:
{
int temp, x, y;
temp = x;
x = y;
y = temp;
}
2.3 if语句两路条件选择结构和多路按值选择结构。if语句的一般形式:
if(条件表达式) {//两路 语句1;
}else {
语句2;
}
if(条件表达式) { //多路按值 语句1;
} else if (条件表达式) {
语句2;
} else {
语句3;
}
2.4 switch语句描述多路按值选择结构,比if多路按值的层级要清晰。switch语句的一般形式:
switch(表达式) {
case 常量表达式1 : 语句序列1; break;
case 常量表达式2 : 语句序列2; break;
case 常量表达式3 : 语句序列3; break;
default; 语句序列:
}正确编写switch语句的几个要求:
(1)switch后面括号内的表达式的类型只限于char、int、short、byte
(2)所有case后的常量表达式的值互相不同,类型与switch后括号内的表达式类型一致。
(3)语句序列由任意条合法的Java语句构成,也可以没有语句。
(4)default子句可以缺省,但至多出现一次,习惯总是将它写在所有case子句之后,如果有必要也可写在某个case子句之前。
(5)如果要使各种情况互相排斥,仅执行一个子句的语句序列,每个子句都需要以break语句结束。
2.5 try...catch语句常用的形式:
try {
可能会发生异常的语句块;
} catch(异常类型 e) {
发生异常时执行的语句;
} finally {
无论异常是否发生,都要执行的语句块;
}
2.6 while语句while循环结构由一个循环条件和一个作为循环体的语句组成。常用形式:
while (条件表达式) {
循环体;
}
2.7 do...while语句do...while循环由一个循环条件和一个循环体组成。常用形式:
do
循环体;
while(条件表达式);
2.8 for语句for循环由四部分组成:
(1)循环有关变量赋初始值的表达式1
(2)控制循环有关变量条件的表达式2
(3)实现循环计算的语句
(4)循环体
常用形式:
for (表达式1;表达式2;循环计算语句;) {
循环体;
}
2.9 嵌套的循环结构循环结构的循环体中又包含循环结构时,循环结构就呈嵌套的形式。
2.10 循环体中的continue语句和break语句
//例子1:/*** 有四只球队,分别叫A、B、C、D* 有三个人,分别叫甲、乙、丙* 这三个人竞猜四只球队排名,且每人只能给出两只球队的排名* 甲:A队第一名,B队第二名* 乙:C队第一名,D队第三名* 丙:D队第二名,A队第三名* 其中甲、乙、丙三人都猜对了一半* 问?这四支球队排名如何?*/
public class Champion {
public static void main(String[] args) {
int a, b, c, d;
boolean t;
for (a = 1; a <= 4; a++) {
for (b = 1; b <= 4; b++) {
if (b == a) continue;
for (c = 1; c <= 4; c++) {
if (c == a || c == b) continue;
d = 10 - a - b - c;
t = ((a == 1) != (b == 2)) && ((c == 1) != (d == 3)) && ((d == 2) != (a == 3));
if (t) {
System.out.println("A 获得了:第 " + a + "名");
System.out.println("B 获得了:第 " + b + "名");
System.out.println("C 获得了:第 " + c + "名");
System.out.println("D 获得了:第 " + d + "名");
}
}
}
}
}
}类 Champion 输出结果
//例子2/*** 求2~50内所有质数* Q&A:质数又称素数。一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数;否则称为合数。* i/2的作用就是只取出i一半的数,因为任何数都不可能是比它1/2大的数整除的(除了这个数本身)。*/
public class PrimeNumber {
public static void main(String[] args) {
int i, j;
for (j = 2; j <= 50; j++) {
for (i = 2; i <= j/2; i++) {
if (j % i == 0) break;
}
if (i > j/2) System.out.println(j + "是质数");
}
}
/*public static boolean isFirme( int num) {boolean flag = true;int temp = num / 2;for (int i = 2; i <= temp; i++) {if (num % i == 0)return false;}return flag;}*/
}类 PrimeNumber输出结果
2.11 package语句package语句必须出现在源程序文件的起始行,表示出现在该文件中的所有类都属于这个程序包。常用形式:
packge 包名;
2.12 import语句import语句用来引入所需要的类。常用形式:
import 包名.类名;
import 包名.*;
2.13 Java应用程序的基本结构常见形式:
packge 包名;
import 包名.类名;
访问权限修饰符 class 类名 {
成员变量;
成员方法;
public static void main (String args[]) {
//To - Do... }
}
3. Java程序实例3.1 画一个菱形
3.2 输入一个整数,输出小于等于这个整数的全部质数
3.3 若一个数恰好等于它的因子之和,则这个数称为“完全数”。求1000以内的所有完全数。
3.4 输入正实数x,输出平方不超过x的最大整数n
3.5 列出到目前位置所有的闰年
3.6 水仙花数是一个n(n>3)位数字的数,它等于每个数字的n次幂之和。列出999的所有水仙花数。
3.7 编程解决百级问题:"鸡翁一、值钱五;鸡母一、值钱三;鸡雏三、值钱一。百钱买百鸡。求鸡翁、鸡母和鸡雏各几何?"
3.8 回文整数是指正读和反读相同的整数,编写程序判断输入的一个整数是否是回文整数。
3.9 草地上有一堆野果,有一只猴子每天吃掉这堆野果的一半又一个,5天刚好吃完这堆野果。编程计算这堆野果一共有多少个?猴子每天吃多少个?
3.10 编写程序,按下面公式计算自然对数底e的值:
e = 1 + 1/1!+ 1/2! + 1/3! + 1/4!+...
3.11 编写程序,用如下公式计算圆周率π的近似值
π = 4 - 4/3 + 4/5 - 4/7 + 4/9 -4/11 + ...
3.12 试用Java语言表达式描述以下数学计算式或逻辑条件
(1)V = (4/3)π
(2)R = 1 /(1/
+1/
)
(3)y =
+
+6
(4)F =
/
(5) sin(x)/ax + |cos(πx/2)|