java基础复习(三)
一、运算符
1.算术运算符
1) 加法(+) 加法 正号 字符串拼接
2) 减法(-) 减法 负号
3) 乘法 (*) 乘法
4) 除法(/) 除法
- 整数(小数)相除的例子
10/3 =3; 10.0/3=3.33333…
- 0/0
- 0.0/0.0
结果是NaN ,任何的NaN都不等于自己(面试题)
- 1.0/0.0
Infinity,表示无穷大

5) 取模(%)

2.自增自减
++(自增) --(自减)
自增自减只能够用于 变量,不能用于常量
自增自减运算的优先级 比 算术运算符 高
1)基本的使用
1)
|
int i=3; // 表示把3赋值给变量i i++; //表示变量i的值加1,i的值变成4 ++i; //表示变量i的值加 1,i的值变成5 |

2)
|
int i=3; int j = i++; i等于多少,j等于多少? |

3)
|
int i=3; int j = ++i; i等于多少,j等于多少? |

区别:
把整个表达式看成是一个整体。
如果变量名在前面,那么整个表达式的值就是原来值不变。
如果变量名在后面,那么整个表达式的值就是原来的值加
2)常见的面试题
1.

2.

3.

3)练习
1.
|
int i=5; i++; System.out.println("i="+i);//6 ++i; System.out.println("i="+i);//7 int a=++i; System.out.println("a="+a);//8 i=8 a = a++; System.out.println("a="+a);//8 a = ++a; System.out.println("a="+a);//9 |
2.
![]() |
4)总结
不要把单独的 自增自减 和 有表达式的自增自减搞混淆了
|
i++; int j =i++; |
一定要弄清楚计算规则,表达式的值 和 具体计数器的值的变化是什么
3.赋值运算
= += -= *= /= %=
1) 赋值符号的运算顺序?
从右到左,把符号右边的值赋值到左边的变量中
2) 上面 后五个分别看成是一个整体: 例如 += 看成是一个符号,不要看成两个;
|
int i=3; i +=2;// 表示把2 累加到变量 i 中 i -=1; i *=3; i /=3; i%=3; |
特例:
|
short s = 3; s += 2; ----》OK short s = 3; s = s+2;//结果值是int,int不能自动转换为short
|
4.比较运算符
== != > < >= <= instanceof
规律:比较运算的结果是一个布尔类型的值(true 或false);
- 举例:
定义一个布尔表达式,打印输出
- 特别说明:instanceof 是判断一个对象是否属于某种类型
是否可以用于我们之前学习的基本数据类型(回忆一下我们之前学习的数据类型除了基本数据类型 还有什么?)

5.逻辑运算
& | && || ^ !
是应用于多个条件的组合判断。
- 示例说明:
例如小明参加2个学科的考试 java php
1) java 和 php 同时考100分,奖励 欧洲十日游
伪代码描述:java==100 并且 php==100
2) java 和php,只要有一门考100分,奖励 源代码优惠券2000元一张
伪代码描述:java==100 或者 php==100
- 逻辑运算的两边结果值都必须是什么类型? 布尔
& :两边都为true ,结果为true
| : 只要有一边为true,结果为true
&& : 两边都为true ,结果为true
|| : 只要有一边为true,结果为true
^ : 两边不一样,结果为true ,否则为false,举个例子打印一下
! : 逻辑非,举个例子打印一下

&& || 和 & | 区别?
1) & | 既可以充当逻辑运算,也可以是位运算符,怎么区分是逻辑运算还是位运算?
根据表达式的结果是否为 布尔类型 来判断
2) 双与 双或 具有短路行为 什么意思?
举个例子 上面小明的考试的成绩 要求是两科都为100分,看到第一科低于100分之后没有必要再看第二科成绩
代码表示:Java = 100 && php = 100 (java只考了5分)
如果逻辑运算左边的值能够确定整个逻辑运算表达式的值,那么右边就不执行了,短路了。
&& 何时短路 ? 左边表达式结果为false
|| 何时短路 ? 左边表达式结果为true
- 思考:如何验证短路行为?
提示:
右边表达式用 自增自减,例如 ++i = 5
或者使用一个编译正常,运行报错的表达式,例如 1/0
常见错误:
例如:判断一个整数的变量 a里面的数据 在0-100之间
正确写法: a>0 && a<100
错误写法: 0< a < 100 (java没有这种语法,不支持)
6.位运算符
& | ^ ~ << >> >>>
位运算就是 二进制的位进行运算。
- 示例:比如计算 125+176 ,从数学的角度是怎么计算的?
- 同理,位运算也类似,比如 3&4
可以把1看成是true,把0看成是false
& :与 位运算,两边为1,结果为1
| :或 位运算,有一个为1,结果为1
^ : 异或,两边不一样,就为1,否则为0
~ : 取反,1变成0 ,0 变成1
<< : 向左位移动,例如1<<3
>> : 向右位移动,例如8>>2
>>>: 无符号向右移动


