Java基础重温_02:运算符、三元运算符案例(2只老虎、3个和尚)、键盘录入(Scanner类)、控制流程语句、控制流程语句案例(奇偶数、考试奖励)
摘要
Java基础重温_02:
运算符(算术运算、+操作、赋值运算、自增自减、关系运算(比较)、逻辑运算、短路逻辑运算、三元运算)
三元运算符案例(2只老虎:2个变量比较、三个和尚:3个变量比较)
键盘录入(Scanner类、三元运算符案例结合键盘录入)
控制流程语句(if结构、if…else结构、if…else…if结构)
控制流程语句案例
一、运算符
运算符是对常量或者变量进行操作的符号。
运算符表达式:通过运算符连接起来的式子
1、算术运算符
加、减、乘、除、取余/取模
- 除法(/)运算的时候,如果两个数都是整数,结果也只能保存整数部分。要有小数,必须要有小数参数运算。
- %叫做取余(取模),结果是余数。
代码示例
public class OperatorDemo01 {public static void main(String[] args) {//定义两个变量int a = 6;int b = 4;2 / 13 = 0....24/10System.out.println(a + b); //10System.out.println(a - b); //2System.out.println(a * b); //24System.out.println(a / b); //1 注意:结果是1 不是1.5 被除数以及除数都是整数,结果也是整数System.out.println(a % b); // 2 6 / 4 = 1......2//除法得到的是商,取余得到是余数6 /5 = 1.....1//整数相除只能得到整数,要想得到小数,必须有浮点数的参与System.out.println(6.0 / 4); // 1.5}
}
数据类型自动提升(算术表达式)
算术表达式中包含多个基本数据类型的时候,整个表达式的类型会自动进行提升。
因为在Java里面,进行运算的时候,只能有一种数据类型。
提升规则
- byte,short,char将被提升为int
- 整个表达式的类型自动提升到表达式中最高等级操作数同样的类型。
- 等级顺序:byte,short,char->int->long->float->double
2、+操作
字符的+操作
public class OperatorDemo02 {public static void main(String[] args) {//定义两个变量int i = 10;char c = 'A'; //'A'的值是65c = 'a'; //'a'的值是97c = '0'; //'0'的值是48System.out.println(i + c);int d = i + c; //int 类型 和 char类型进行运算 最高等级类型为intdouble e = 10 + 13.14; // int类型和 double类型进行运算 最高等级类型为double}
}
字符+操作原理
字符在进行 “+” 操作的时候,是拿字符在计算机底层对应的数值来进行计算的(通过编码表查询字符对应的底层数值)
- ‘A’ 对应的值是 65,A-Z是连续的
- 'a’对应的值是 97,a-z 是连续的
- '0’对应的值是 48,’0‘ -’9‘是连续的
编码表
计算机底层使用二进制运算,所以文字和符号必须转换成二进制数才能被计算机识别,编码表就是将文字等符号编成对应的数的表格,因为二进制记录起来比较麻烦,所以使用十进制数进行文字编码。
世界上第一张编码表ASCII(美国标准信息交换码)。常用编码表都兼容ASCII码表。
常用的编码:
ASCII编码:美国标准信息交换码,世界上第一张编码表。
GB2312编码:简体中文编码,对常用汉字进行了编码,兼容ASCII。
GBK:加强版的中文编码表,对更多汉字进行了编码,兼容ASCII
UTF-8编码:万国码表,常作为浏览器上的网页编码,可以统一显示各国文字,兼容ASCII。
字符串的+操作
public class OperatorDemo03 {public static void main(String[] args) {System.out.println("it" + "heima"); // itheimaSystem.out.println("itheima" + 666); // itheima666System.out.println(666 + "itheima"); // 666itheimaSystem.out.println("黑马" + 6 + 66); // 黑马666System.out.println(1 + 99 + "年黑马"); // 100年黑马}
}
1、当“+”操作中出现字符串时,这个“+”是字符串连接符**,而不是算术运算 ,拼接的结果是字符串。例如: “itheima”+666 ->“itheima666”
2、在“+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算符。当连续进行“+”操作时,从左往右逐个执行。 例如: 1 + 99 + “年黑马” -> “100年黑马”
小结
一个表达式里面,如果没有碰到字符串,前面的+号表示的都是算术运算符,然后,一旦碰到了字符串之后,后面的+号表示的都是拼接
4、赋值运算符
赋值运算符的特点(隐含强制类型转换)
扩展的赋值运算符隐含了强制类型转换
5、自增自减运算符
自增运算符:变量本身+1
++
自减运算符:变量本身-1
--
使用格式
++和–可以直接放在变量的前面或者后面。
放在前面叫前自增/前自减
放在后面叫后自增/后自减
//后自增/后自减
a++;
a--;//前自增/前自减
++a;
--a;
自增自减独立运算、与其他操作数运算的区别
自增自减独立运算时
前自增与后自增没有任何的区别。
int a = 10; a++;System.out.println(a); //11 ++a;System.out.println(a); //12
自增自减与其他操作数运算时区别
后自增/自减: 先给别人去使用,然后再自增/自减。
int a = 10;
int b = a++;
System.out.println(a); //11
System.out.println(b); //10
前自增/自减: 先自增/自减,然后再给别人去使用
int a = 10;
int b = ++a;
System.out.println(a); //11
System.out.println(b); //11
6、关系运算符(比较运算符)
等于、不等于、大于、大于等于、小于、小于等于。
运算的结果要么是true 要么是false
符号 | 名称 | 说明 |
---|---|---|
== | 等于 | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!=(!非) | 不等于 | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | 大于 | a>b,判断a是否大于b,成立为true,不成立为false |
>= | 大于等于 | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | 小于 | a<b,判断a是否小于b,成立为true,不成立为false |
<= | 小于等于 | a<=b,判断a是否小于等于b,成立为true,不成立为false |
“==”与“=”的区别
“==”表示的是判断两个值是否相等,
“=”表示的是赋值
7、逻辑运算符
逻辑与、逻辑或、逻辑异或、逻辑非
作用:连接关系表达式,或连接布尔类型的常量和变量
运算结果要么是true 要么是false
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
8、短路逻辑运算符
短路与、短路或
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | 作用和&相同,但是有短路效果 如果左边为false就不会运行右边的 |
|| | 短路或 | 作用和|相同,但是有短路效果 如果左边为TRUE 就不会运行右边的 |
逻辑运算符和短路逻辑运算符区别:
1、逻辑与&,无论左边真假,右边都要执行。
短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
2、逻辑或|,无论左边真假,右边都要执行。
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。
8、三元运算符
三元表达式的格式:
数据类型 变量名 = 判断表达式 ? 表达式1 : 表达式2
运行流程:首先计算关系表达式的值,如果是true,表达式1的值就是运算结果;如果是false,表达式2的值就是运算结果
代码示例
public class OperatorDemo {public static void main(String[] args) {//定义两个变量int a = 10;int b = 20;// 获取两个数中较小的值int min = a > b ? b : a;//int min = a < b ? a : b;}
}
注意:使用三元运算符的时候一定需要定义变量接收结果或者是直接使用结果。
二、三元运算符案例
1、两只老虎(两个变量比较)
需求
使用三元运算符去判断两只老虎的体重是否相等,其中一只老虎体重是180kg,另外一只是200kg
解题步骤
- 定义两个变量用于保存老虎的体重,单位为kg
- 用三元运算符实现老虎体重的判断,体重相同,返回true,否则,返回false。
- 输出结果
代码实现
public class OperatorTest01 {public static void main(String[] args) {//1:定义两个变量用于保存老虎的体重,单位为kg,这里仅仅体现数值即可。int weight1 = 180;int weight2 = 200;//2:用三元运算符实现老虎体重的判断,体重相同,返回true,否则,返回false。boolean b = weight1 == weight2 ? true : false;//3:输出结果System.out.println("b:" + b);}
}
2、三个和尚(三个变量比较)
需求
使用三元运算符去求三个和尚的最高身高,其中第一个和尚身高是150cm,第二个和尚身高是210cm,第三个和尚身高是165cm
解题步骤
- 定义三个变量用于保存和尚的身高,单位为cm
- 用三元运算符获取前两个和尚的较高身高值,并用临时身高变量保存起来。
- 用三元运算符获取临时身高值和第三个和尚身高较高值,并用最大身高变量保存。
- 输出结果
代码实现
public class OperatorTest02 {public static void main(String[] args) {//1:定义三个变量用于保存和尚的身高,单位为cm,这里仅仅体现数值即可。int height1 = 150;int height2 = 210;int height3 = 165;//2:用三元运算符获取前两个和尚的较高身高值,并用临时身高变量保存起来。int tempHeight = height1 > height2 ? height1 : height2;//3:用三元运算符获取临时身高值和第三个和尚身高较高值,并用最大身高变量保存。int maxHeight = tempHeight > height3 ? tempHeight : height3;//4:输出结果System.out.println("maxHeight:" + maxHeight);}
}
三、键盘录入(Scanner类)
接收键盘输入的数据要使用java里面提供的Scanner类
Scanner类使用步骤
1、导包。导包必须放在类上边
import java.util.Scanner;
2、创建对象。
Scanner sc = new Scanner(System.in); // sc 是变量名,可以改 其他的不可以改
3、接收数据。
int x = sc.nextInt()
调用的方法
接收数字:nextInt(),nextDouble(),…
接收字符串:next()
代码实现
//导包
import java.util.Scanner;
public class ScannerDemo {public static void main(String[] args) {//创建对象Scanner sc = new Scanner(System.in);//接收数据int x = sc.nextInt();//输出数据System.out.println("x:" + x);}
}
小结
1、Scanner的方法简单说明
nextlnt():只读取int值,只能读取整数类型的数据,如果输入了非整型的数据(浮点型字符串等)就会报错。
2、next()和nextLine()的区别
next():只读取输入直到空格。不能读取两个由空格或符号隔开的单词。
nextLine(): 读取输入,包括单词之间的空格和除回车以外的所有符号
更多方法查api文档
四、三个和尚升级版(结合Scanner类)
需求
使用三元运算和数据输入两个知识点完成比较三个和尚的最高身高
解题步骤
- 身高未知,采用键盘录入实现。首先导包,然后创建对象。
- 键盘录入三个身高分别赋值给三个变量。
- 用三元运算符获取前两个和尚的较高身高值,并用临时身高变量保存起来。
- 用三元运算符获取临时身高值和第三个和尚身高较高值,并用最大身高变量保存。
- 输出结果。
代码实现
import java.util.Scanner;public class ScannerTest {public static void main(String[] args) {//身高未知,采用键盘录入实现。首先导包,然后创建对象。Scanner sc = new Scanner(System.in);//键盘录入三个身高分别赋值给三个变量。System.out.println("请输入第一个和尚的身高:");int height1 = sc.nextInt();System.out.println("请输入第二个和尚的身高:");int height2 = sc.nextInt();System.out.println("请输入第三个和尚的身高:");int height3 = sc.nextInt();//用三元运算符获取前两个和尚的较高身高值,并用临时身高变量保存起来。int tempHeight = height1 > height2 ? height1 : height2;//用三元运算符获取临时身高值和第三个和尚身高较高值,并用最大身高变量保存。int maxHeight = tempHeight > height3 ? tempHeight : height3;//输出结果。System.out.println("这三个和尚中身高最高的是:" + maxHeight +"cm");}
}
五、控制流程语句
顺序结构语句
从上到下按照代码的顺序去执行的语句
执行流程
代码示例
public class OrderDemo {public static void main(String[] args) {System.out.println("开始");System.out.println("语句A");System.out.println("语句B");System.out.println("语句C");System.out.println("结束");}
}
1、if 结构
格式
if(关系表达式){语句体1;
}//关系表达式,即括号最终结果为true/false
if(true){ 语句体1;
}
执行流程
- 首先计算关系表达式的值
- 如果关系表达式的值是true,就执行语句体1
- 如果关系表达式的值是false,就不执行语句体1
- 继续执行后面的语句内容
2、if…else 结构
格式
if(关系表达式){语句体1;
}else{语句体2;
}
执行流程
- 首先计算关系表达式的值
- 如果关系表达式的值是true,就执行语句体1
- 如果关系表达式的值是false,就执行语句体2
- 继续执行后面的语句内容
3、if…else…if 结构
格式
if(关系表达式1){语句体1;
}else if(关系表达式2){语句体2;
}
.....
else{语句体n + 1;
}
执行流程
- 首先计算关系表达式1的值
- 如果值为true就执行语句体1;如果值为false就计算关系表达式2的值
- 如果值为true就执行语句体2;如果值为false就计算关系表达式3的值
- .…
- 如果没有任何关系表达式为true,就执行语句体n+1。
六、控制流程练习案例
1、奇偶数案例(if…else)
需求
使用if…else的方式去判断一个整数是基数还是偶数
解题步骤
- 为了体现任意给出一个整数,采用键盘录入一个数据。(导包,创建对象,接收数据)
- 判断整数是偶数还是奇数要分两种情况进行判断,使用if…else结构
- 判断是否偶数需要使用取余运算符实现该功能 number % 2 == 0
- 根据判定情况,在控制台输出对应的内容
代码实现
import java.util.Scanner;public class IfTest01 {public static void main(String[] args) {//为了体现任意给出一个整数,采用键盘录入一个数据。(导包,创建对象,接收数据)Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数:");int number = sc.nextInt();//判断整数是偶数还是奇数要分两种情况进行判断,使用if..else结构 //判断是否偶数需要使用取余运算符实现该功能 number % 2 == 0//根据判定情况,在控制台输出对应的内容if(number%2 == 0) {System.out.println(number + "是偶数");} else {System.out.println(number + "是奇数");}}
}
2、考试奖励案例(if…else…if)
目标
使用if…else…if的结构完成考试奖励
解题步骤
- 小明的考试成绩未知,可以使用键盘录入的方式获取值
- 由于奖励种类较多,属于多种判断,采用if…else…if格式实现
- 为每种判断设置对应的条件
- 为每种判断设置对应的奖励
- 数据测试:正确数据,边界数据,错误数据
代码实现
import java.util.Scanner;public class IfTest02 {public static void main(String[] args) {//小明的考试成绩未知,可以使用键盘录入的方式获取值Scanner sc = new Scanner(System.in);System.out.println("请输入一个分数:");int score = sc.nextInt();//由于奖励种类较多,属于多种判断,采用if...else...if格式实现//为每种判断设置对应的条件//为每种判断设置对应的奖励/*if(score>=95 && score<=100) {System.out.println("山地自行车一辆");} else if(score>=90 && score<=94) {System.out.println("游乐场玩一次");} else if(score>=80 && score<=89) {System.out.println("变形金刚玩具一个");} else {System.out.println("胖揍一顿");}*///数据测试:正确数据,边界数据,错误数据if(score>100 || score<0) {System.out.println("你输入的分数有误");} else if(score>=95 && score<=100) {System.out.println("山地自行车一辆");} else if(score>=90 && score<=94) {System.out.println("游乐场玩一次");} else if(score>=80 && score<=89) {System.out.println("变形金刚玩具一个");} else {System.out.println("胖揍一顿");}}
}
Java基础重温_02:运算符、三元运算符案例(2只老虎、3个和尚)、键盘录入(Scanner类)、控制流程语句、控制流程语句案例(奇偶数、考试奖励)相关推荐
- Java基础语法(三)——运算符
文章目录 Java基础语法(三)--运算符 一.算术运算符 1.基本四则运算符 (1)练习 (2)注意事项 2.复合运算符 3.自增自减操作符 二.关系运算符 三.逻辑操作符 1.逻辑与&&a ...
- Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举
Java基础(一):编译和解释.数据类型.变量作用域.String常用方法.数组.面向对象.异常 Java基础(二):集合.IO流(Zip压缩输入/输出流等).File文件类.反射.枚举 Java异常 ...
- Java键盘录入 Scanner
Java键盘录入 Scanner 概述: 是一种功能,是jdk中Scanner类中的一种功能,可以通能过键盘录入数字和字符串的功能,这里只涉及录入int数字的功能. 使用步骤: 1.需要把别人写好 ...
- java随机生成字母用三元运算符,【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数...
为什么要进行Java常识性基础补充? 之前学习Java语言,学得很多很杂,而且是很多不同的方面插入讲解的,比如在跟班上课,自学java编程例子,java语法,过了很久,因为各种原因长时间不怎么写,有时 ...
- java基础知识点(4)——运算符与键盘录入
运算符与键盘录入 文章目录 运算符与键盘录入 运算符 一.运算符分类 1.算数运算符 2.赋值运算符 3.比较运算符 4.逻辑运算符 5.位移运算符 6.三元运算符 7.自增自减运算符 二.键盘录入 ...
- 02 Java基础语法(变量+数据类型+运算符)
Java基础语法 2 基础语法 2.1 二进制(复习总结) 进制转换(二进制 八进制 十进制 十六进制) 2.2 变量 2.2.1 变量定义 2.2.2 使用变量 2.2.3 声明变量的3种方式 2. ...
- JAVA入门级教学之(三元运算符)
/* 三元运算符/三目运算符/条件运算符 1.语法规则: 布尔表达式?表达式1:表达式2; true 执行表达式1 false 执行表达式2 */ public clas ...
- Java基础语法之变量、运算符、流程控制、数组和方法等基础语法
变量.运算符.流程控制.数组和方法等基础语法.Java程序的执行流程,符合Java语法规则的程序. 1.1.1 Java初识 对Java进行简单介绍,Java程序如何执行,以及Java程序的结构. J ...
- java if 三目运算符_if-else和三元运算符的不同行为
我在VS2010-SP1中有下面的类,三元运算符和if-else似乎对getname方法下面的代码有不同的工作方式 template class StringBuf{ public: StringBu ...
最新文章
- 链表问题9——复制含有随机指针节点的链表(初阶)
- idea 设置springboot 热部署
- 控件与布局(WPF)
- kubernetes资源控制与及ingress插件安装(容忍策略)
- CSS实现垂直居中的常用方法
- DCMTK:使用dcmimage库将DICOM图像转换为PPM或PGM
- Enterprise Library 企业库 V4.1
- python批量解压文件_python 批量解压压缩文件的实例代码
- 超炫jQuery测试答题功能
- Unity 协程原理探究与实现
- 用分布式缓存提升ASP.NET Core性能
- 在Swing和Swt中使用JavaFX
- 解决MySQL Workbench导出低版本MySQL时报错Unknown table ‘column_statistics’ in information_schema的问题
- matlab生成低通滤波,用matlab设计低通滤波器
- opencv之图片处理看这一篇就够了(一)
- python在工程造价的作用_工程预算的意义何在
- 利用SolidWorks解决方案取得健身器材市场的领先地位!
- 浏览器连不上 Flink WebUI 8081 端口
- 白细胞直方图C语言,白细胞三分群及其直方图
- 中国顶级富豪沉浮录:财富常青树之谜与大败局规律
热门文章
- 编程基础的第十五课——异常和文件
- Java中的Spec
- 高屋建瓴脚踏实地 洗心革面重新做人
- java中package_java 中 package 是什么?
- 深度解析用户画像标签体系构建方法
- python中哪些是无序_关于无序集合:无序集合 – 在python中设置
- ios13全选手势_苹果手机双指、三指等操作手势,升级iOS13之后,居然多了这么多新操作?...
- 量子力学中,全体自然数之和是负十二分之一,物理意义是什么?
- 使用计算机正确坐姿,一种计算机正确使用坐姿纠正装置的制作方法
- SpringMVC参数值的传递(参数接收,数组接收,模型接收,多个模型接收以及数据回显,批量操作)