关键字-标识符-常量和变量-运算符-流程控制-方法-数组

5 运算符

算术运算符Arithmetic Operators

赋值运算符Assignment Operators

比较运算符Compare Operators

逻辑运算符Logic Operators

位运算符Bitwise Operators

三元运算符Ternary Operator

5.1算术运算符Arithmetic Operators

注意:

1.除法操作两个操作数是整数时,结果也是整数,余数部分舍弃

int x = 3500;

System.out.println(x / 1000 * 1000);

2.%操作获得的是除法操作的余数

%结果的符号取决于被模数,即%前面的数的符号决定了结果的正负

5.1.1++,--

++:自加

放在变量前,先自增,再使用

放在变量后,先使用,后自增

--:自减

放在变量前,先自减,后使用

放在变量后,先使用,后自减

注意:只能对变量使用

练习题:

练习题1:

int a= 10;

int b= 10;

int c= 10;

a= --c;

b= c++;

c= ++a;

经过以上操作,abc的值分别是多少?

练习题2:

int a= 4;

int b= (++a)+(a++)+(a*10);

经过以上操作,ab的值分别是多少?

练习题

5.1.2字符串参与运算:

1.两个操作数都是字符串

2.一个字符串一个变量

3.多个操作数

“+”除了字符串相拼接功能外,还能把非字符串转换成字符串,加空串即可

String s = 5 + "";

思考:

System.out.println("5+5="+5+5);//打印结果是?

System.out.println(5+5+"hello");

思考

5.2扩展的赋值运算符

符号:

= , +=, -=, *=, /=, %=(扩展的赋值运算符)

左侧为变量,右侧为字面量,或变量,或表达式

示例:

int a,b,c; a=b=c=3;//支持连续赋值

int a = 3;

a += 5; //等同运算:a=a+5;

思考:short s = 3;

s= s + 2; //报错

s+= 2; //扩展的赋值运算符会默认做强制的类型转换

s=(short)(s+2)

s=s+2//编译失败,因为s会被提升为int类型,运算后的结果还是int类型。无法赋值给short类型。

s+=2//编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。

思考

5.3比较运算符Compare Operators

操作数是常量,或变量,或表达式

比较运算符的结果是boolean型,要么是true,要么是false,常用作条件判断

note:比较运算符“==”不能误写成“=”

5.4逻辑运算符Logical Operators

逻辑运算符的操作数都是布尔型表达式

“&”和“&&”(短路与)的区别:

单&时,左边无论真假,右边都进行运算;

双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算.

“|”和“||”的区别同理,双或时,左边为真,右边不参与运算

总结:

右边只有在需要的时候,才参与运算

异或( ^ )与或( | )的不同之处是:异或求的是异

或( | ):只要有个一为true,结果就为true

5.5位运算符Bitwise Operators

位运算是直接对二进制进行运算,所以必须知道操作数的二进制位才行

按位异或运算的两个简单应用1.不使用第三方变量交换两个变量2.简单加密

应用和思考

规律:

在不发生有效位丢失,且不改变符号位的情况下,左移运算相当于被操作数乘以2的n次幂,右移运算相当于除以2的n次幂

注意:

假设操作数为int型,移动的位数为x,若x超过32位,那么它实际移动的位数是 x%32

例如:2 << 34 等价于 2 << 2

2 >> 33 等价于 2 >> 1

3 >> 32 结果是 ?

例题

5.6三元运算符Ternary Operator

格式

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

如果条件为true,整个表达式结果是表达式1;

如果条件为false,整个表达式结果是表达式2;

示例:

获取两个数中大数

int x=3,y=4;

int max= (x>y)?x:y; //变量max存储的就是两个数的大数

示例

三元表达式整体是有值的,也就是说,它不能单独使用例如下面的写法就是错的:2 > 1 ? true:false;

要么直接打印,要么赋值

System.out.println(2 > 1 ? true:false);boolean bol = (2 > 1)?true:false;

不能单独

面试题:

下面语句的输出结果是?

System.out.println(2>1?2:1.0);

res:2.0

面试题

6.程序流程控制

顺序结构(宏观上)

分支结构/选择结构(if,switch)

循环结构(while,do-while,for)

6.1顺序结构

语句按照顺序依次执行

单纯的顺序结构的程序基本不存在

但是,大型程序从宏观上来看的话,各个模块之间也是呈现顺序结构

