运算符与表达式
加减乘除、求余运算符
- +,- ,*,/,%是二目运算符,用于连接两个操作单元的运算符。
- 结合(即运算)方向从左到右。
- 操作元是整型和浮点型数据。
- 加减运算符优先级是4级。
- 乘除、求余运算符优先级
自增、自减运算符
- ++、- - 是单目运算符,可以放在操作元前面或后面,操作元必须是整型或浮点型变量。
- ++x(- - x)表示在使用x之前,先使x的值增(减)1。
- 如果x的原值是5 ,则对于“y=++x;”,y的值是6,“y=x++;”,y的值是5.
算术混合运算的精度
(1)如果表达式中有双精度浮点数(double 型数据),则按双精度进行运算。
(2)如果表达式中最高精度是单精度浮点数(float 型数据),则按单精度进行运算。
(3)如果表达式中最高精度是long 型整数,则按long 精度进行运算。
(4)如果表达式中最高精度低于int 型整数,则按int 精度进行运算。
Java允许把不超出byte、short 和char的取值范围的算术表达式的值赋给byte、short 和char型变量。
byte x =(byte)20+'a';是正确的 byte X= (byte)30+'b';却无法通过编译,编译错误是“可能损失精度,找到int需要byte", 其的结果是int刑常量,其值超出了bvte亦量的取值范围
关系运算符与关系表达式
- 关系运算符是二目运算符,用来比较两个值的关系。关系运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则是false。
- 算术运算符的级别高于关系运算符。
- 结果为数值型的变量或表达式可以通过关系运算符形成关系表达式。
逻辑运算符与逻辑表达式
- 逻辑运算符包括&&、||、!。 其中&&、|| 为二目运算符,!为单目运算符。操作元必须是boolean型数据。
- 结果为boolean型的变量或表达式可以通过逻辑运算符形成逻辑表达式。
- 关系运算符的级别高于&&、|| 的级别,2>8&&8>2 相当于(2>8) && (9>2)。
- 逻组运算行&&和也称作短路逻辑运算符。
赋值运算符与赋值表达式
- 赋值运算符=是二目运算符,左面的操作元必须是变量,不能是常量或表达式。赋值运算符的优先级较低,是14级,结合方向是从右到左。
位运算符
- 整型数据在内存中以二进制的形式表示, 例如个int 型变量在内存中占4个字节共32位。
- 负数采用补码的形式。
语句概述
Java里的语句可分为以下6类。
- 方法调用语句
System.out.println("Hello!");
- 表达式语句
x=23;
- 复合语句:{ }以及里面的内容。
{ z=123+x; System.out.println("How are you"); }
- 空语句
;
- 控制语句:条件分支语句、开关语句、循环语句。
- package语句和import语句
if语句
- if语句是单条件单分支语句。
- 在if语句中,若复合语句只有一条语句,{ }可以省略不写,为了增强程序的可读性最好写上。
switch开关语句
- switch语句是但条件多分支的开关语句。
- break、default是可选(可写可不写)的。
- switch语句中表达式的值可以是byte、short、int、char型,不可是long型。
do-while循环语句
do-while循环和while的区别是do-while的循环体至少被执行一次。
for语句增强
格式:
for(声明循环变量:数组的名字)循环遍历参数代表所代表的参数
{
...
}
public class Example3_8
{
public static void main(String args[])
{
int a[]={1,2,3,4};
char b[]={'a','b','c','d'};
for(int n=0;n<a.length;n++)//传统方式
{
System.out.println(a[n]);
}
for(int n=0;n<b.length;n++)//传统方式
{
System.out.println(b[n]);
}
for(int i:a) //循环变量i依次取数组a的每一个元素的值(改进方式)
{
System.out.println(i);
}
for(char ch:b) //循环变量ch依次取数组b的每一个元素的值(改进方式)
{
System.out.println(ch);
}
}
}
声明循环变量必须是变量声明,不可以使用已经声明过的变量
inti0;
for(i:a) 非法
{
System.out.println(i);
}
在从键盘输入数据时,对象调用hasNextXXX()方法等待用户输入数据,在调用nextXXX()方法获取用户输入的数据。例如:
import java.util.*;
public class Example3_9
{
public static void main (String args[ ])
{
Scanner reader=new Scanner(System.in);
double sum=0;
int m=0;
while(reader.hasNextDouble()) 只要输入的是非数字字符串,则返回值为false
{
double x=reader.nextDouble();
m=m+1;
sum=sum+x;
}
System.out.printf("%d个数的和为%f\n",m,sum);
System.out.printf("%d个数的平均值是%f\n",m,sum/m);
}
}
运行结果:
98
129.77
865.88
and
3个数的和为1093.650000
3个数的平均值是364.550000