Java的流程控制结构,细节详解
位运算符
&与 |或 ^异或 <<左移 >>右移 >>>无符号右移 ~取反
注意:位运算是针对整数运算的
int i = 6,j = 10;
方式一:利用第三方变量
int k = i;
i = j;
j = k;
方式二:利用加减法
i = i + j;
j = i - j;--->j = i + j - j;-> j = i;
i = i - j;--->i = i + j - i;-> i = j;
方式三:异或运算
i = i ^ j;
j = i ^ j;---> j = i ^ j ^ j;-> j = i;
i = i ^ j;---> i = i ^ j ^ i;-> i = j;
i^=j;j^=i;i^=j;
为什么第三种方式的效率更高却是第一种方式用的更广?
第一种方式的可阅读性更高;第三种方式只能用于运算整数,第二种方式可以用于运算数值型但是不能用于交换其他类型的值例如字符串类型,而第一种方式可以交换任意一种类型的值

流程控制
顺序结构
从上倒下、从左到右一次运行
分支结构
判断结构
if(逻辑值){
代码块;
}

如果代码块只有一句,{}可以省略不写
if(逻辑值){
Code1;
} else {
Code2;
}

练习:获取较大的数
if(逻辑值1){
Code1;
} else if(逻辑值2) {
Code2;
} else {
Code3;
}
练习:输入月份,输出季节---3-5---Spring,6-8-Summer,9-11-Autumn,12-2-Winter
选择结构
switch(表达式){
case 情况1 : Code1;break;
case 情况2 : Code2;break;
……
default:Code;break;
}
注意:
1.表达式的结果是byte/short/int/char
2.从JDK1.7开始,允许匹配字符串
3.从JDK1.5开始,允许匹配枚举常量
4.当选项后边都有break的时候,选项之间的顺序没有影响;如果有一个或者以上选项之后没有break,从匹配到该选项的地方开始执行,知道遇到break或者{}结束
int i = 0;
switch(i){
case 0: int j = 0;
case 1: j+=1;
case 2: j+= 2;
case 3:j+=3;
default:j+=4;
}
System.out.printlnt(j);---报错
练习:从控制台输入两个数字以及运算符号(+、-、*、/),将两个数字按照指定的运算进行并输出结果
循环结构
while(逻辑值){
Code;
}

循环的要素:定义循环变量、控制判断条件、改变循环变量
例子:
1.求1到任意一个数的和
2. 输入任意一个整数,输出这个整数的位数
练习:
- 输入一个整数,求各位数字之和
Scanner scanner=new Scanner(System.in);
String string=scanner.nextLine();
int sum=;
for (int i = ; i < string.length(); i++) {
sum+=Integer.valueOf(String.valueOf(string.charAt(i)));
}
System.out.println(sum);
- 求300以内7的倍数
for (int i = 0; i < 300; i++) {
if (i%7==0) {
System.out.println(i);
}
}
- 输入一个整数,转化成二进制显示
Scanner scanner=new Scanner(System.in); int a=scanner.nextInt(); String nbInteger= Integer.toBinaryString(a); System.out.println(nbInteger);
如果while循环的代码块只有一句,{}可以省略
do{
Code;
} while(逻辑值);

do-while循环的代码块至少执行一次
for(定义循环变量; 控制判断条件; 改变循环变量){
代码块;
}