注意:正数的补码,反码,原码 都一样;
负数的反码:符号为不变,其他位取反;
负数的补码:它的反码+1;
7.三目运算符
语法格式: X ? Y : Z
1) 上面的三目运算整体看成是一个表达式,应该有一个结果值
2) X ? 布尔类型的值或者结果为布尔类型的表达式
3) Y Z ? 一般来说数据类型相同的值或者表达式
4) 运算的规则?
X 为true,就是 Y 的结果值 ( 冒号前面的表达式的值)
X为false,就是Z的结果值 ( 冒号后面的表达式的值)
x ? y : z
注意: 不要受 ? 和 : 的干扰,它们只是一个固定语法格式而已
示例1: 找出两个整型变量中的最大值

示例2:判断一个数是 奇数 还是 偶数

示例3: 例如小明学习java 考试成绩 >=60 显示 非常优秀 否则输出 还有很大的提升空间。

二、条件选择结构
- 举例: 加个条件 打印一句话。
if(1==2){
System.out.println(“今晚请大家吃大餐!”);
}
- 示例
智能机器人,开发一套软件,负责智能上厕所(应该获取硬件设备上的性别标识)。
1.
|
if(判断条件){ 满足 判断条件(true),就执行此大括号里面的内容 }
|
2.
|
if(判断条件A){ 满足 判断条件A(true),就执行此大括号里面的内容,后面的else不会执行 }else{ 前面的 判断条件A(false),执行else大括号里面的内容 }
|
3.
|
if(判断条件A){ 满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行 }else if(判断条件B){ 满足 判断条件B(true),就执行此大括号里面的内容 }
|
4.
|
if(判断条件A){ 满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行 }else if(判断条件B){ 满足 判断条件B(true),就执行此大括号里面的内容 }else{ 前面的if esle-if 都不满足条件(false),执行此大括号里面的内容 }
|
5
else if 可以有多个
|
if(判断条件A){ 满足 判断条件A(true),就执行此大括号里面的内容,后面的else-if不执行 }else if(判断条件B){ 满足 判断条件B(true),就执行此大括号里面的内容,后面的else-if else 不执行 } else if(判断条件C){ 满足 判断条件C(true),就执行此大括号里面的内容,后面的 else 不执行 }else{ 前面的if esle-if 都不满足条件(false),执行此大括号里面的内容 } |
- 总结
- if 后面的大括号如果不写,表示执行是后面的第一行代码(不建议这样写)

- 练习
- 求出2个变量中的最大值
- 判断一个数是否是3的倍数
① int a = 10;
a %3 == 0 ?”就是3的倍数”:”不是”
②if(a %3 == 0 ){
System.out.println(”就是3的倍数”)
}else{
System.out.println(”不是3的倍数”);
}
3.小明java 考试成绩 按等级分 A B C D ,判断变量值在不同的范围的,打印输出不同的等级
|
90~100 A等。 80-89 B等。 70-79 C等。 60-69 D等。 60以下E等。 |
int score = 99;
if(score>=90 && score <=100){
}else if(score>=80 && scorce <90 ){
}else if(score>=70 && scorce <80 ){
}else if(score>=60 && scorce <70){
}else{
}
三、条件选择结构-switch
作用和if差不多,只是语法结构不一致而已。
语法 :
|
switch(变量或者一个表达式){ case 变量的可能值1: 功能语句;break; case 变量的可能值2: 功能语句;break; case 变量的可能值3: 功能语句;break; ........ default:功能语句;break; } |
示例 : 假设定义一个变量表示星期,然后使用switch结构,根据不同星期打印做不同的事情。

---------------------------------
特殊的一些情况:
1) case的顺序(包括default) 可以是任意的, 但是建议先按照case的值的大小顺序排列,default放最后
2) 执行顺序,是先依次找完所有的case,如果都不匹配才会执行default
3) break的作用,结束当前的这个switch结构
- 从第一个匹配的条件开始,到第一个break之间的所有case判断失效

- 在执行功能语句时,如果到末尾都没有break,自动结束,不会再循环回去。
- 最后一个break 可以省略掉,但是建议还是写上
- 再举例 一个 打印 春夏秋冬的例子?

5) ase后面的值应该和变量的类型一致;
6) switch中的()中的变量地方类型可以是哪些?
java5之前 : byte short char int
java5支持 : enum枚举 (面向对象部分学习了之后回头测试)
java7支持 : String 类型
四、循环的作用
- 每一天重复干的事情?
睡觉 吃饭 耍朋友
- 比如酷狗音乐的播放模式?
单曲循环 列表循环
- 再比如说打印10句相同的内容?

