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

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 = ;
int b = ;
int c = ;
a = --c;
b = c++;
c = ++a;
经过以上操作,abc的值分别是多少?
练习题2:
int a = ;
int b = (++a)+(a++)+(a*);
经过以上操作,ab的值分别是多少?

练习题

 5.1.2字符串参与运算:

1.两个操作数都是字符串
2.一个字符串一个变量
3.多个操作数
“+”除了字符串相拼接功能外,还能把非字符串转换成字符串,加空串即可
String s = 5 + "";

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

思考

5.2扩展的赋值运算符

符号:
  = , +=, -=, *=, /=, %=(扩展的赋值运算符)
  左侧为变量,右侧为字面量,或变量,或表达式
示例:
  int a,b,c; a=b=c=3;//支持连续赋值

  int a = 3;

a += ;    //等同运算:a=a+;
思考:
short s = ;
s = s + ; //报错
s += ; //扩展的赋值运算符会默认做强制的类型转换
s=(short)(s+)
s=s+//编译失败,因为s会被提升为int类型,运算后的结果还是int类型。无法赋值给short类型。
s+=//编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。

思考

5.3比较运算符Compare Operators

操作数是常量,或变量,或表达式
比较运算符的结果是boolean型,要么是true,要么是false,常用作条件判断

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

5.4逻辑运算符Logical Operators

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

“&”和“&&”(短路与)的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算.
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算

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

异或( ^ )与或( | )的不同之处是:异或求的是异
或( | ):只要有个一为true,结果就为true

5.5位运算符Bitwise Operators

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

按位异或运算的两个简单应用

.不使用第三方变量交换两个变量
.简单加密

应用和思考

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

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

例如:
<< 等价于 <<
>> 等价于 >>
>> 结果是 ?

例题

5.6三元运算符Ternary Operator

格式

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

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

示例:
获取两个数中大数
int x=,y=;
int max = (x>y)?x:y; //变量max存储的就是两个数的大数

示例

三元表达式整体是有值的,也就是说,它不能单独使用例如下面的写法就是错的:
> ? true:false; 要么直接打印,要么赋值
System.out.println( > ? true:false);
boolean bol = ( > )?true:false;

不能单独

