JavaSE学习:按位运算—数据结构(顺序分支循环)
Posted kanekiyi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE学习:按位运算—数据结构(顺序分支循环)相关的知识,希望对你有一定的参考价值。
第一节 按位运算
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 class Demo2{ 2 public static void main(String[] args){ 3 int i=5; 4 int j=6; 5 System.out.println(++i>j-- & i++<j++ );//false i=7 j=6 并没有发生短路功能 6 System.out.println(++i>j-- | --i<j++ );//truei=7 j=6 也没有发生短路功能 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 class Demo3{ 2 public static void main(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 class Text1{ 2 public static void main(String[] args) { 3 //求两个、三个数的最大值 4 method1 (); 5 6 } 7 8 public static void method1 () { 9 int i =3; 10 int j = 4; 11 int k = 6; 12 int max ; 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 import java.util.Scanner; 2 3 public class Demo5{ 4 //Scanner类的应用 5 public static void main(String [] args){ 6 //创建sc对象 7 Scanner sc = new Scanner(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 import java.util.Scanner; 2 3 public class Text2{ 4 //Scanner类的应用 5 public static void main(String [] args){ 6 //创建sc对象 7 Scanner sc = new Scanner(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 import java.util.Scanner; 2 public class Demo6{ 3 /** 4 给定分数判断等级 5 6 */ 7 public static void main(String[] args) { 8 Scanner sc = new Scanner(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 import java.util.Scanner; 2 3 public class Text3{ 4 //Scanner类的应用 5 public static void main(String [] args){ 6 //创建sc对象 7 Scanner sc = new Scanner(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 class Demo9{ 2 public static void main(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 class Demo10{ 2 public static void main(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 import java.util.Scanner; 2 3 public class Text5{ 4 public static void main(String[] args){ 5 Scanner sc = new Scanner(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 }
以上是关于JavaSE学习:按位运算—数据结构(顺序分支循环)的主要内容,如果未能解决你的问题,请参考以下文章