Java中提供了3 种循环?
while do-while for
1.上面的3中循环功能都是一样的,只是语法结构不一样,很多时候是可以相互交换的, 既然都差不多,为什么有多个呢?
不同的循环结构,有不同的使用场景和优势
2.在写循环代码之前呢?
1) 要做什么事情
2) 次数
3) 要写循环,必须知道循环的语法
五、while的基本用法
while
语法格式:
|
while(条件(布尔类型的)){ // 循环体à具体做什么事情 } |
- 执行流程
1.一个循环可能会循环执行多次
第一次判断条件true,继续执行
第二次判断条件true,继续执行
第三次判断条件true,继续执行
。。。。。
直到第n次判断条件false,终止循环
2.为什么第一次 第二次是true 。。。 n次就是false?
- 条件可以是一个常量
举个例子(条件为布尔值true)

- 一般我们使用一个变量来充当条件循环,
举个例子:播放一首歌,循环播放10次
1) 定义一个整数的变量记录循环的次数
2) 循环一次,自增一次
3) 根据次数进行判断

3.写一段代码计算1-10的和。
1) 传统的做法
1+2+3+4+5+6+7+8+9+10
如果要求计算1-100 , 1-1000 这样写是否合理?
可以动态的获得每一个加数
2) 使用while循环,每循环一次,把取到的加数累加起来
3) 在循环的外面定义一个变量用来放计算的和的值

练习:
- 求出10以内2的倍数的数字 和 个数。
- 求出 1-10的所有偶数的和
六、do-while基本用法
l do-while 先执行一次,再判断
语法格式:
|
do{ // 循环体 }while(条件); |
举例:循环10次
- 和while区别?
1) 定义一个 布尔变量,默认值false
2) 将这个布尔变量放在 while 和 do-while 条件中,看有什么区别


java基础复习(三)的更多相关文章
- Java基础复习(三)
1. &和&&的区别. &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- 《Java基础复习》-控制执行流程
最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...
- 《Java基础复习》—常识与入门
突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...
- java基础复习记录
java基础复习记录(数组.对象.异常) 数组 数组的定义 数组是相同类型数据的有序集合.如:篮球队就是一个数组,队员球服上有号码,相当于索引.通过某一个的某一个号码来确认是某一个队员.数组中索引从0 ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- Java基础:三步学会Java Socket编程
Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛 第一步 ...
随机推荐
- 删除c++项目中的类
关闭引擎和vs 在工程目录中删除Source文件夹下相应的cpp和h文件 删除工程目录的saved 文件夹和intermediate文件夹 删除工程目录中binaries文件夹内的所有内容 右键工程文 ...
- 170819-关于EL表达式的知识点
1 .EL表达式 [1] 简介 > JSP表达式 <%= %> 用于向页面中输出一个对象. > 到JSP2.0时,在我们的页面中不允许出现 JSP表达式和 脚本片段. > ...
- (转)Servlet 3.0/3.1 中的异步处理学习
转:https://www.cnblogs.com/davenkin/p/async-servlet.html 在Servlet 3.0之前,Servlet采用Thread-Per-Request的方 ...
- KEIL建立新唐MCU的工程时,移植官网程序报错变量未定义问题解决方法
最近在使用新唐的MCU,新唐的MCU使用还算方便,你安装好KEIL之后再安装 Nu-Link_Keil_Driver_V3.00.6909 驱动即可建立新唐的MCU工程,注意的是因为新唐MCU是C51 ...
- Windows7下MongoDB的下载、安装与配置详解
一.Windows7下的运行库问题 虽然这个问题属于个例,但我觉得也有必要拿出来说说,保不齐你新装的系统就存在运行库没更新或者没装全的问题.出现这样的问题其实挺恼人的,具体表现就是系统经常会弹出警示框 ...
- Vagrant 入门 - 配置
原文地址 现在我们已经有了一个运行 Ubuntu 的虚拟机,并且可以在宿主机上编辑文件并自动同步到虚拟机.现在让我们安装一个 web 服务器,通过服务器访问这些文件. 可以通过 SSH 进入并安装一个 ...
- java.lang.NumberFormatException: For input string: "title"异常
java.lang.NumberFormatException: For input string: "title" at java.lang.NumberFormatExcept ...
- Springboot War包部署下nacos无法注册问题
目录 1. @EnableDiscoveryClient的使用 2. EnableDiscoveryClientImportSelector类的作用 3.AutoServiceRegistration ...
- [HDU 3625]Examining the Rooms (第一类斯特林数)
[HDU 3625]Examining the Rooms (第一类斯特林数) 题面 有n个房间,每个房间有一个钥匙,钥匙等概率的出现在n个房间内,每个房间中只会出现且仅出现一个钥匙.你能炸开门k次, ...
- [fw]Linux下tty/pty/pts/ptmx详解
基本概念: 1> tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东 ...





