目录
4)、补码的范围:-128~127(-128没有原码和反码)
Java中的运算符
一、运算符和表达式
1、什么是运算符
运算符就是对字面量或者变量进行操作的符号。
2、什么是表达式
用运算符把字面量或者变量连接起来,符合Java语法的狮子就可以称为表达式。
不同运算符连接的表达式体现的式不同类型的表达式。
3、算数运算符
算术运算符主要包括+、-、*、/(除法)、%(取余数)
4、算术运算符的练习题:
要求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台。
代码部分:
import java.util.Scanner;
public class chaifennumber {
public static void main(String[] args) {
//进行键盘录入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个三位数");
int number = scanner.nextInt();
//获取个位、十位、百位
int gewei = number % 10;
int shiwei = number / 10 % 10;
int baiwei = number / 100 % 10 ;
System.out.println(gewei);
System.out.println(shiwei);
System.out.println(baiwei);
}
}
结果部分:
5、算术运算符中“+”的运算
1)、数字相加
数字进行运算的时候,数据类型不一样的不能够计算,需要转成一样的才能够计算。而类型转换分为两个部分,一个是隐式转换,另一个是
●隐式转换(自动类型提升):取值范围小的数值转换成取值范围大的数值,不需要程序员单独写代码进行转换(取值范围参照笔记1第四部分数据类型中的取值范围的大小关系)。
需要注意的是:byte、short、char这三种类型的数据在运算的时候,都会先提升为int,然后再进行计算。
●强制转换:数据比较大的时候有可能会导致数据发生错误。取值范围大的数值转换成取值范围小的数值。如果把一个取值范围大的数值,赋值给取值范围小的变量是不允许直接赋值,如果需要则需要程序员自己编写代码进行强制转换。
格式:目标数据类型 变量名=(目标数据类型)被强制转换的数据,想要转成谁就在小括号中写谁。
范例:将double转换成int
double a =12.3;
Int b =(int) a;
2)、字符串的“+”操作(字符串只有加操作)
当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。会将前后的数据进行拼接,并产生一个新的字符串。当连续进行“+”操作时,从左到右逐个进行。
3)、字符的“+”操作
当字符+字符或者字符+数字的时候,会把字符通过ASCII码表(美国信息交换标准码表)查询到相应的数字再进行计算。
二、自减自增运算符
1、基本用法
注意事项:++和--既可以放在变量的前边,也可以放在变量的后边。两者单独写一行没有区别,但是进行运算的时候写在前边或者后面是会有区别的。
2、自增
1)、a++:先用后加
先把变量a中的值拿出来用,用完了再进行自增
int a = 10;
int b = a++; //把变量a中的值拿出来赋值给变量b,a再进行增加
所以最后变量b的值为10,变量a的值为11
2)、++a:先加后用
先将变量a自增,自增完后再拿出来使用
int a = 10;
int b = ++a; //先将变量a自增,再赋值给变量b
所以最后变量a和变量b的值均为11
- 自增自减运算符练习
观察以下代码,请问x、y、z分别等于多少?
public class zizengyunsaun {
public static void main(String[] args) {
int x = 10;
int y = x++;
int z = ++x;
System.out.println("x:"+ x);
System.out.println("y:"+ y);
System.out.println("z:"+ z);
}
}
答:分别为12、10、12
代码结果实现:
三、赋值运算符
赋值运算符的分类
注意:+=、-=等的底层都隐藏了一个强制类型转换
四、关系运算符(比较运算符)
1、关系运算符的分类
|
2、注意事项:
关系运算符的结果都是布尔类型,并且千万不要将“==”,误写成“=”。
3、关系运算符的练习题:
1)、观察以下代码,写出以下代码的输出结果
public class compare {
public static void main(String[] args) {
int a = 10;
int b = 30;
int y = 10;
System.out.println(a==b);
System.out.println(a==y);
}
}
结果:false true
代码结果展示:
![]() |
2)、请按以下要求写出代码。
要求:您和您的对象再餐厅约会。键盘录入两个整数,表示你和你约会对象衣服的时髦程度。(手动录入0~10之间的整数),如果你的时髦程度大于你对象的时髦程度,相亲就成功,输出true,相反就输出false。
代码:
import java.util.Scanner;
public class compare {
public static void main(String[] args) {
//1、进行键盘录入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入自己衣服的时髦程度:");
int myFashion = scanner.nextInt();
System.out.println("请输入对方的衣服的时髦程度:");
int duiFashion = scanner.nextInt();
//2、将自己的时髦程度与对方的时髦程度进行对比
boolean result = myFashion > duiFashion;
//3、将结果进行输出
System.out.println(result);
}
}
结果:
![]() |
五、逻辑运算符
1、逻辑运算符的分类
2、短路逻辑运算符
可以提高代码的运行效率。
1)、短路逻辑运算符分类
短路逻辑运算符分为两类:一个是&&(表示且),一类是||(表示或者)
2)、短路逻辑运算符的练习1:
观察以下代码,判断result、a和b的值分别为多少
public class compare {
public static void main(String[] args) {
//&&两边为真结果为真,||一边为真结果为真
int a = 10;
int b = 10;
boolean result = ++a <5 && ++b <5;
System.out.println(result);
System.out.println(a);
System.out.println(b);
}
}
答:false、11、10
原因解答:b为什么是10,而不是11
因为&&具有短路效果。&&表示两边结果都为真时结果为真,当一方条件不满足的时候,就不用判断另一方。所以当代码检查a自增后的结果不小于5后,就不用再对b进行自增,所以b是10,而不是11。
代码结果实现:
![]() |
3)、短路逻辑运算符的练习2:
根据以下要求写出对应的代码。
要求:键盘录入两个整数,当这两个整数其中有一个数为6或者两个数相加的数是6的倍数的时候输出true,相反输出false。
代码:
import java.util.Scanner;
public class compare {
public static void main(String[] args) {
//1、键盘录入两个整数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int first = scanner.nextInt();
System.out.println("请输入第二个整数:");
int scound = scanner.nextInt();
//2、判断
int sum = first+scound;
boolean result = first == 6 || scound ==6 || sum %6==0;
System.out.println(result);
}
}
代码结果展示:
六、三元运算符
1、三元运算符的格式
格式:关系表达式?表达式1:表达式2;
格式解说:当关系表达式为真就会执行表达式1,当关系表达式为假,就会执行表达式2。
范例:求两个数的较大值。a > b ? a : b;
2、三元运算符的练习:
1)、按要求写出对应代码1:
要求:使用三元运算符获取两个数的较大值。
代码:
public class compare {
public static void main(String[] args) {
//1、定义两个整数
int number1 = 20;
int number2 = 30;
//2、开始使用三元运算符
int max = number1 > number2 ? number1 :number2 ;
System.out.println(max);
}
}
代码结果展示:
2)、按要求写代码2:
要求:动物园里有两只老虎,体重分别为通过键盘录入获得,请用程序实现判断两只老鼠的体重是否相同。(结果输出不能是布尔类型,输出结果必须是相同或者是不同。)
代码:
import java.util.Scanner;
public class compare {
public static void main(String[] args) {
//1、进行键盘录入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一只老虎的体重:");
int weight1 = scanner.nextInt();
System.out.println("请输入第二只老虎的体重:");
int weight2 = scanner.nextInt();
//2、进行比较
String result = weight1 == weight2 ? "相同" : "不同";
System.out.println(result);
}
}
代码结果展示:
3)、按要求写代码3:
要求:一座寺庙里面有三个和尚,已知他们的身高分别为150cm、210cm、165cm,请用程序实现获取这三个和尚的最高身高。
代码:
public class compare {
public static void main(String[] args) {
int heshang1 = 150 ;
int heshang2 = 210 ;
int heshang3 = 165 ;
int height = heshang1 > heshang2 ? heshang1 : heshang2 ;
int max = height > heshang3 ? height :heshang3 ;
System.out.println(max);
}
}
代码结果实现:
七、运算符的优先级
1、优先级分类
![]() |
2、括号
小括号中的关系运算符优先于一切
八、原码、补码、反码
1、原码:
1)、原码:
十进制数据的二进制表现形式,最左边为符号位,0为正,1为负,如01111111就是+127,11111111就是-127。利用原码对正数进行计算是不会有问题的。
2)、原码的范围:-127~127
2、反码:
1)、反码:
为了解决原码不能计算负数的问题而出现的。
2)、计算规则:
正数的反码不变,负数的反码再原码的基础上,符号位不变。数值取反,0变1,1变0。
3)、反码的范围:-127~127
3、补码:
1)、补码:
计算机的存储和计算都是以反码的形式进行的。
2)、计算规则:
正数的补码不变,复数的补码在反码的基础上+1。正数的原码、补码、反码都是一样的。
3)、补码出现的目的:
用反码进行计算时,反码的0有两种形式一个是八个0,一个是八个1,如果用反码进行计算,跨0时就会跨两次,计算结果就会跟实际结果有一个1的误差。而补码就能完美解决负数计算的问题。