练习:求500以内6的倍数的和
for循环的循环变量在循环结束之后不可使用,while循环可以
当循环的次数固定或者步长固定建议使用for循环
当循环次数不定或者变化不规律的时候建议使用while
//希望用户输入一个偶数
Scanner s = new Scanner(System.in);
int even = s.nextInt();
while(even % 2 != 0){
even = s.nextInt();
}
for(;even % 2 != 0; ){
even = s.nextInt();
}
练习:打印九九乘法表
for (int i = ; i <=; i++) {
for (int j = ; j <= i; j++) {
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println("");
}
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
Java的流程控制结构,细节详解的更多相关文章
- java 关键字final static native详解
java 关键字native static final详解 一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义, ...
- Java网络编程和NIO详解9:基于NIO的网络编程框架Netty
Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introd ...
- Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理 转自:https://www.jianshu.com/p/2b71ea919d49 本系列文章首发于我的个人博 ...
- Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO
Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO Java 非阻塞 IO 和异步 IO 转自https://www.javadoop.com/post/nio-and-aio 本系 ...
- Java网络编程和NIO详解3:IO模型与Java网络编程模型
Java网络编程和NIO详解3:IO模型与Java网络编程模型 基本概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32 ...
- webRTC中语音降噪模块ANS细节详解(二)
上篇(webRTC中语音降噪模块ANS细节详解(一))讲了维纳滤波的基本原理.本篇先给出webRTC中ANS的基本处理过程,然后讲其中两步(即时域转频域和频域转时域)中的一些处理细节. ANS的基本处 ...
- webRTC中语音降噪模块ANS细节详解(三)
上篇(webRTC中语音降噪模块ANS细节详解(二))讲了ANS的处理流程和语音在时域和频域的相互转换.本篇开始讲语音降噪的核心部分,首先讲噪声的初始估计以及基于估计出来的噪声算先验信噪比和后验信噪比 ...
- java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET
java中的io系统详解 - ilibaba的专栏 - 博客频道 - CSDN.NET 亲,“社区之星”已经一周岁了! 社区福利快来领取免费参加MDCC大会机会哦 Tag功能介绍—我们 ...
- Java开发利器Myeclipse全面详解
Java开发利器Myeclipse全面详解: Ctrl+1:修改代码错误 Alt+Shift+S:Source命令 Ctrl+7:单行注释 Ctrl+Shift+/ :多行注释 Ctrl+I :缩进( ...
- Java中的main()方法详解
在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 ...
随机推荐
- js 切换全屏
公司有一个需求就是点击某一个按钮实现全屏切换功能,然后呢我就在网上扒了段代码.封装了一下.使用的小伙伴们可以看看哦! 切换全屏代码 <!DOCTYPE html> <html> ...
- 解决ajax的parsererror错误的终极办法(后台传给前台的数据json问题)
解决ajax的parsererror错误的终极办法(后台传给前台的数据json问题) 出现这个问题的原因是因为后台传给前台的数据出现了问题,ajax对于json的格式特别的严格 下面是会出现这个问题的 ...
- Redis学习-内存优化
以下为个人学习Redis的备忘录--内存优化 1.随时查看info memory,了解内存使用状况:127.0.0.1:6379> info memory# Memoryused_memory: ...
- 手 Q 人脸识别动画实现详解
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 前言 开门见山,先来看下效果吧. 看到这么酷炫的效果图,不得不赞叹一下我们的设计师.然而,站在程序员的角度上看,除了酷炫之外更多的是复杂.但是 ...
- Python 爬虫练习(三) 利用百度进行子域名收集
不多介绍了,千篇一律的正则匹配..... import requests import re head = {'User-Agent': \ 'Mozilla/5.0 (Windows NT 6.3; ...
- Mac下Kali虚拟机与宿主机共享文件夹
宿主机: 1.创建文件夹.测试文件 ZhangSan-MacBook-Air:~ zhangsan$ mkdir kalishare && cd kalishare/ ZhangSan ...
- VMware虚拟机安装教程
在实际的开发过程中,使用到VMware的时候是很多的.当你的电脑安装的是windows系统而想使用linux系统时,为了避免对本机的系统进行操作,那么安装虚拟机就是一项不错的选择. 在写这篇博文时,刚 ...
- Glance 镜像服务群集
#Glance 镜像服务群集 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html#4.Glance 镜像服务群集 ##. ...
- gitlab环境搭建
企业级的git管理程序.最好用的之一吧.估计其它的也得叫之二. 怎么搭建呢? 2G以上配置的机器才可以搞. . 如下 安装需要注意的是.如果开了80端口,8080的需要修改配置文件 下面会提到 1. ...
- CentOS安装Nginx 报错“configure: error: the HTTP rewrite module requires the PCRE library”解决办法
错误提示: ./configure: error: the HTTP rewrite module requires the PCRE library. yum install gcc gc ...