3. JavaSE-位运算及判断循环程序结构的讲解

逻辑运算符用于连接两个boolean类型的值:

& 与     | 或     ^ 异或       || 短路或      &&短路与  !非(一元运算符)

位运算的运算符:

>>右移       >>>无符号右移     <<左移(相当于乘以2的n次幂)

&按位与     |按位或       ^按位异或     ~按位取反

说明:一个数异或同一个数两次  则结果还是这个数

当涉及到2的n次幂的运算的时候,全都用移位来运算,移位比正常算乘法效率高

交换两个数的值:

方法一  a=a+b   b=a-b   a=a-b

方法二  a=a^b   b=a^b   a=a^b

不推荐用第一种方法,因为第一种方法如果数比较大的话,很可能超出整型的运算范围

三元运算符:

格式 ---(条件表达式)?表达式1:表达式2;

如果条件为真,则结果为表达式1,否则结果为表达式2的值

例如:z=a>b?b:a;

说明:当使用三元运算符时,必须有一个明确的返回结果,否则还是使用通吃的if  else 结果比较好

程序流程控制:

顺序结构    判断结构   分支结构   循环结构

局部代码块:

可以再代码中在局部代码块中重定义变量以屏蔽全局变量(要先理解作用域的概念)

switch语句,break可以跳出switch:

格式如下:

switch(表达式){

case 取值:

执行语句

break

case 取值:

执行语句

break

default:

执行语句

}

if和switch的应用场合:

1. if语句适合的场景如下:

1).对具体的值进行判断

2).对区间进行判断

3).对运算结果是boolean类型的表达式进行判断

2. switch语句的应用场景如下:

1).对具体的值进行判断

2).值的个数通常是固定的

对于几个固定的结果,建议使用switch语句,因为switch语句会将所有结果一次性

加入内存,执行效率比较高.

注意:实际上,switch语句很少使用,并且功能都能被if语句代替

循环程序while、do while and for循环:

1. while循环

1). 直到条件为假的时候,或者遇到break语句结束循环

2. do while

1). 直到条件为假的时候,或者遇到break语句结束循环

注意:do while循环结尾有分号

3. for循环

1). (初始化参数;条件表达式;操作表达式){}

2). for(Sop("Please input an number: ",int x=1;x<10;Sop(x),x++))

说明:初始化参数只执行一次

for和while的特点:

1. for和while完全可以互换

2. 格式上的不同,在使用上有点小区别,如果需要通过变量来对循环进行控制,该变量只作

为循环增量存在时,那么区别就出现了,用for可以实现,while就不可以

3. for(;;){}此即为死循环

时间: 2025-01-12 15:10:09

3. JavaSE-位运算及判断循环程序结构的讲解的相关文章

用位运算实现十进制转换为二进制

代码如下: 1 #include <iostream> //将十进制数转化为二进制数,位运算的取位操作 2 using namespace std; 3 int main() 4 { 5 unsigned short i; 6 cout << "请输入一个小于65536的正整数" << endl; 7 cin >> i; 8 for(int j=15;j>=0;j--) 9 { 10 if ( i & ( 1 <<

位运算实例

一 .位运算实例 1.用一个表达式,判断一个数X是否是2的N次方(2,4,8,16.....),不可用循环语句. X:2,4,8,16转化成二进制是10,100,1000,10000.如果减1则变成01,011,0111,01111.两者做按位与运算,结果如果为0,则X是2的N次方. 2.统计一个整数的二进制中1的个数 int CountNumberOfOne(int number) { int counter = 0; while (number) { counter++; number &=

位运算专题

首先抱来Matrix67大牛的文章(修改部分内容): 位运算简介及实用技巧(一):基础篇     去年年底写的关于位运算的日志是这个Blog里少数大受欢迎的文章之一,很多人都希望我能不断完善那篇文章.后来我看到了不少其它的资料,学习到了更多关于位运算的知识,有了重新整理位运算技巧的想法.从今天起我就开始写这一系列位运算讲解文章,与其说是原来那篇文章的follow-up,不如说是一个remake.当然首先我还是从最基础的东西说起. 什么是位运算?    程序中的所有数在计算机内存中都是以二进制的形

位运算 使用技巧

位运算简介及实用技巧(一):基础篇 什么是位运算? 程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作.比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算.举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理): 110 AND 1011 ---------- 0010  -->  2 由于位运算

位运算简介及实用技巧(一):基础篇[转]

位运算简介及实用技巧(一):基础篇 原贴链接:http://www.matrix67.com/blog/archives/264 去年年底写的关于位运算的日志是这个Blog里少数大受欢迎的文章之一,很多人都希望我能不断完善那篇文章.后来我看到了不少其它的资料,学习到了更多关于位运算的知识,有了重新整理位运算技巧的想法.从今天起我就开始写这一系列位运算讲解文章,与其说是原来那篇文章的follow-up,不如说是一个remake.当然首先我还是从最基础的东西说起. 什么是位运算?    程序中的所有

(转)位运算简介及使用技巧

转自http://www.matrix67.com/blog/archives/263 去年年底写的关于位运算的日志是这个Blog里少数大受欢迎的文章之一,很多人都希望我能不断完善那篇文章.后来我看到了不少其它的资料,学习到了更多关于位运算的知识,有了重新整理位运算技巧的想法.从今天起我就开始写这一系列位运算讲解文章,与其说是原来那篇文章的follow-up,不如说是一个remake.当然首先我还是从最基础的东西说起. 什么是位运算?    程序中的所有数在计算机内存中都是以二进制的形式储存的.

基础位运算基本原理和应用

微信公众号 位运算是编程语言的基础,在看源码的时候会看到很多位运算代码,但是在项目代码中很少会看到位运算.因为应用代码中,有很多判断和计算都可以直接用数值的判断和计算完成,没有必要去用位运算,以至于这些基础的东西慢慢用的越来越少,慢慢也就忘了.导致的一个结果就是看源代码很费力,因为大量的位运算逻辑,看不懂.作为程序员感觉数据位运算是非常必要,有点如下: 看源码时能够更好的理解 位运算更接近计算机的习惯,执行的效率会更高 装逼利器,在项目中使用位运算,体现逼格 N种基本的位运算 位运算 -- 与运

[hdoj]3006//位运算+枚举

题意:给出n个集合,问这些集合能组合成几种不同的集合. 思路:枚举+状态压缩.由于1<=m<=14,所以最多有2^14=16 384种状态,每种状态可以存在一个int中.枚举所有的状态,运用位运算,判断能否由这n个集合组成. #include<iostream> using namespace std; int main(){ int n, m, k, w, i, j; int ans, val[105]; while(cin >> n >> m){ for

软件补丁问题(SPFA+位运算)

洛谷P2761 1.考虑到所有的错误只有"修复,未修复"两种情况,所以可以用0,1标记压缩状态,采用位运算减少时空浪费. 又考虑到有修复时间的关系,将时间抽象成边,将状态抽象为点(设修复为0,未修复为1)最后从(1<<n)-1开始寻找到0的最短路,SPFA一边建图一边松弛即可. 2.实现过程中,难点在于对二进制表示,以及位运算组合判断的处理. 首先,状态要表示(见前): 其次,补丁b,f要表示. 最初考虑用两个数来表示b,f,发现受"不动错误"影响,无法