一、算数运算符详解和综合练习
1. 运算符和表达式
① 运算符:对字面量或者变量进行操作的符号
② 表达式:用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式。
③ 举例
int a = 10;
int b = 20;
int c = a + b;
+:是运算符,并且是算术运算符
a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式
2. 算数运算符
符号 | 作用 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模、取余 |
3. 样例
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo1{
public static void main(String[] args){
//+
System.out.println(3 + 2);//5
//-
System.out.println(5 - 1);//4
//*(shift + 数字8)
System.out.println(7 * 9);//63
//如果在计算的时候有小数参与
//结论:
//在代码中,如果有小数参与计算,结果有可能不精确的
//为什么呢
//暂时只要知道这个结论就可以了
//具体的原因,我们到了JavaSE的时候,会再详细的讲解
System.out.println(1.1 + 1.1);//2.2
System.out.println(1.1 + 1.0);//2.1100000000000003
System.out.println(1.1 - 1.01);
System.out.println(1.1 * 1.01);
}
}
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo2{
//主入口
//结论:
//1.整数参与计算,结果只能得到整数
//2.小数参与计算,结果可能是不精确的,如果我们需要精确计算,那么需要用到后面的知识点
public static void main(String[] args){
//除法
System.out.println(10 / 2);//5
System.out.println(10 / 3);//3
System.out.println(10.0 / 3);//3.3333333333333335
//取模,取余,实际上也是做除法运算,只不过得到的是余数而已
System.out.println(10 % 2);//0
System.out.println(10 % 3);//1
//应用场景
//1.可以用取模来判断,A是否可以被B整除
//A % B 10 % 3
//2.可以判断A是否为偶数
//A % 2 如果结果为0,那么证明A是一个偶数;如果结果是1,那么证明A是一个奇数
//三个玩家
//把每一张牌都定义一个序号
//拿着序号 %3 如果结果为1,就发给第一个玩家
//如果结果为2,就发给得二个玩家
//如果结果为0,就发给第三个玩家
}
}
4. 练习
package com.itheima.test;
import java.util.Scanner;
public class test1{
public static void main(String[] args){
//键盘录入一个三位数,获取其中的个位,十位,百位
//1.键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数");
int number = sc.nextInt();
//2.获取个位,十位,百位
//公式:
//个位:数字%10
//十位:数字/10%10
//百位:数字/10/10%10
//……
int ge = number % 10;
int shi = number / 10 % 10;
int bai = number /100 % 10;
System.out.println(ge);
System.out.println(shi);
System.out.println(bai);
}
}
二、隐式转换和强制转换
1. “+”操作的三种情况
① 数字相加
② 字符串相加
③ 字符相加
【注】数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算
2. 类型转换的分类
① 隐式转换
② 强制转换
3. 隐式转换
① 定义:把一个取值范围小的数值,转成取值范围大的数据
int a = 10;
double b = a;
② 取值范围:byte < short < int < long < float < double
③ 什么时候转换:
数据类型不一样,不能进行计算,需要转换成一样的才可以进行计算
④ 转换规则:
取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
4. 强制转换
① 如果把一个取值范围大的数值,赋值给取值范围小的变量,是不允许直接赋值的。如果一定要这么做就需要加入强制转换
② 格式:目标数据类型 变量名 =(目标数据类型)被强制转换的数据
5. 样例
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo3{
public static void main(String[] args){
byte b1 = 100;
byte b2 = 100;
//现在我们要强转的是谁
//b1 + b2计算之后的结果
//byte(b1) + b2 强转的是b1,并不是最终的结果
byte result = byte(b1 + b2);
System.out.println(result);//结果发生错误,因为要转换的数据过大
}
}
三、字符串和字符的加操作
1. 字符串的“+”操作
① 当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算数运算符了。会将前后的数据进行拼接,并产生一个新的字符串。
例如:“123”+123=“123123”
② 进行“+”操作时,从左到右逐个执行
例如:1+99+“年黑马”=“200年黑马”
③ 练习
package com.itheima.test;
import java.util.Scanner;
public class test1{
public static void main(String[] args){
//键盘录入一个三位数,获取其中的个位,十位,百位
//1.键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个三位数");
int number = sc.nextInt();
//2.获取个位,十位,百位
//公式:
//个位:数字%10
//十位:数字/10%10
//百位:数字/10/10%10
//……
int ge = number % 10;
int shi = number / 10 % 10;
int bai = number /100 % 10;
System.out.println("个位是:"+ge);
System.out.println("十位是:"+shi);
System.out.println("百位是:"+bai);
}
}
2. 字符的“+”操作
当字符+字符/数字时,会把字符通过ASCII码表查询到对应的数字再进行计算
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo4{
public static void main(String[] args){
char c = 'a';
int result = c + 0;
System.out.println(result);
}
}
四、自增自减运算符
1. 基本用法
符号 | 作用 | 说明 |
---|---|---|
++ | 加 | 变量的值加1 |
- - | 减 | 变量的值减1 |
注意事项:++和- -既可以放在变量的前边,也可以放在变量的后边
2. 两种用法
① 单独使用
++和- -无论是放在变量的前边还是后边,单独写一行结果是一样的
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo5{
public static void main(String[] args){
//++和--
int a = 10;
//表示把变量a里面的值+1
a++;
System.out.println(a);//11
//表示把变量a里面的值+1
++a;
System.out.println(a);//12
//表示把变量a里面的值-1
a--;
System.out.println(a);//11
//表示把变量a里面的值-1
--a;
System.out.println(a);//10
}
}
② 参与计算
先用后加
int a = 10;
int b = a++;
先加后用
int a = 10;
int b = ++a;
3. 样例
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo6{
public static void main(String[] args){
int x = 10;
//后++:先用后加
//先把x变量中的值拿出来用,赋值给y,然后再进行自增
//赋值给y的值是自增前的
int y = x++;// x = 11 y = 10
//先++:先加后用
//先把x进行自增,然后把自增后的结果赋值给左边的变量
//先把x自增,变成12,然后再把自增后的12赋值给z
int z = ++x;// x =12 z = 12
System.out.println("x:"+x);//12
System.out.println("y:"+y);//10
System.out.println("z:"+z);//12
}
}
五、赋值运算符和关系运算符
1. 赋值运算符
① 分类
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | int a=10,将10赋值给变量a |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | a-=b,将a-b的值给a |
*= | 乘后赋值 | a*=b,将a*b的值给a |
/= | 除后赋值 | a/=b,将a÷b的商给a |
%= | 取余后赋值 | a%=b,将a÷b的余数给a |
② 样例
package com.itheima.assigningoperator;
public class AssigningoperatorDemo1{
public static void main(){
//+=
//规则:将左边和右边进行相加,然后再把结果赋值给左边
int a = 10;
int b = 20;
//把a+b,再把结果赋值给左边的变量a
a += b;
//等同于 a = (int)(a + b);
System.out.println(a);//30
System.out.println(b);//20
//细节:
//+=,-=,*=,/=,%= 底层都隐藏了一个强制类型转换
short s = 1;
//把左边和右边进行相加,得到结果2,再赋值给左边的变量
s += 1;
//等同于:s = (short)(s + 1);
System.out.println(s);//2
}
}
2. 关系运算符
① 分类
符号 | 说明 |
---|---|
== | 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 |
注意:关系运算符的结果都是boolean类型,要么是true,要么是false
② 样例
package com.itheima.assigningoperator;
public class AssigningoperatorDemo2{
public static void main(){
//1.== 判断左右两边是否相等
int a = 10;
int b = 10;
int c = 20;
System.out.println(a == b);//true
System.out.println(a == c);//false
}
}
3. 练习
package com.itheima.test;
import java.util.Scanner;
public class Test2{
public static void main(String[] args){
/*
需求:
您和您的约会对象正试图在餐厅获得一张桌子。
键盘录入两个整数,表示你和你约会对象衣服的时髦度。(手动录入0~10之间的整数,不能录入其他)
如果你的时髦度大于你对象的时髦度,相亲就成功,输出true,否则输出false。
*/
//1.键盘录入两个整数表示衣服的时髦度
Scanner sc = new Scanner(System.in);
System.out.println("请输入我们自己的衣服时髦度");
int myFashion = sc.nextInt();
System.out.println("请输入相亲对象的衣服时髦度");
int girlFashion = sc.nextInt();
//2.把我衣服的时髦度跟女孩的时髦度进行对比就可以了
boolean result = myFashion > girlFashion;
//3. 打印结果
System.out.println(result);
}
}
六、四种逻辑运算符
1. 分类
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与(且) | 并且,两边都为真,结果才是真 |
| | 逻辑或 | 或者,两边都为假,结果才是假 |
^ | 逻辑异或 | 相同为false,不同为true |
! | 逻辑非 | 取反 |
2. 样例
package com.itheima.logicoperator;
public class LogicoperatorDemo1{
public static void main(String[] args){
//1.& 并且
//两边都为真,结果才是真
System.out.println(true & true);//true
System.out.println(false & true);//false
System.out.println(true & false);//false
System.out.println(false & false);//false
//2.| 或者
//两边都为假,结果才是假
System.out.println(true | true);//true
System.out.println(false | true);//true
System.out.println(true | false);//true
System.out.println(false | false);//false
}
}
package com.itheima.logicoperator;
public class LogicoperatorDemo2{
public static void main(String[] args){
// ^ 异或
//相同为false,不同为true
System.out.println(true ^ true);//false
System.out.println(false ^ true);//true
System.out.println(true ^ false);//true
System.out.println(false ^ false);//false
// ! 逻辑非 取反
//提示:
//取反的感叹号不要写多次,要么不写,要么只写一次
System.out.println(!false);//true
System.out.println(!true);//false
}
}
七、短路逻辑运算符
1. 分类
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | 结果和 & 相同,但是有短路效果 |
|| | 短路或 | 结果和 | 相同,但是有短路效果 |
注:& | ,无论左边 true false,右边都要执行
&& || ,如果左边能确定整个表达式的结果,右边不执行
2. 样例
package com.itheima.logicoperator;
public class LogicoperatorDemo3{
public static void main(String[] args){
//1.&&
//运行结果跟单个&是一样的
//表示两边都为真,结果才是真
System.out.println(true && true);//true
System.out.println(false && true);//false
System.out.println(true && false);//false
System.out.println(false && false);//false
//2.||
//运行结果跟单个 | 是一样的
//表示两边都为假,结果才是假
System.out.println(true || true);//true
System.out.println(false || true);//true
System.out.println(true || false);//true
System.out.println(false || false);//false
//3.短路逻辑运算符具有短路效果
//简单理解:当左边的表达式能确定最终的结果,那么右边就不会参与运行了
int a = 10;
int b = 10;
boolean result = ++a < 5 && ++b <5;
System.out.println(result);//false
System.out.println(a);//11
System.out.println(b);//10
}
}
3. 练习
package com.itheima.test;
public class Test3{
public static void main(String[] args){
/*
数字6是一个真正伟大的数字,键盘录入两个整数
如果其中一个为6,最终结果输出true
如果它们的和为6的倍数,最终结果输出true
其他情况都是false
*/
//分析:
//1.键盘录入两个整数
// 变量a 变量b
//2.a == 6 || b == 6 || (a + b) % 6 == 0
//如果满足其中一个,那么就可以输出true
//键盘录入两个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int number1 = sc.nextInt();
System.out.println("请输入第二个整数");
int number2 = sc.nextInt();
//可以短路逻辑运算符去连接三个判断
boolean result = number1 == 6 || number2 == 6 || (number1 + number2) % 6 == 0;
System.out.println(result);
}
}
八、三元运算符
1. 格式
关系表达式 ? 表达式1 : 表达式2;
int max = a > b ? a : b;
2. 计算规则
① 首先计算关系表达式的值
② 如果值为true,表达式1的值就是运算结果
③ 如果值为false,表达式2的值就是运算结果
3. 样例
package com.itheima.ternaryoperator;
public class TernaryoperatorDemo1{
public static void main(String[] args){
//需求:使用三元运算符,获取两个数的较大值
//分析:
//1.定义两个变量记录两个整数
int number1 = 10;
int number2 = 20;
//2.使用三元运算符获取两个整数的较大值
//格式:关系表达式 ? 表达式1 : 表达式2;
//整个三元运算符的结果必须要被使用
int max = number1 > number2 ? number1 : number2;
System.out.println(max);
System.out.println(number1 > number2 ? number1 : number2);
}
}
4. 练习
package com.itheima.test;
import java.util.Scanner;
public class Test4{
public static void main(String[] args){
/*
需求:动物园里有两只老虎,体重分别通过键盘录入获得
请用程序实现判断两只老虎的体重是否相同
*/
//分析:
//1.键盘录入两只老虎的体重
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一只老虎的体重");
int weight1 = sc.nextInt();
System.out.println("请输入第二只老虎的体重");
int weight2 = sc.nextInt();
//2.比较
//true false
//相同 不同
//System.out.println(weight1 == weight2);
String result = weight1 == weight2 ? "相同" : "不同";
System.out.println(result);
}
}
package com.itheima.test;
import java.util.Scanner;
public class Test5{
public static void main(String[] args){
/*
需求:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、200cm、165cm
请用程序实现获取这三个和尚的最高身高
*/
//1.定义三个变量记录三个和尚的身高
int height1 = 150;
int height2 = 210;
int height3 = 165;
//2.拿着第一个和尚和第二个和尚进行比较
//再拿着结果和第三个和尚进行比较即可
int temp = height1 > height2 ? height1 : height2;
int max = temp > height3 ? temp : height;
//ctrl + alt + L 自动格式化代码
System.out.println(max);
}
}
5. 运算符优先级文章来源:https://www.toymoban.com/news/detail-427730.html
⭐记住 () 即可文章来源地址https://www.toymoban.com/news/detail-427730.html
附:更多内容
序号 | 文章目录 | 直达链接 |
---|---|---|
1 | Java入门 | https://want595.blog.csdn.net/article/details/130318855 |
2 | Java基础概念 | https://want595.blog.csdn.net/article/details/130337370 |
3 | 运算符 | https://want595.blog.csdn.net/article/details/130358604 |
4 | 判断和循环 | https://want595.blog.csdn.net/article/details/130367081 |
5 | 数组 | https://want595.blog.csdn.net/article/details/130399064 |
6 | 方法 | https://want595.blog.csdn.net/article/details/130407188 |
7 | 面向对象 | https://want595.blog.csdn.net/article/details/130421064 |
8 | 字符串 | https://want595.blog.csdn.net/article/details/130432165 |
9 | ArrayList | https://want595.blog.csdn.net/article/details/130447360 |
到了这里,关于黑马程序员Java零基础视频教程笔记-运算符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!