热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java学习第三天——控制流程

java学习第三天编译器的优化对于byte、short、char三中数据类型来说,如果右侧的赋值数据没有超过范围,那么javac编译器将自动隐含的为我们补上(byte),(sh

java学习第三天


编译器的优化

对于byte、short、char三中数据类型来说,如果右侧的赋值数据没有超过范围,那么javac编译器将自动隐含的为我们补上(byte),(short),(char)



  1. 如果没有超过左侧的数据类型的数范围,那么编译器不上强转

  2. 如果超过了左侧的数据类型的数据范围,那么编译器直接报错

byte a = 30;//编译器自动在30加上(byte)
byte b = 128;//超过byte数据范围,直接报错

再给变量进行复制的时候,如果右侧的表达式当中全部是常量,没有任何变量,那么编译器javac会将直接将若干个常量表达式的结果计算。

short result = 5 = 8;//等于右边全是常量,没有任何变量参与运算,编译之后得到的。class文件中相当于直接就是short result = 13;右侧的常量结果数值没有超过左侧的范围,所以正确
这就是编译器的常量优化
但是注意,一旦表达式中有变量参与,那么就不进行有这种优化了

流程控制


顺序结构

按照从上到下循序执行语句


判断语句

if(){

}

执行流程图

if语句格式1

执行流程说明

首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体

if(){

} else {

}

执行流程

执行流程图

if语句格式2

执行流程说明

首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2

if(){

} else if(){

}…

执行流程图

if语句格式3

执行流程说明

首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false

如果没有任何关系表达式为true,就执行语句体n+1


Swich语句

swich(表达式){

case 常量值:

​ 语句体1:

break;

case 常量值:

​ 语句体2:

break;

default:

​ 语句体n+1;

​ break;

}

执行流程说明

首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

执行流程图

img

注意事项

1、swich(表达式)中表达式的返回值必须是以下几种类型之一:
byte,short,char,int,枚举(jdk1.5),String字符串(jdk1.7)

2、case子句中的值必须是常量,且所有case子句中的值应是不同的;

3、default子句是可任选的,当没有匹配的case时,执行default;

4、break语句用来在执行完一个case分支后使程序跳出swich语句块;如果没有break程序会顺序执行到swich结尾;

if分支结构和switch分支结构区别

if和swich语句很想,如果判断的具体数值不多,而且复合byte、short、int、char这四种类型。建议使用swich语句,因为效率稍高;

其他情况:对区间进行判断,对结果为boolean类型进行判断,使用if,if的使用范围比较广泛。


循环语句


while循环

while(布尔表达式)({

​ 语句体

}

只要布尔表达式为 true,循环就会一直执行下去。


do…while循环

do{

​ 语句体

}while(布尔表达式);



  1. 对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。

  2. do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

  3. 布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。


for循环

for(初始化语句;布尔表达式;语句){

​ 语句体

}

注意事项



  • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。

  • 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。

  • 执行一次循环后,更新循环控制变量。

  • 再次检测布尔表达式。循环执行上面的过程。


推荐阅读
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • JAVA流程控制结构在java中有三种流程控制结构:顺序结构,选择结构,循环结构顺序结构:顺序结构,是指程序从 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 那你就是学的c语言,跟我学c语言
    本文目录一览:1、如何学习C语言?2、新手如何 ... [详细]
  • 2017电大最新题库电大Java语言与WWW技术形成性考核填空题1、Java具有的特点简单、面向对象、与平台无关、解释型、多线程、安全、动态的语言。2、开发与运行Java程序需要经 ... [详细]
author-avatar
庚的右翼cs神
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有