标签:
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
主要内容:《运算符、键盘录入、顺序结构、选择结构if、三元运算符、选择结构switch、》
位运算符:是对整数的二进制直接进行操作的
1.<< : 左移:左侧高位丢弃,右侧补0.左移一位,相当于原数 * 2 ;
实际移动的位数 = 要移动的位数 % 32;
2.>> : 带符号右移:右移一位,右侧的最低位丢弃,左侧高位补原符号位;每右移一位,相当于原数 / 2;
3.>>>: 无符号右移:右移一位,右侧的最低位丢弃,左侧补0.
4.& : 两位都为1,结果为1,否则为0;
0000 1010
& 0000 1100
---------------
0000 1000
5.| : 有一位为1,结果为1,否则为0;
0000 1010
| 0000 1100
---------------
0000 1110
6.^ : 两位相同结果0,不同结果为1:
0000 1010
^ 0000 1100
--------------------
0000 0110
7.~ : 按位取反:0变1,1变0
0000 1010
~
--------------------
1111 0101-->补码
- 1
----------------
1111 0100
取反
----------------
1000 1011
^的特点
实现两个整数变量的交换
10 二进制 0000 1010
20 二进制 0001 0100
^
--------------------------
0001 1110
10 二进制 0000 1010
^
--------------------------
0001 0100
1 class Demo2 2 { 3 public static void main(String[] args) 4 { 5 int a = 10; 6 int b = 20; 7 int temp = a; 8 a = b; 9 b = temp; 10 System.out.println("a = " + a + " b = " + b); 11 int x = 10; 12 int y = 20; 13 x = x ^ y; 14 y = x ^ y; 15 x = x ^ y; 16 System.out.println("x = " + x + " y = " + y); 17 } 18 }
/* 请用最有效率的方式写出计算2乘以8的结果 */ class Demo { public static void main(String[] args) { System.out.println(8 << 1); }
三目运算符:
1.格式:
关系表达式 ? 表达式1 :表达式2;
2.先判断关系表达式:如果为true:执行表达式1
否则:执行表达式2
注意:
1.三目运算符的整个结果,应该返回一个值;
int a = 10;
int b = 20;
a > b ? System.out.println(a) : System.out.println(b);//错误的
1 class Demo { 2 public static void main(String[] args) { 3 int a = 100; 4 int b = 200; 5 int c = ( a > b ? a : b); 6 // a > b ? System.out.println(a) : System.out.println(b);//错误 7 System.out.println("c = " + c); 8 //判断三个整数的最大值--嵌套的三目运算符 9 int x = 100; 10 int y = 200; 11 int z = 30; 12 int max = x > y ? (x > z ? x : z) : (y > z ? y : z) ; 13 System.out.println("max = " + max); 14 } 15 }
接收控制台数据:
三步:
1.定义类的前面添加:
import java.util.Scanner;
2.在main()方法中:
Scanner sc = new Scanner(System.in);
3.接收控制台输入:
1).int值: int n = sc.nextInt();
2).String值:String s = sc.next();
import java.util.Scanner; class Demo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //引导用户 System.out.println("请输入您的姓名:"); String name = sc.next();//程序在此处阻塞,等待用户输入; System.out.println("请输入您的年龄:"); int age = sc.nextInt(); System.out.println("您好,您叫:" + name + " 您的年龄是:" + age); } }
程序从第一行代码开始,顺序的执行到最后一行结束:
if语句的结构1:
语法:
if(逻辑表达式/关系表达式){
//如果逻辑表达式为true,将执行这里的代码
}
需求:
女孩子要找男朋友,要求年龄在25--28岁之间;
如果达到要求,女孩子说:可以,找个时间见见面;
1 class Demo 2 3 { 4 5 public static void main(String[] args) 6 7 { 8 9 int age = 22; 10 11 // System.out.println(age >= 25 && age <= 28); 12 13 if(age >= 25 && age <= 28){ 14 15 System.out.println("可以,找个时间见见面"); 16 17 } 18 19 System.out.println("程序结束!"); 20 21 } 22 23 } 24 25
if语句的结构2:
语法:
if(逻辑表达式){
//如果为true,执行这里
}else{
//如果为false,执行这里
}
需求:
女孩子找男朋友,要求年龄在25--28岁,
如果可以,明天下午4点在星巴克见;
否则,留个微信,你是好人,改天联系!
1 class Demo 2 { 3 public static void main(String[] args) 4 { 5 int age = 36; 6 if(age >= 25 && age <= 28){ 7 System.out.println("行啊,明天下午4点在星巴克见;"); 8 }else{ 9 System.out.println("你是好人,留个微信,改天联系!"); 10 } 11 12 System.out.println("相亲结束!"); 13 } 14 }
if语句的格式3:
有些时候我们要进行多个判断,才能产生一个结果:
例如:判断年龄是否符合要求:
是:判断身高是否符合要求:
是:判断薪水是否符合要求:
女孩子要求男孩子:年龄在25-28之间,身高在1.75-1.85之间,月薪要在20000(税后)以上。
class Demo { public static void main(String[] args) { int age = 26; double height = 1.78; int salary = 23000; if(age >= 25 && age <= 28){ if(height >= 1.75 && height <= 1.85){ if(salary >= 20000){ System.out.println("好吧,明天下午4点保利影院见!"); }else{ System.out.println("对不起,您的收入不够补贴家用!"); } }else{ System.out.println("对不起,您的身高不符合!"); } }else{ //也可以再嵌套if System.out.println("对不起,您的年龄不符合!"); } } }
关系表达式无论简单还是复杂,结果必须是boolean类型;
if(true){//OK的
}
if(0){//不可以
}
if(1){//不可以
}
2.f语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
int age = 20;
if(age > 18)
System.out.println("OK,可以见面");
System.out.println("下午4点");
3.一般来说:有左大括号就没有分号,有分号就没有左大括号
int age = 20;
if(age > 18);{//错误的
System.out.println("OK,可以见面");
}
if(age > 18){//正确
//......
}
if语句的格式2:
if(逻辑表达式){
}else{
}
三目运算符:
逻辑表达式 ? 表达式1 : 表达式2;
相同点:都是一个判断,两个选择;
对于一些应用,两种格式可以达到一样的效果:例如:求两个数的最大值:
int a = 10;
int b = 20;
使用if语句
int max = 0;
if(a > b){
max = a;
}else{
max = b;
}
//使用三目运算符:
int max = a > b ? a : b;
System.out.println("max = " + max);
对于一些类似于求两个数的最大值,或三个数的最大值,使用三目运算符的语法要简洁;
但是,三目运算符可以做的事情少,它只能返回一个值。所以想做更多的事情,使用if语句比较方便;
1.选择结构;
2.基于判断,要进行选择:
3.语法:
switch(表达式){ case 值1: //代码; break; cast 值2: //代码; break; case 值3: //代码; break; .... default: //代码; break; }
例子:
有一个int变量,存储1-7的一个星期值。根据这个值,打印中文的星期表示;
如果int变量等于1,打印:星期一
int变量等于2,打印:星期二
class Demo { public static void main(String[] args) { //使用if语句 /* int n = 70; String str = ""; if(n == 1){ str = "星期一"; }else if(n == 2){ str = "星期二"; }else if(n == 3){ str = "星期三"; }else if(n == 4){ str = "星期四"; }else if(n == 5){ str = "星期五"; }else if(n == 6){ str = "星期六"; }else if(n == 7){ str = "星期日"; }else{ str = "非法的星期值!"; } System.out.println(str); */ //使用switch语句 int n = 30; String str = ""; switch(n){ case 1: str = "星期一"; break; case 2: str = "星期二"; break; case 3: str = "星期三"; break; case 4: str = "星期四"; break; case 5: str = "星期五"; break; case 6: str = "星期六"; break; case 7: str = "星期日"; break; default: str = "非法的星期值!"; break; } System.out.println(str); //表达式:char char c = ‘*‘; switch(c){ case ‘+‘: System.out.println("你选择了加法"); break; case ‘-‘: System.out.println("你选择了减法"); break; case ‘*‘: System.out.println("你选择了乘法"); break; case ‘/‘: System.out.println("你选择了除法"); break; default: System.out.println("非法的运算符"); break; } //表达式:String str = "java"; switch(str){ case "java"://区分大小写的 System.out.println("你选择了java"); break; case "C++": System.out.println("你选择了C++"); break; case "C#": System.out.println("你选择了C#"); break; case "IOS": System.out.println("你选择了IOS"); break; default: System.out.println("你选择的课程不正确!"); break; } } }/*
1.break:表示结束switch语句。
它不是必须的,可以不写。
如果不写break,将会无条件的继续执行后续的case中的代码;直到遇到break或switch语句的末尾。
2.default:表示如果没有匹配任何的case值,将会执行default。
它类似于多重if..else if...语句的最后的else。不是必须的,可以不写;
default语句跟其他的case语句没有顺序关系。default语句可以在switch中的任何位置;
1 class Demo 2 { 3 public static void main(String[] args) 4 { 5 int n = 5; 6 switch(n){ 7 case 1: 8 System.out.println("星期一"); 9 case 2: 10 System.out.println("星期二"); 11 case 3: 12 System.out.println("星期三"); 13 case 4: 14 System.out.println("星期四"); 15 case 5: 16 System.out.println("星期五"); 17 case 6: 18 System.out.println("星期六"); 19 20 case 7: 21 System.out.println("星期日"); 22 default: 23 System.out.println("非法的星期值"); 24 } 25 System.out.println("**************打印月份***********"); 26 int month = 50; 27 //用switch实现: 28 switch(month){ 29 default: 30 System.out.println("非法的月份值!"); 31 case 1: 32 case 2: 33 case 12: 34 System.out.println("冬季"); 35 break; 36 case 3: 37 case 4: 38 case 5: 39 System.out.println("春季"); 40 break; 41 case 6: 42 case 7: 43 case 8: 44 System.out.println("夏季"); 45 break; 46 case 9: 47 case 10: 48 case 11: 49 System.out.println("秋季"); 50 break; 51 52 53 } 54 } 55 }
1.case后的值只能是"常量",不能是变量;
2.case后的值不能重复;
3.default可以省略吗?可以。不建议,根据实际情况。
4.break可以省略吗?可以。根据实际情况。
5.default的位置一定要在最后吗?不是的
default和其他的case之间没有顺序关系;
另外:多个case之间也没有顺序关系;
6.switch语句的结束条件
1.某处遇到break时,结束;
2.当执行到switch语句的最后,将自动结束;
1 class Demo 2 { 3 public static void main(String[] args) 4 { 5 int month = 1; 6 int v1 = 2; 7 switch(month){ 8 case 1: 9 System.out.println("aaa"); 10 if(v1 == 3){ 11 System.out.println("bbb"); 12 } 13 break; 14 case 2: 15 System.out.println("aaa222"); 16 break; 17 } 18 } 19 } 20
在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断
未完待续。。。。。。
标签:
原文地址:http://www.cnblogs.com/linmusen/p/4709224.html