java 基础 流程控制
鄙人不才,基础不好,趁着闲时简单学习一下,仅作学习分享,如有不正确地方还请各位看客不吝指出。
Java流程主要可以分为:
顺序(可以按照正常顺序一步步往下运行的)
选择(三元操作符[?:];if else;switch)
循环(for;while;do while;)
控制(break;continue;)
顺序流程没啥好说的,代码没问题的话一般都可以按顺序运行
选择流程中
1.之前在论坛中有看的别人说三元操作符不会进行短路操作,这个说法其实是错误的
例如
int i = 1;
int j = i==2 && ++i == 2?1:2;
System.out.println(i);
System.out.println(j);
2.为什么有了三元操作符还要有ifelse呢?有人说三元操作符不能嵌套,这个显然是不正确。
上面的例子第二行改成.
int j = i==2 && ++i == 2?1:(i>3?3:2);
也是可以正常运行的。可是这样做程序的可读性就很差了。个人认为ifelse主要是为了提高程序可读性存在的。
3.效率方面,直接写程序观察运行时间是不靠谱的,这与你电脑运行时环境关系很大。但是我们可以用javap进行反编译进行查看的
public class Test{ public void test()
{
int i = 1;
int j;
j = i==1?1:2;
} }
首先运行 javac Test.java进行编译,然后运行javap -c Test 进行反编译。 得到如下结果
Compiled from "Test.java"
public class Test {
public Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":
()V
4: return public void test();
Code:
0: iconst_1
1: istore_1
2: iload_1
3: iconst_1
4: if_icmpne 11
7: iconst_1
8: goto 12
11: iconst_2
12: istore_2
13: return
}
4.关于switch,其实SUN对于switch一直在进行改进,有最开始的支持byte,short,char,int,到1.5的Enum,到1.7的String。可以用于筛选的条件逐渐增多,谁知道以后会不会加上Object呢?
循环流程中
1.for循环第一次执行做不做条件判断?
这个问题平时真的不怎么注意,其实for循环再第一次执行的时候也会进行条件判读的,如果不满足条件一次都不会执行。
2.while执行前进行判断如果判断不同过就不会执行。
3.do while先执行一次,然后在做条件判断
4.循环流程中要特别注意防止死循环
5.如果有死循环编译会不会报错?
从来没注意过吧?不会报错的!!运行时候也不会报错,等到真正消耗完系统资源的时候你就闹大了。还是小心为妙
控制流程
1.配合switch和循环流程使用,可以控制跳转
2.配合标签在嵌套循环中使用可以控制循环流向
java 基础 流程控制的更多相关文章
- Java基础-流程控制(04)
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现我 ...
- java基础 流程控制和条件语句,循环语句
顺序结构 程序的顺序结构: 如果代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的, 一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束. if语句 if语句使用bo ...
- Java编程基础——流程控制
Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...
- Java的流程控制和C++的异同
Java的流程控制和C++基本相似 现将不同的地方总结一下,以便快速掌握. Java的特殊流程控制的特殊部分: 1.顺序结构 -- 没有区别 2.分之结构 -- 没有区别 3.循环结构 1> ...
- 小白学 Python(8):基础流程控制(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- Java学习--流程控制
Java学习 流程控制 用户交互Scanner Scanner对象 Java通过Scanner类获取用户的输入 基本语法: Scanner scanner = new Scanner(System.i ...
- Java程序流程控制之if-else if-else
java基础之流程控制(一) 流程控制 Flow Control : 流程控制语句是编程语言中的核心之一.可以分为 分支语句.循环语句和跳转语句. 本讲内容包括分支语句 ...
- 黑马程序员——C语言基础 流程控制 选择结构和循环结构
---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...
- Python基础—流程控制
一.Python流程控制 计算机程序在解决某个具体问题时,包括三种情形,即顺序执行所有的语句.选择执行部分的语句和循环执行部分语句,这正好对应着程序设计中的三种程序执行结构流程:顺序结构.选择结构和循 ...
随机推荐
- 机器学习pdf资源
<深度学习>(Deep Learning)中文版pdf, 百度网盘: https://pan.baidu.com/s/1jHDiQTg <机器学习导论>(Introductio ...
- DC-8靶机writeup
nmap -sV 172.16.61.129 -A 看下端口信息 nid=1 ‘ 报错,存在注入,扔到sqlmap跑 sqlmap -u http://172.16.61.129/?nid=1 --d ...
- Android简单应用程序破解——runtime.apk
对于<Debugging Android Application>一文中最后附上的练习,我采用了另一种静态方法绕开原有的逻辑去破解.主要的过程如下: 利用apktool将练习的runtim ...
- MongoDB启动和关闭问题
1.当我们使用离线安装mongodb完成后, 推荐安装教程: http://dblab.xmu.edu.cn/blog/868-2/#more-868 在使用 ' mongod -f XXX/mong ...
- keras常见问题
问题:AttributeError: 'CRF' object has no attribute '_outbound_nodes' 解答:这个一般情况下是keras版本的问题,将其改为keras== ...
- Java 第十一届 蓝桥杯 省模拟赛十六进制转换成十进制
问题描述 请问十六进制数1949对应的十进制数是多少?请特别注意给定的是十六进制,求的是十进制. 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这 ...
- Java实现 LeetCode 342 4的幂
342. 4的幂 给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方. 示例 1: 输入: 16 输出: true 示例 2: 输入: 5 输出: false 进阶: 你 ...
- Java实现 LeetCode 338 比特位计数
338. 比特位计数 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 示例 1: 输入: 2 输出: [0,1,1 ...
- Java实现8枚硬币问题(减治法)
1 问题描述 在8枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重.可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测这枚假币. 2.1 减 ...
- awardRotate转盘插件文字模糊问题和图片加载问题
前言 最近在做一个转盘抽奖页面,使用了awardRotate.js发现字体和图片都有模糊,绘制的时候图片绘制不全,搜索一下之后发现针对awardRotate的解决方法比较少,针对canvas的比较多, ...