6.2分支结构

6.2.1判断结构

程序根据条件表达式的值来决定程序的走向

if语句注意事项:

if后的括号内一定是布尔值或者布尔表达式

第二种格式与三元运算符的区别:三元运算符运算完要有值出现,并且可以写在其他表达式中

if的语句块中可以加多条语句,实现更复杂的逻辑

if/else后边的大括号可以省略,此时if语句只能控制到第一个分号结束;如果有多条语句的话,不能省略

建议不要省略大括号

6.2.2选择结构

switch语句特点:

switch语句选择的类型只有四种:byte,short,int , char。

case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。

结束switch语句的两种情况: 遇到break,执行到switch语句结束。

匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束

6.2.3循环结构

while - do while - for

循环语句可以在满足循环条件的情况下,反复执行某一段代码

被反复执行的代码称为循环体

需要在适当的时候,把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环

完整的循环应该包含以下四个部分:

初始化语句:初始化工作,在循环体开始之前执行

循环条件:一个boolean表达式,决定是否执行循环体

循环体:反复执行的部分

迭代语句:在循环体执行完之后执行,然后再去判断循环条件,一般用来控制循环条件中的变量,使循环在合适的时候结束

for循环:

for运行的顺序:

1.执行初始化表达式,只执行一次,通常是定义循环变量语句

2.判断循环条件:为真就往下执行;为假就结束循环

3.执行循环体语句

4.执行循环变量控制语句,一般是循环变量的自增或自减

5.回到第2步,重复这个过程,直到为假时结束

for循环注意事项:

1.循环变量通常定义为int型,因为最常用的就是int型

2.循环条件判断的结果是boolean类型值

3.小括号中的分号不能写成中文的分号

4.如果循环体只有一条语句的话,可以省略大括号,但建议写全

5.循环变量控制语句不必每次改变1,根据情况,可以是任意值

1.在控制台上依次打印1-10

2.在控制台上依次打印10-1(练习)3.求1-10所有数之和4.求出1-100之间所有的偶数之和5.求出1-100之间所有的奇数之和(练习)6.求出5的阶乘7.求水仙花数:(水仙花数见注解)8.列出5位数中的回文数:(回文数见注解)9.统计1000以内,同时是3,5,7的倍数的数有多少个?

案例

while循环:

执行流程:

1.执行初始化语句(如果有的话)

2.判断条件表达式真假:如果真,往下执行;如果假,结束循环

3.执行循环体语句

4.执行循环变量控制语句(如果有的话)

5.返回第2步,重复执行,直到条件为假,结束循环

for循环的循环变量,一般情况下在循环外是不能访问到的,因为它的作用域是在for循环的{}之内,但是可以通过把循环变量定义在外边来实现这个功能;或者定义计数器。

do-while:

执行流程

1.执行初始化部分(如果有的话)

2.执行循环体语句

3.执行循环变量控制语句(如果有的话)

4.判断条件表达式,如果为真,返回第2步;如果假,结束循环

特点:循环体至少会被执行一次

注:

for里面的两个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。

while与for可以互换,区别在于for为了循环而定义的变量在for循环结束时就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。

最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

1.当明确知道循环的范围的时候,通常使用for

2.当不明确循环次数的时候,for和while都可以,通常使用while

6.2.4 其他流程控制语句

break(跳出), continue(继续)

break语句:应用范围:选择结构和循环结构。

continue语句:应用于循环结构。

注:

这两个语句离开应用范围,存在是没有意义的。

这个两个语句单独存在下面都不可以有语句,因为执行不到。

continue语句是结束本次循环继续下次循环。

标号的出现,可以让这两个语句作用于指定的范围。

