第一节 按位运算

1.1按位运算符&  |

1.1.1按位运算符可作算术运算

做算术运算先将十进制转为二进制数,再按位计算,按位与全部为1,才为1,只要有0则为0;按位或只要有1则为1,全部为0才为0。最后按位输出再转为十进制。

7&3 = 3  -----  0111 & 0011 == 0011  3
7|3 = 7  -----  0111 & 0011 == 0011  7

1.1.2按位运算符可作逻辑运算

按位与&和按位或| 做逻辑功能时,与逻辑与&& 逻辑||逻辑功能一样,不一样的是没有短路功能。

面试题:& 与&&区别。

1:运算功能。

2:短路功能。

例程:Demo2.java

1 public classDemo2{2 public static voidmain(String[] args){3 int i=5;4 int j=6;5 System.out.println(++i>j-- & i++
6 System.out.println(++i>j-- | --i
7 System.out.println("i="+i+",j="+j);8 }9 }


1.2其他位运算符

<<  左位移   >>右位移   ^按位异或

主要用于对数值的快速缩放。

第二节 数据结构

顺序结构、分支结构、循环结构

2.1顺序结构

按顺序一步一步执行,常见程序比如main方法。

2.2分支结构

2.1.1单分支结构:if else

语法:

if (布尔表达式) {
内容1;
} else {
内容2;
}

执行步骤:布尔表达式为true执行内容1,为false执行内容2

例子:Demo3.java

1 public classDemo3{2 public static voidmain(String[] args) {3 int i = 4;4 if ( i < 5) {5 System.out.println("我是if内容");6 } else{7 System.out.println("我是else内容");8 }9 System.out.println("我是顺序结构");10 }11 }


练习:判断两个、三个数的最大值。

text1.java
1 public classText1{2 public static voidmain(String[] args) {3 //求两个、三个数的最大值
4 method1 ();5
6 }7
8 public static voidmethod1 () {9 int i =3;10 int j = 4;11 int k = 6;12 intmax ;13 if (i >j) {14 max =i;15 } else{16 max =j;17 }18
19 System.out.println(max);20 System.out.println(k>max ?k:max);21 }22
23 }


注:有时候省略了else {},只判断单个if内容;单个if时可以省略其后的{},但是不建议省略,因为{}表示作用范围,后期改变内容可能会引起错误。

2.1.2扫描器函数:Scanner类

语法:Scanner sc = new Scanner(System.in);  //创建一个扫描器

常用的方法:

next(): 获取再后台输入的字符串

nextInt():获取在控制台输入的int类型数据;

nextDouble():获取在控制台输入的double类型数据;

例程:Demo5.java

1 importjava.util.Scanner;2
3 public classDemo5{4 //Scanner类的应用
5 public static voidmain(String [] args){6 //创建sc对象
7 Scanner sc = newScanner(System.in);8 System.out.println("请输入字符串:");9 //条用next()函数
10 String str =sc.next();11 System.out.println(str);12 //获取int类型数据
13 System.out.println("请输入int数据:");14 int i =sc.nextInt();15 System.out.println(i);16 }17
18 }


练习:判断从键盘输入的年份是闰年还是平年。

Text2.java

1 importjava.util.Scanner;2
3 public classText2{4 //Scanner类的应用
5 public static voidmain(String [] args){6 //创建sc对象
7 Scanner sc = newScanner(System.in);8 //获取int类型数据
9 System.out.println("请输入要判断的年份:");10 int i =sc.nextInt();11 if (i%4==0 && i%100!=0 || i%400==0) {12 System.out.println(i+"年是闰年!");13 } else{14 System.out.println(i+"年是平年!");15 }16
17 }18
19 }


2.2.1多分支结构:if else if else

语法:

if (布尔表达式) {
语句1;
}  else i f(布尔表达式) {
语句2;
}  else {
语句3;
}

执行步骤:满足哪一个条件执行对应内容都不满足执行else里的内容

注:若同时满足多个条件时,只执行第一次满足条件的语句块,后面的不会执行。

例程:Demo6.java

1 importjava.util.Scanner;2 public classDemo6{3 /**
4 给定分数判断等级5
6 */
7 public static voidmain(String[] args) {8 Scanner sc = newScanner(System.in);9 System.out.println("请输入成绩");10 int score =sc.nextInt();11
12 if (score>=90 && score<=100) {13 System.out.println("成绩为"+'A');14
15 }16 if (score>=80 && score<90) {17 System.out.println("成绩为"+'B');18
19 }20
21 if (score>=70 && score<80) {22 System.out.println("成绩为"+'C');23
24 }25
26 if (score>=60 && score<70) {27 System.out.println("成绩为"+'D');28
29 }30 if (score>=0 && score<60) {31 System.out.println("成绩不合格");32
33 } else{34 System.out.println("输入错误!");35
36 }37
38 }39
40 }


练习:输入月份判断季节;

Text3.java

1 importjava.util.Scanner;2
3 public classText3{4 //Scanner类的应用
5 public static voidmain(String [] args){6 //创建sc对象
7 Scanner sc = newScanner(System.in);8 //获取int类型数据
9 System.out.println("请输入要判断的月份:");10 int month =sc.nextInt();11 if (month==4 || month==3 || month ==5) {12 System.out.println(month+"月是春季");13
14 } else if (month==6 || month==7 || month ==8) {15 System.out.println(month+"月是夏季");16
17 } else if (month==9 || month==10 || month ==11) {18 System.out.println(month+"月是秋季");19
20 } else if (month==12 || month==1 || month ==2) {21 System.out.println(month+"月是冬季");22
23 } else{24 System.out.println("输入月份错误!");25
26 }27
28 }29
30 }


2.2.2多分支结构:switch case

语法:

switch (KEY ) {
case key1:
语句1;
break;
case key2:
语句1;
break;
.......
default
语句n;
}

语法解析:匹配KEY 与key值,直到值相等时执行对应的语句,若都不匹配则执行default里的内容。

注: KEY值的数据类型可以是 int、short、byte、char ,不支持long类型。

JDK5增加了枚举 ,JDK7增加了字符串String类型

例程:demo9.java

1 public classDemo9{2 public static voidmain(String[] args){3 //switch case key支持String类型 JDK7之后支持
4 String key="java";5 switch(key){6 case "c":7 System.out.println("学习c语言");8 break;9 case "java":10 System.out.println("学习java语言");11 break;12 default:13 System.out.println("学习Python语言");14 }15 }16 }


注意事项:

1、break作用:作为结束符,防止渗透(从满足KEY值到的内容开始直到执行结束)

例程:Demo10.java

1 public classDemo10{2 public static voidmain(String[] args){3 //switch case 中break用法
4 int key=1;5 int count=0;6 switch(key){7 case 1:8 count++;9 //break;
10 case 2:11 count++;12 break;//终止渗透
13 case 3:14 count++;15 default:16 System.out.println("count");17 }18 System.out.println("count="+count);//2
19 }20 }


练习:1、从键盘输入1~7匹配周几;

2、从键盘输入月份匹配季节,用switch

2、default可以省略但是不建议省略,default相当于提示作用;default可以在任意的位置(按顺序执行)。

例程:Txte5.java

1 importjava.util.Scanner;2
3 public classText5{4 public static voidmain(String[] args){5 Scanner sc = newScanner(System.in);6 System.out.println("请输入月份");7
8 int month =sc.nextInt();9 switch(month){10 case 3:11 case 4:12 case 5:13 System.out.println(month+"月是春季!");14 break;15 case 6:16 case 7:17 case 8:18 System.out.println(month+"月是夏季!");19 break;20 case 9:21 case 10:22 case 11:23 System.out.println(month+"月是秋季!");24 break;25 case 12:26 case 1:27 case 2:28 System.out.println(month+"月是冬季!");29 break;30 default:31 System.out.println(month+"月地球没有!");32 }33 }34
35 }