java学习第03天(运算符、语句)
5.运算符
(1)算数运算符
//算数运算符:+ - * / %(取余) //++ --(自增,就是在原有数据基础上+1,再赋给原有数据) ///int x = 6370; //x = x/1000*1000; //int a = 4, b = 5; //int a = 3,b; //b = a++; //System.out.println("a="+a+",b="+b); //int i = 3; //i = i++; //System.out.println(i);
(2)赋值运算符
//赋值运算符: = += -+ *= /+ //int a,b,c; //a = b = c = 3; short a = 4; //a+=2;//编译成功,自动进行了类型的提升。赋值过程中做了强制转换动作。是赋值运算具有的特点。 a = a+2;//编译失败,+的值不确定,可能会丢失精度。 System.out.println(a);
(3)比较运算符
class OperateDemo { public static void main(String[] args) { /* 输出true,比较运算符,运算出肯定室友结果,比较运算符运算出的结果要么是true,要么是false */ System.out.println(3>2); }
}
比较运算符
| 运算符 | 运算 | 范例 | 结果 | 
| == | 相等于 | 4==3 | false | 
| != | 不等于 | 4!=3 | true | 
| < | 小于 | 4<3 | false | 
| > | 大于 | 4>3 | true | 
| <= | 小于等于 | 4<=3 | false | 
| >= | 大于等于 | 4>=3 | false | 
| instanceof | 检查是否是类的对象 | “Hello” instanceof String | true | 
注1:比较运算符的结果都是boolean型,也就是要么true,要么false。
注2:比较运算符“==”,不能误写成“=”
(4)逻辑运算符
逻辑运算符有什么作用?
用于连接两个boolean类型的表达式
| 运算符 | 运算 | 范例 | 结果 | 
| & | and(与) | false&true | false | 
| | | 
 | false|true | true | 
| ^ | xor(异或) | false^true | true | 
| ! | not(非) | !true | false | 
| && | and(短路) | false&&true | false | 
| || | 
 | false||true | true | 
class OperateDemo { public static void main(String[] args) { /* 输出true,比较运算符,运算出肯定室友结果,比较运算符运算出的结果要么是true,要么是false 逻辑运算符有什么作用? 用于连接两个boolean类型的表达式 | 运算特点: |运算两边只要有一个是true,结果肯定是true。 只要两边都是false,结果是false。 true^true = true; true^false = true; false^true = true; false^false = false; ^ 异或:和或有点不一样。 ^运算特点: ^符号两边如果相同,结果是false。 两边的结果不同,结果是true。 true^true = false; true^false = true; false^true = true; false^false = false; && 下面对比&与&&的相同点和不同点 &&:和&运算的结果是一样的,但是运算过程有点小区别 &:无论左边的运算结果是什么,右边都参与运算。 &&:当左边为假时,右边是不参与运算的。 int x = 3; &&与与 x>2 & x<5 true x>2 && x<5 true int x = 6; &&与与 x>2 & x<5 false x>2 && x<5 false int x = 1; &&与与 x>2 & x<5 false x>2 && x<5 false//只有左边为假,右边就直接不运算了,相当于物理中的电流不通,断路了,当然返回结果还是false。 ||: 和|运算的结果是一样的,但是运算过程有点小区别。 |:无论左边的运算结果是什么,右边都参与运算。 ||:当左边为假时,右边是不参与运算的。 */ System.out.println(3==2); } }
(5)位运算符
| 位运算符 | ||
| 运算符 | 运算 | 范例 | 
| << | 左移 | 3<<2=12-->3*2*2=12 | 
| >> | 右移 | 3>>1=1-->3/2=1 | 
| >>> | 无符号右移 | 3>>>1=1-->3/2=1 | 
| & | 与运算 | 6&3=2 | 
| | | 或运算 | 6|3=7 | 
| ^ | 异或运算 | 6^3=5(一个数异或同一个数2次,结果还是这个数) | 
| ~ | 反码 | ~6=-7 | 
| 位运算符细节 | |
| << | 空位补0,被移除的高二进制位丢弃,空位补0. | 
| >> | 被移位的二进制最高位是0,右移后,空位补0;最高位是1,空位补1. | 
| >>> | 被移位的最高位无论是0或者是1,空位都补0. | 
| & | 二进制位进行&运算,只有1&1时结果是1,否则是0. | 
| | | 二进制进行|运算,只有0|0时结果是0,否则是1. | 
| ^ | 相同二进制进行^运算,结果是0;1^1=0,0^0=0; 不同二进制进行^运算结果是1. | 
| ~ | 
 | 
(6)三元运算符
格式:条件表达式?表达式1:表达式2
如果条件为true,运算后的结果是表达式1
如果条件为false,运算后的结果是表达式2
示例:
获取两个数中的数值大的数
int x = 3,y=4; z=(x>y)?x:y;//z变量存储的就是两个数的大数。
6.语句
(1)判断结构
if语句三种格式
a.if(条件表达式){
执行语句
}
b. if(条件表达式){
执行语句
}else{
执行语句
}
c. if(条件表达式){
执行语句
} else if(条件表达式){
执行语句
} else{
执行语句
}
If:
a. 对具体的值进行判断
b. 对区间进行判断
c. 对运算结果是boolean类型的表达式进行判断
(2)选择结构
switch(需要判断的值)
{
case "值1":
执行语句1;
break;
case "值2":
执行语句2;
break;
case "值3":
执行语句3;
break;
default:
默认执行语句;
break;
}
Switch:
a. 对具体的值进行判断
b. 值的个数通常是固定的
对于几个固定值的判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高一点。
(3)循环结构
while(条件表达式)
{
执行语句;
}
int x = 1; while(x<3) { System.out.println("x="+x); x++; }
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号