java 基本语法与流程控制_java基础语法2-运算符与流程控制相关推荐

  1. java 基本语法与流程控制_Java基础语法之控制流程

    Java基础语法之控制流程 语言的流程控制提供了对程序步骤的基本方法. 三大流程控制语句:顺序.选择.循环 复合结构 复合结构是以一个区块为单位的,由"{"开始"}&qu ...

  2. JAVA运算的类型兼容原则_Java基础语法回顾(一)

    Java基础语法 Java规范 image.png Java字节码 java程序是以".java"为扩展名,当我们编写完java程序后,要执行程序需要经过两个阶段:编译和运行. 编 ...

  3. java简述标识符和保留字区别_Java 基础语法 - 流年似水莫停留的个人页面 - OSCHINA - 中文开源技术交流社区...

    Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一 ...

  4. java 左右两边数据类型不一样_java基础语法

    常量 什么是常量 值不能改变的量 为什么使用常量 在开发不可避免的要用来一些数,这时候就可以使用常量 常量的分类 1.整型    整数 2.浮点型  小数 3.布尔类型  只有两个值用来表示真与假tr ...

  5. java中的switch的规则_Java基础语法

    switch分支 switch语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. switch语法格式如下: switch(expression){ case value : //语句 ...

  6. python语法基本组成单位_Python基础语法总结

    学习任何一门编程语言,首先要了解这门编程语言的语法要求,掌握好基础语法是学好一门编程语言的第一步 1.程序组成及标识符 Pyhton程序是由语句和表达式组成的,示例代码如下图所示. 语句一般是使用关键 ...

  7. java中和char功能相反的是_JAVA基础语法

    java的基础语法 Java中的程序可分为结构定义语句和功能执行语句. 结构定义语句:用于声明一个类或方法,功能执行语句用于实现具体的功能. 功能执行语句:每条功能执行语句的结尾都必须用英文分号(;) ...

  8. java 语法_Java基础语法

    标识符 定义 给包,类,方法,变量起名字的符号. 组成规则 标识符由字母.数字.下划线.美元符号组成. 命名原则:见名知意 包名:全部小写,多级包用.隔开. 举例:com.jourwon 类.接口:一 ...

  9. Java是有法_Java基础语法

    Java的基础语法包含三大类:标识符.修饰符.关键字. 一.标识符. 定义:标识符是以数字.字母.下划.$符号(美元符)所组成的用来标志类名.对象名.方法名.类型名.数组名.包名的有效字符序列.(简单 ...

  10. java 多线程语法_Java基础语法之多线程学习笔记整理

    众所周知,利用好多线程机制,可以大大提高系统整体的并发能力以及性能,而且线程间的切换和调度的成本小.因此,多线程是Java学习者必须掌握的语法重点.本文为大家整理了进程和线程.实现多线程方式.设置和获 ...

最新文章

  1. elasticsearch的父子_elasticsearch父子关系(官方)实际使用中的一些建议
  2. 5、JavaScript进阶篇②——函数、事件、内置对象
  3. Python会干掉Java, 一统天下?
  4. C++11系列学习之七---------初始化列表
  5. 如果在iTerm2中复制命令特别卡,就跟慢动作似的,怎么办?
  6. Centos7.0 搭建Zabbix环境
  7. 为什么鞋带总是松开?罪魁祸首其实是…
  8. 【AI视野·今日Robot 机器人论文速览 第十五期】Fri, 25 Jun 2021
  9. 安卓学习笔记01:安装集成开发环境Android Studio
  10. python 文件和目录基本操作_Python常用的文件及文件路径、目录操作方法汇总介绍...
  11. java 父类 new 子类
  12. web应用非法访问linux路径,Web安全对策研究.doc
  13. 使用 Request.Form 集合之后,不能调用 BinaryRead
  14. 简单计算机病毒黑屏,电脑被木马病毒侵袭,黑屏了怎么处理
  15. 在Linux上恢复误删除的文件或目录
  16. 作为人才我们为什么要和几个猎头保持良好的关系?
  17. 蛋白质生物学概述(一)
  18. 微信小程序为啥有的时候不显示封面广告、以及其他广告
  19. 上帝之眼——GIS技术的决定性作用
  20. ORACLE数据库报错ORA-01034

热门文章

  1. 【车牌识别】基于matlab形态学车牌识别【含Matlab源码 1155期】
  2. 【图像修复】基于matlab GUI空域滤波图像复原【含Matlab源码 849期】
  3. 怎么将php文件改成web的servlet文件_遇到喜欢的网站怎么才能高效收藏整理
  4. 机器人控制学习机器编程代码_机器学习正在征服显式编程
  5. python:DataFrame输出为csv(Pandas的to_csv()使用)
  6. ofdm原理_5G进行时|5G NR物理层详解:原理、模型和组件
  7. go导出mysql中的excel表,MySQL导出数据,并转存到Excel表格中
  8. mysql获取多张表中的数据_mysql – 从具有递归关系的两个表中获取数据
  9. php html5 应用缓存,HTML5 应用程序缓存
  10. python中的is和==