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

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. Action Script 3.0入门基本概念——IDE&编译与运行

    [编写ActionScript代码的工具] ActionScript代码是用纯文本编写的,所以ActionScript程序可以仅由简单的文本编辑器来创建,如Windows上的记事本或Macintosh ...

  2. python__007内置函数

    本文摘自:https://docs.python.org/3/library/functions.html?highlight=built#ascii     内置功能     abs() delat ...

  3. Tutorial : Implementing Django Formsets

    A step-by-step tutorial for setting up and testing a standard Django formset. I’ve noticed on #djang ...

  4. java之 Mybatis框架

    1.三层框架: 表现层: 是用于展示数据 业务层: 是处理业务需求 持久层: 是和数据库交互 注:MyBatis在持久层 2.JDBC操作数据库 public static void main(Str ...

  5. DHCP迁移

    情况1:windows 2003迁移到windows 2003或者windows 2008,按照需要以下几个步骤:1.在源DHCP服务器导出DHCP数据文件,执行以下命令netsh dhcp serv ...

  6. Kaggle试水之泰坦尼克灾难

    比赛地址:https://www.kaggle.com/c/titanic 再次想吐槽CSDN,编辑界面经常卡死,各种按钮不能点,注释的颜色不能改,很难看清.写了很多卡死要崩溃. 我也是第一次参加这个 ...

  7. Xcode增加头文件搜索路径的方法

    Xcode增加头文件搜索路径的方法 以C++工程为例: 在Build Settings 页面中的Search Paths一节就是用来设置头文件路径. 相关的配置项用红框框起来了,共有三个配置项: He ...

  8. [Python3] 030 常用模块 os

    目录 os 1. os.getcwd() 2. os.chdir() 3. os.listdir() 4. os.makedir() 5. os.system() 6. os.getenv() 7. ...

  9. 洛谷 P2801 教主的魔法 题解

    题面 刚看到这道题的时候用了个树状数组优化前缀和差分的常数优化竟然AC了?(这数据也太水了吧~) 本人做的第一道分块题,调试了好久好久,最后竟然没想到二分上还会出错!(一定要注意)仅此纪念: #inc ...

  10. PHP:API 接口规范完整版本

    整体规范建议采用RESTful 方式来实施. 协议 API与用户的通信协议,总是使用HTTPs协议,确保交互数据的传输安全. 域名 应该尽量将API部署在专用域名之下.https://api.exam ...