东莞寮步网站建设网络公司,怎么设计平台,微信接口文档,天津企业网站开发运算符与表达式
算数运算符与算数表达式
加减运算符
操作数#xff1a;2结合方向#xff1a;从左到右优先级#xff1a;4级
乘#xff08;*#xff09;、除#xff08;/)和取余#xff08;%#xff09;运算符
操作数#xff1a;2结合方向#xff1a;从左到右优先…运算符与表达式
算数运算符与算数表达式
加减运算符
操作数2结合方向从左到右优先级4级
乘*、除/)和取余%运算符
操作数2结合方向从左到右优先级3级
用算术运算符连接起来的符合Java语法规则的式子称为算数表达式
自增自减运算符
操作数2和C语言中的自增自减运算符一样自增自减运算符可以放在操作元素的前面或者后面作用也和C语言中的一样前置则先执行或–后使用操作元素的值后置则先使用操作元素的值后执行或–
算术混合运算的精度
精度从低到高的排序是byte short char int long float double
在Java中计算算术表达式的值时使用以下的精度运算规则
如果表达式中有双精度浮点数按双精度进行计算如果表达式的最高精度是单精度浮点数则按单精度进行运算如果表达式中的最高精度是long型则按long精度进行运算如果表达式中的最高精度低于int型则按int型精度进行运算
Java允许把不超出byte、short、char的取值范围的常量算术表达式的值赋给byte、short和char型变量 byte x (byte)30a;是正确的byte x (byte)30b;是错误的
当赋值号右边的表达式中有变量时编译只检查变量的类型不检查变量中的值。例如byte x 97 1和byte y 1都是正确的但是byte z 97 y是错误的这是因为表达式右侧按int进行运算不检查y中的值所以会提示类型不兼容
关系运算符与关系表达式
关系运算符是二目运算符用来比较两个值的关系。关系运算符的运算结果是boolean当运算符对应的关系成立时结果为true否则为false
运算符优先级结合方向6从左到右6从左到右6从左到右6从左到右7从左到右!7从左到右
逻辑运算符和逻辑表达式
逻辑运算符包括 || ! 、||为二目运算符实现逻辑与、逻辑或 !为单目运算符实现逻辑非
逻辑表达式的操作元必须是boolean型数据
运算符优先级结合方向11从左到右||12从左到右!2从右到左
结果为boolean型的变量或表达式可以通过逻辑运算符形成逻辑表达式和C语言不同Java不能用零或非零表示true或false所以不能用常量或整数型变量作为逻辑运算符的操作元例如以下两种写法都是错误的
public class test{public static void main(String argv[]){byte x (byte)30a;if(1)System.out.println(x);}
}public class test{public static void main(String argv[]){byte x (byte)30a;if(x)System.out.println(x);}
}逻辑运算符 ||也称为短路逻辑运算符因为当op1的值是false时运算符就不再去计算op2的值无论op2是true或false表达式op1op2的结果都是false当op1的值是true时||运算符就不再去计算op2的值无论op2是true或false表达式op1||op2的结果都是true。合理的利用短路运算可以提高程序运行效率
位运算符
整型数据在内存中以二进制的方式表示最高位为符号位位运算符就是对整型数据对每个二进制分别进行位操作
位运算符包括按位与、按位或|、按位非!、按位异或^
按位与就是将左右两个操作元的对应每一位进行与操作都为1则结果为1有一个是0则结果为0按位或就是将左右两个操作元的对应每一位进行或|操作有一个操作元的该位为1则结果为1均为零则结果为零按位非就是按位取反将操作数的每一位0变11变0按位异或就是对两个操作元每个二进制位进行异或操作相同为0相异为1
instanceof运算符
instanceof运算符是二目操作符左边的操作元是一个对象右边是一个类当左边的对象是右边类或子类创建的对象时运算结果为true否则为false
总结
优先级运算符结合方向1[] () . , ;2instanceof 、 、- - 、 从右到左3* / %从左到右4、-从左到右5 、、 从左到右6 、、 、 从左到右7 、从左到右8从左到右9^从左到右10|从左到右11从左到右12||从左到右13?:从右到左14从右到左
分支语句
语法上看Java的分支语句和C语言的分支语句几乎完全相同
if条件分支语句
if语句
if语句是单条件、单分支语句
if(表达式
{
语句
}if后的表达式的值必须为boolean型同样不能像C语言一样使用零或非零表示 如果表达式为true则执行花括号后的语句否则不执行
如果语句只有一条可以省略花括号建议写上保持良好的代码风格
if-else语句
if-else语句是单条件、双分支语句
if(表达式1)
{语句1
}
else
{语句2
}if-else语句同样需要表达式为boolean型如果值为true则执行语句1否则执行语句2
if-else if-else语句
if-else if-else语句是多条件、多分支语句
if(表达式1)
{语句1;
}
else if(表达式2)
{语句2;
}
else
{语句3;
}若表达式1为true则执行语句1 若表达式1为false判断表达式2 若表达式2为true执行语句2若表达式2为false执行语句3
如果有更多的if-else语句也是同理逐次向下判断表达式的值直到有一个值为true或所有的值均为false然后执行else
switch
switch语句是单条件、多分支的开关语句
switch(表达式){case 常量值1:若干语句break;case 常量值2:若干语句break;......case 常量值n:若干语句break;default:若干语句
}switch语句中表达式的值可以是byte short int char String类型但不可以是long型
switch语句首先计算表达式的值如果表达式的值与某个case后的常量值相同就执行该case后面的语句直到遇到break退出如果没有break语句那么会继续执行后面其他case后的语句。如果表达式的值与任何case都不相同则执行default后的语句default是可选的如果没有default并且表达式的值不与任何的常量值相同那么switch语句就不会进行任何处理
循环语句
语法上看Java的循环语句和C语言的循环语句基本相同但Java中没有goto语句
for循环
for ( i 0; i length; i)
{ //初始化 // 判断 //调整语句//循环体
} 1.for后面的括号中包括三个内容依次为对变量的初始化 循环条件判断 对某些变量的调整一般是控制循环退出的变量两两之间用分号间隔2.上述三项内容中初始化可省略不建议可在初始化处定义新变量但只能在循环内使用该变量3.for循环条件判断可由多个变量控制用与||或分割4.若省略循环条件判断会使判断恒成立进入死循环5.有两条及以上语句时需加大括号6.循环体可为空语句public class test{public static void main(String argv[]){for (int i 0; i 10; i) {System.out.println(i);}}
}while循环
while(表达式)
{循环体
}while语句的执行规则如下
计算表达式的值为true则进行2否则进行3执行循环体再进行1结束while语句
do-while循环
do
{//循环体
}
while (表达式);do-while循环和while循环的区别是do-while循环至少执行一次执行第一次后再计算表达式的值为true则继续执行否则结束循环。一般在循环体中要加入对表达式值的调整否则容易进入死循环
break和continue
break在循环中起到跳出循环的作用当程序执行到break语句时无论循环条件是否满足直接跳出循环
continue用于跳过本次循环中位于continue后面的语句进入下一次循环
1.continue不能直接跳出循环而是跳过本次循环剩余的语句
2.continue在for和while中有不同的效果1在for循环中continue跳过后for(表达式1;表达式2;调整) 调整部分仍然会执行不影响整体循环的退出2在while/do while循环中continue会跳过剩余全部代码若调整部分位于continue后则不会执行可能会影响循环的退出for循环和数组
JDK5对for语句的功能给予了扩充、增强以便更好的遍历数组。。语法如下
for(声明循环变量:数组的名字){...
}其中声明的循环变量的类型必须和数组的类型相同。
这种类型的for循环可以理解为“每次循环依次取数组中每一个元素的值” 声明的变量中取出的是数组元素的值而不是索引下标
看个例子
public class test{public static void main(String argv[]){int a[]{1, 2, 3, 4};char b[] {a, b, c, d};for (int n 0; n a.length; n) {//传统的for循环System.out.printf(%d , a[n]);}System.out.println();for (int n 0; n b.length; n) {//传统的for循环System.out.printf(%c , b[n]);}System.out.println();for (int i : a) { //循环变量i依次取出a数组中的每个元素System.out.printf(%d , i);}System.out.println();for (char ch : b) { //循环变量ch依次取出b数组中的每个元素System.out.printf(%c ,ch);}}
}需要注意的是for(声明循环变量:数组的名字)必须是变量声明不可以使用已经声明过的变量。例如第三个for循环不可以写成
int i 0;
for(i:a){System.out.println(i);
}