一 算术运算符
1.运算符和表达式
运算符
就是对常量或者变量进行操作的符号
表达式
用运算符把常量或者变量连接起来的,符合Java语法的式子就是表达式。
比如:a + b
2.算术运算符
加减乘
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo1 {
public static void main(String[] args) {
//+
System.out.println(3+2);
//-
System.out.println(4-1);
//*
System.out.println(7*8);
}
}
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo1 {
public static void main(String[] args) {
//+
System.out.println(3+2);
//-
System.out.println(4-1);
//*
System.out.println(7*8);
//如果计算有小数
System.out.println(1.1+1.2);
System.out.println(1.1-1.01);
System.out.println(1.1*1.2);
}
}
如果有小数参与,可能是不精确的
除法取模
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo2 {
public static void main(String[] args) {
//除法
System.out.println(10/2);
System.out.println(10/3);
System.out.println(10.0/3);
//取模
System.out.println(10%2);
System.out.println(10%3);
}
}
1.整数相除结果只能得到整除,如果结果想要是小数,必须要有小数参数。
2.小数直接参与运算,得到的结果有可能是不精确的。
练习 数值拆分
需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
公式:
获取任意一个数上每一位数。
个位:数字 % 10
十位:数字 / 10 % 10
百位:数字 / 100 % 10
千位:数字 / 1000 % 10
。。。以此类推。。。
package com.itheima.test;
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
//键盘录入
Scanner sc=new Scanner(System.in);
System.out.println ("请输入一个三位数:");
int number=sc.nextInt();
//获取个位 十位 百位
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.隐式转换
数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算。
概念:
也叫自动类型提升。
就是把一个取值范围小的数据或者变量,赋值给另一个取值范围大的变量。此时不需要我们额外写代码单独实现,是程序自动帮我们完成的。
两种提升规则:
-
取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。
-
byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。
取值范围从小到大的关系:
byte short int long float double
2.强制转换
概念:
如果要把一个取值范围大的数据或者变量赋值给另一个取值范围小的变量。是不允许直接操作。
如果一定要这么干,就需要加入强制转换。
书写格式:
目标数据类型 变量名 = (目标数据类型)被强转的数据;
简单理解:
要转成什么类型的,那么就在小括号中写什么类型就可以了。
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo3 {
public static void main(String[] args) {
byte b1= 100;
byte b2= 127;
byte result = (byte)(b1+b2);
System.out.println(b1+b2);
System.out.println(result);
}
}
我们发现结果发生错误 因为要转换的数据过大
三 字符串的+操作
1.数字相加
2.字符串相加
-
当+操作中出现字符串时,此时就是字符串的连接符,会将前后的数据进行拼接,并产生一个新的字符串。
-
当连续进行+操作时,从左到右逐个执行的。
package com.itheima.test;
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
//键盘录入
Scanner sc=new Scanner(System.in);
System.out.println ("请输入一个三位数:");
int number=sc.nextInt();
//获取个位 十位 百位
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);
}
}
3.字符相加
规则:
当+操作中出现了字符,会拿着字符到计算机内置的ASCII码表中去查对应的数字,然后再进行计算。
例子
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo3 {
public static void main(String[] args) {
char c = 'a';
int result = c + 0;
System.out.println(result);
}
}
四 自增自减运算符
1.使用方式:
-
放在变量的前面,我们叫做先++。 比如:++a
-
放在变量的后面,我们叫做后++。 比如:a++
2.注意点:
不管是先++,还是后++。单独写在一行的时候,运算结果是一模一样的。
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo4 {
public static void main(String[] args) {
//++ --
int a=10;
a++;
System.out.println(a);
++a;
System.out.println(a);
a--;
System.out.println(a);
--a;
System.out.println(a);
}
}
package com.itheima.arithmeticoperator;
public class ArithmeticoperatorDemo5 {
public static void main(String[] args) {
int x=10;
int y=x++; //x=11,y=10
int z=++x; //x=12,z=12
System.out.println("x:"+x);
System.out.println("y:"+y);
System.out.println("z:"+z);
}
}
五 赋值运算符和关系运算符
1.赋值运算符
+=
package AssigningoperatorDemo1;
public class AssigningoperatorDemo1 {
public static void main(String[] args) {
int a=10;
int b=20;
a +=b; //a=a+b
System.out.println(a);
System.out.println(b);
}
}
强制转换
short s=1;
s+=1;
System.out.println(s);
前面说short类型会转换为int类型
但是这里会有强制转换,就是会把计算出来的结果又变成short类型 主要看要赋给值的那个变量是什么类型
这等同于 s= short(s+1)
2.关系运算符
package com.itheima.compareoperator;
public class CompareoperatorDemo1 {
public static void main(String[] args) {
//==判断左右两边是否相等
int a=10;
int b=10;
int c=20;
System.out.println(a==b);
System.out.println(a==c);
}
}
例题
您和您的约会对象在餐厅里面正在约会。
键盘录入两个整数,表示你和你约会对象衣服的时髦度。(手动录入0~10之间的整数,不能录其他)如果你的时髦程度大于你对象的时髦程度,相亲就成功,输出true。否则输出false
package com.itheima.test;
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入我们衣服的时髦度:");
int myfashion = sc.nextInt();
System.out.println("请输入对象衣服的时髦度;");
int girlfashion = sc.nextInt();
boolean result = myfashion > girlfashion;
System.out.println(result);
}
}
六 逻辑运算符
1.& 与
System.out.println(true&true);
System.out.println(false&false);
System.out.println(true&false);
System.out.println(false&true);
2. | 或
System.out.println(true|true);
System.out.println(false|false);
System.out.println(true|false);
System.out.println(false|true);
3. ^异或
System.out.println(true^true);
System.out.println(false^false);
System.out.println(true^false);
System.out.println(false^true);
4.!取反
System.out.println(!true);
System.out.println(!false);
七 短路逻辑运算符
1.&&
System.out.println(true&&true);
System.out.println(false&&false);
System.out.println(true&&false);
System.out.println(false&&true);
2.||
System.out.println(true||true);
System.out.println(false||false);
System.out.println(true||false);
System.out.println(false||true);
3.短路效果
package com.itheima.logicoperator;
public class LogicoperatorDemo2 {
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);
}
}
这里a先自增,变成11,然后与5做比较
得到false
此时已经能得到结果为false 因为&&的左边已经是false
所以无需比较右边,就会进行短路 b不会自增
4,例子
数字6是一个真正伟大的数字,键盘录入两个整数。
如果其中一个为6,最终结果输出true.如果它们的和为 6的倍数。
最终结果输出true。其他情况都是false,
package com.itheima.test;
import java.util.Scanner;
public class test3 {
public static void main(String[] args) {
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 ;
2.计算规则:
-
计算关系表达式的值。
-
如果关系表达式的值为真,那么执行表达式1。
-
如果关系表达式的值为假,那么执行表达式2。
3.注意点:
三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来。
package com.itheima.ternaryoperator;
public class TernaryoperatorDemo1 {
public static void main(String[] args) {
int number1=10;
int number2=20;
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) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一只体重");
int weight1=sc.nextInt();
System.out.println("请输入第二只体重");
int weight2=sc.nextInt();
String result=weight1==weight2?"相同":"不同";
System.out.println(result);
}
}
一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm。
请用程序实现获取这三个和尚的最高身高。
ctrl+alt+l 自动格式化代码
package com.itheima.test;
public class test4 {
public static void main(String[] args) {
int height1 = 150;
int height2 = 210;
int height3 = 165;
int temp = height1 > height2 ? height1 : height2;
int max = temp > height3 ? temp : height3;
System.out.println(max);
}
}
九 运算符优先级
在Java中涉及了很多的运算符,每一种运算符都有各自的优先级。但是这些优先级不需要记忆。
咱们只要知道其中一点:
小括号优先于所有。