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 }

原文地址:https://www.cnblogs.com/Kanekiyi/p/9500941.html

时间: 2024-10-08 09:42:59

JavaSE学习(三):按位运算—数据结构(顺序、分支、循环)的相关文章

NYOJ528 找球号(三)位运算

这个题用位运算就非常简单了,前提是首先熟悉位运算,这里用到一个异或运算,也就是 ^ 这个符号,他的运算规则是:相同为0,不同为1.知道了这个之后,就容易想到相同的两个数异或之后为0,所以下面很关键的一步,也是我想了好久也没想起来的一步,就是把所有的数都异或一遍,那么最后剩下的一定是那个一个的,还有一点需要注意就是任何数和0进行异或运算都还是他本身.下面是代码: 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace

JavaSE学习(四):数据结构之循环:for、while循环

第一节 循环结构 for.while.do while 1.1 for 循环 语法结构: for(表达式一:表达式二:表达式三) { 循环体 } 语法解析: 表达式一:声明初始化变量,只执行一次.可以同时声明多个变量用逗号隔开. 表达式二:判断变量是否需要循环的条件. 表达式三:每次执行完循环体后,变量变化的具体情况. 当for循环开始执行后,表达式一开始声明初始化变量,初始化变量后,执行表达式二判断变量是否满足布尔表达式,若不满足条件,执行结束,若满足条件,则执行循环体内的内容,执行完后再执行

Java小知识点学习--------数组和位运算小知识点

位运算符: >>>无符号右移运算符,无符号右移的规则和右移的规则相同,只是在填充时,不管原来是正数还是负数都用0来补充. 数组: arr1=arr2;  此时两个数组变量都会同时指向相同的数组,即arr2所指向的数组,如果arr2所指向的数组发生变化,则arr1和arr2都变化. 使用Arrays.sort进行排序(使用的是快排) 幻方矩阵:(直接给实例) public class magic { /** * 使用多维数组打印一个n阶幻方矩阵 * 矩阵的每行每列和对角线上的数据元素之和相

Numpy学习三:数组运算

1.转置 #reshape(shape)函数改变数组形状,shape是一个元组,表示数组的形状 创建一个包含15个元素的一维数组,通过reshape函数调整数组形状为3行5列的二维数组arr = np.arange(15).reshape((3,5))print(arr) 结果:[[ 0  1  2  3  4]            [ 5  6  7  8  9]            [10 11 12 13 14]] #转置,数组转置可以使用transpose方法或者T属性,转置返回的是

3.2代码结构(顺序+分支+循环)+函数

代码结构 通常将代码的执行结构分成三种:顺序结构,分支结构,循环结构 顺序结构 代码从上往下一次执行. 分支结构 给定条件,不同的条件下产生的结果应该不一样. 分支结构:通过条件的判断,选择性的执行相应的代码. 分支结构有两种:if分支,switch分支 if分支 最简语法 if(条件表达式){ //条件表达式返回的结果是true //要执行的代码块 } 标准分支语法 if(条件表达式){ //true所要执行的代码块 }else{ //false所要执行的代码块 } 复杂(复合)语法 if(条

(九)二进制、位运算、位移运算符

JavaSE(九) --二进制.位运算.位移运算符 一.二进制简介 现代电子计算机全部采用的是二进制,因为它只使用0,1两个数字符号,简单方便.数字电路中,1代表高电平,2代表低电平.这样,数据的传输通过控制电平的高低就可以了.计算机内部处理信息,都是采用二进制数来表示的.二进制(Binary)数用0和1的两个数字及其组合来表示任何数,进位规则是"逢二进一",按从右至左的顺序,右低位,左高位. 二.二进制基础 1.所有的二进制数最高位代表符号位,0表示正数,1表示负数. 2.一个字节等

[位运算] [搜索] [递推优化] [计算几何] TEST 2016.7.15

NOIP2014 提高组模拟试题 第一试试题 题目概况: 中文题目名称 合理种植 排队 科技节 源程序文件名 plant.pas/.c/.cpp lineup.pas/.c/.cpp scifest.pas/.c/.cpp 输入文件名 plant.in lineup.in scifest.in 输出文件名 plant.out lineup.out scifest.out 每个测试点时限 1s 1s 1s 测试点数目 10 10 10 每个测试点分值 10 10 10 内存上限 128MB 128

poj 2799 IP Networks 模拟 位运算

poj链接:http://poj.org/problem?id=2799 这题实在是非常的有趣... 写的时候也非常的开心... 然后就写跪了... 刚好讲了ip地址和子网掩码的只是 整个学期的通信导论我就只有这节课有事没去结果昨晚把这方面的只是补起来了有种功德圆满的感觉 network address是前(32-n)随意 后n位全零 network mask是前(32-n)全一 后n位全零 其次是练习了各种移位操作 我发现移位操作是个非常好用的东西 因为它自填充0 所以对一个二进制数往右移8位

C语言学习笔记:16_位运算

/* * 16_位运算.c * * Created on: 2015年7月6日 * Author: zhong */ #include <stdio.h> #include <stdlib.h> /* 位运算: * 所谓的位运算是指以二进制位为对象的运算. * c语言中位运算符有: * & 按位与 * | 按位或 * ^ 按位异或 * ~ 按位取反 * << 左移 * >> 右移 * * 除了 ~ 按位取反运算符以外,均为二目运算符. 两边的运算对象