java语言基础(3)
主要内容:《运算符、键盘录入、顺序结构、选择结构if、三元运算符、选择结构switch、》
1 位运算符的基本用法1
位运算符:是对整数的二进制直接进行操作的
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
2 位异或运算符的特点及面试题
^的特点
实现两个整数变量的交换
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);
}
3 三元运算符的基本用法
三目运算符:
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 }
4 键盘录入的基本格式讲解
接收控制台数据:
三步:
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);
}
}
5 顺序结构语句
程序从第一行代码开始,顺序的执行到最后一行结束:
6 选择结构if语句格式1及其使用
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类型;
7 选择结构if语句注意事项
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){//正确
//......
}
8 选择结构if语句格式2及与三元运算符的区别
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语句比较方便;
9 选择结构switch语句的格式及其解释
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;
}
}
}/*
10 switch语句的break和default:
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 }
11 选择结构switch语句的注意事项
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
12 选择结构if语句和switch语句的区别
在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
switch语句使用场景:
针对几个常量值的判断
未完待续。。。。。。