面试题:
下面语句的输出结果是?
System.out.println(>?: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

循环语句可以在满足循环条件的情况下,反复执行某一段代码
被反复执行的代码称为循环体
需要在适当的时候,把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环
完整的循环应该包含以下四个部分:

  1. 初始化语句:初始化工作,在循环体开始之前执行
  2. 循环条件:一个boolean表达式,决定是否执行循环体
  3. 循环体:反复执行的部分
  4. 迭代语句:在循环体执行完之后执行,然后再去判断循环条件,一般用来控制循环条件中的变量,使循环在合适的时候结束

    for循环:

for运行的顺序:
1.执行初始化表达式,只执行一次,通常是定义循环变量语句
2.判断循环条件:为真就往下执行;为假就结束循环
3.执行循环体语句
4.执行循环变量控制语句,一般是循环变量的自增或自减
5.回到第2步,重复这个过程,直到为假时结束

for循环注意事项:
1.循环变量通常定义为int型,因为最常用的就是int型
2.循环条件判断的结果是boolean类型值
3.小括号中的分号不能写成中文的分号
4.如果循环体只有一条语句的话,可以省略大括号,但建议写全
5.循环变量控制语句不必每次改变1,根据情况,可以是任意值

.在控制台上依次打印1-
.在控制台上依次打印10-(练习)
.求1-10所有数之和
.求出1-100之间所有的偶数之和
.求出1-100之间所有的奇数之和(练习)
.求出5的阶乘
.求水仙花数:(水仙花数见注解)
.列出5位数中的回文数:(回文数见注解)
.统计1000以内,同时是3,,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语句:应用于循环结构。
注:

  1. 这两个语句离开应用范围,存在是没有意义的。
  2. 这个两个语句单独存在下面都不可以有语句,因为执行不到。
  3. continue语句是结束本次循环继续下次循环。
  4. 标号的出现,可以让这两个语句作用于指定的范围。

java基础语法2-运算符与流程控制的更多相关文章

  1. Java基础语法(3)-运算符

    title: Java基础语法(3)-运算符 blog: CSDN data: Java学习路线及视频 1.算术运算符 算术运算符的注意问题 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1. ...

  2. flutter--Dart基础语法(二)流程控制、函数、异常

    一.前言 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,Flutter 开源.免费,拥有宽松的开源协议,支持移动.Web.桌面和嵌入式平台. ...

  3. JavaSE入门学习6:Java基础语法之运算符和语句(上)

    继续接着上篇:JavaSE入门学习5:Java基础语法(一)来看Java的基础语法. 五运算符 运算符是一种"功能"符号,用以通知Java进行相关的运算.比方.我们须要将变量age ...

  4. Java学习日记——基础篇(三-上)基本语法之运算符和流程控制

    运算符 算术运算符 听其名而知其意,就是用于计算的,java中常用的是: +   加 -    减 *    乘 /    除 %  取模,取余——%可以用来得到两个数相除的余数 小练习——写一个ja ...

  5. [java学习笔记]java语言基础概述之运算符&程序流程控制&for循环嵌套

    一.运算符 算数运算符 +,-,*,/,%,++,-- 1.+,-,*,/ 整数除以整数的结果为舍弃了小数部分的整数. 2.%:取余 %左右都为正数,左边小于右边结果为左边值,如,4%5=4 %左边大 ...

  6. python基础--数据类型、运算符、流程控制

    原文地址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143165862 ...

  7. javascript语法 1.运算符 2. 流程控制 3. 函数 4. 四种变量 5. 数据类型的运用 6. js页面交互

    1.运算符 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...

  8. Java菜鸟之java基础语法,运算符(三)

    赋值运算符 (一)JAVA种的赋值运算符 = ,代表代表的等于,一般的形式是  左边变量名称   =     右边的需要赋的指或者表达式,如果左侧的变量类型级别比较高,就把右侧的数据转换成左侧相同的高 ...

  9. java 基本语法(五) 流程控制(二) 循环结构

    1.循环结构的四要素① 初始化条件② 循环条件 --->是boolean类型③ 循环体④ 迭代条件说明:通常情况下,循环结束都是因为②中循环条件返回false了. 2.三种循环结构:2.1 fo ...

随机推荐

  1. zabbix服务器性能监控工具的安装一

    Linux下安装zabbix需要有LNMP运行环境,本篇记录安装LNMP的过程 目录 1.准备工作 2.安装mysql 3.安装nginx 4.安装php 1.准备工作 1.1准备一台centos6. ...

  2. PHP LDA off 解决

    搭建完zabbix初始登录zabbix显示 PHP LDAP off 解决 不需要重新编译php 就可以增加 LDAP 模块 .首先进入自己的 PHP 安装目录中找到 ldap 文件夹 [root@b ...

  3. Android的消息机制之ThreadLocal的工作原理

    ThreadLocal 可以把一个对象保存在指定的线程中,对象保存后,只能在指定线程中获取保存的数据,对于其他线程来说则无法获取到数据. 日常开发中 ThreadLocal 使用的地方比较少,但是系统 ...

  4. Flutter异步Future

    一.认识Future 1.创建Future void testFuture(){ Future future = new Future(() => null); future.then((_){ ...

  5. 学习SASS

    这几天白老师叫我们css的扩展技术,有什么LESS,还有SASS(我还以为是SAS...QAQ),LESS由于功能比较简单,用的也比较少所以我们重点学习了SASS.简单地说SASS是一种CSS的开发工 ...

  6. Service Mesh体验

    前言# 计算机软件技术发展到现在,软件架构的演进无不朝着让开发者能够更加轻松快捷地构建大型复杂应用的方向发展.容器技术最初是为了解决运行环境的不一致问题而产生的,随着不断地发展,围绕容器技术衍生出来越 ...

  7. Spark集群架构

    集群架构 SparkContext底层调度模块 Spark集群架构细化

  8. 事务与Mysql隔离级别

    事务 定义: 比如ABCD四个业务,作为一个事务,他们要么一起都执行完毕,要么都不执行.(只要有一个不成功,那么所有的都不可以成功) 四个特性 ACID 原子性(Atomicity) 整个事务中的所有 ...

  9. 【VS开发】 自己编写一个简单的ActiveX控件——详尽教程

    最近开始学ActiveX控件编程,上手不太容易,上网想找相关教程也没合适的,最后还是在师哥的指导下完成了第一个简单控件的开发,现在把开发过程贴出来与大家分享一下~ (环境说明--平台:vs2005:语 ...

  10. 关于c++对拍的办法

    众所周知,在\(oi\)学习以及考试中,对拍是一件非常重要的事. 有了对拍后,我们可以利用它发现代码上的一些非常难看出来的错误. 编写对拍程序一般有两个办法. 方案一 编写一个对拍的\(cpp\),并 ...