运算符
注意!boolean(布尔类型)是不能进行数学运算的
四则运行算符和取模
什么是四则运算符和取模,它的关键字是?
四则运算符和取模用来对变量进行数学运算。
取模是: %,它跟除法类似,但是除法只输出结果的整数,不输出结果的余数,而取模是输出结果的余数(如果没有余数则输出为0),不会输出结果的整数。
注意!在java程序中除法,他得出的结果只会拿整数,剩下的余数不会打印输出。
四则运算符和取模: | |
---|---|
加 | + |
减 | - |
乘 | * |
除 | / |
取模 | % |
演示
class test{
public static void main(String[] args){
//常量
System.out.println(1 + 1);//2
//变量和常量
int a = 1;
System.out.println(a + 1);//2
//变量和变量
int b = 2;
System.out.println(a + b);//3
System.out.println(a - b);//-1
//除法和取模
int c = 10;
int d = 3;
System.out.println( c / d);//3
System.out.println( c % d);//1
}
}
运算符的优先级
-
当变量进行运算的时候它有一个优先级,() 在java云算力是优先级最高的一个,所以只要知道有括号程序就会先算括号里面。
class test{
public static void main(String[] args){
//优先级对比
int a = 3;
int b = 5;
int c = 7;
System.out.println(b + (a * c));//26
System.out.println(b + a * c);//26
System.out.println((b + a) * c);//56
}
}
-
当数据类型范围小的变量和数据类型范围大的变量进行运算时,数据类型范围小的变量类型会自动的转换为数据类型范围大的变量类型。
class test{
public static void main(String[] args){
//拿byte/short/char类型来说
byte a = 1;
short b = 2;
char c = 'A';
//那个数据类型范围最大?char
//char result = a + b + c;//错误
//System.out.println(result);
int result = a + b + c;
System.out.println(result);//68
/*
result 是 int类型
当程序运行时会把 a + b + c 的结果算好,就会把结果赋值到result里面。
int result = (a + b + c)结果;
*/
}
}
注意!
-
当 byte/short/char 发生了数学运算,那它们都会先被提升为:int类型,然后再进行计算 , 所以接收的数据类型必须是int或者更大的数据类型。
-
当char类型发生了数学运算会是一个特殊的类型,它和int类型的关系表是:ASCII、Unicode。
ASCII表和char类型
-
当char类型进行类数学运算,那么字符会按照ASCII表里面的规则翻译成为一个数字。
ASCII码表:
我们不需要背 ASCII码表,我们只需要知道再程序中的:a , A, 0。
a == 97
A == 65
0 == 48
加法的多种用法
-
数学运算。
-
char类型提升为int。
-
String(“”)连接操作。
class test{
public static void main(String[] args){
/*
字符串基本使用:String 变量名称 = "数值";
*/
String str = "HelloWorld";
System.out.println(str);//HelloWorld
//String的连接操作
String str2 = "java";
//方式1:
System.out.println(str + str2);//HelloWorldjava
//方式二:
String str3 = str + str2 + "。";
System.out.println(str3);//HelloWorldjava。
}
}
练习
-
不用乘法符号(*) 计算 2x16
自增自减运算符
什么是自增自减运算符,它们的关键字是?
自增
前自增:先让一个变量 加(+1),然后再打印输出。
后自增:先打印输出一个变量,然后再让一个变量 加(+1)。
自减
前自减:先让一个变量 减(-1),然后再打印输出。
后自减:先打印输出一个变量,然后再让一个变量 减(-1)。
注意!当自增或者自减单独使用的时候前自增/自减 和 后自增/自减 效果是一样的,都是【先加后输出】,但如果是混合使用的则上面就是规则。
自增自减运算符 | |
---|---|
自增: | 前++(前自增),++后(后自增)。 |
自减: | 前--(前减),--后(后自减)。 |
演示
class test{
public static void main(String[] args){
//单独使用
int num = 1;
num++;//加1
num--;//减1
++num;//加1
--num;//减1
System.out.println(num);//1
//混合使用
int num2 = 2;//2
int num3 = ++num2;//前自增:先让一个变量 加(+1),然后再打印输出.num2 == 3, num3 == num2
System.out.println(num2++);//后自增:先打印输出一个变量,然后再让一个变量 加(+1)。 num2 == 3
System.out.println(num3);// num3 == num2, num2 == 3
System.out.println(num2);//因为后自增,num2 == 4
//自减也一样
}
}
注意事项
-
boolean类型是不能发生数学运算。
练习
-
int i = 1;
int j = ++i + i++ + ++i + ++i + i++;
问 j的结果是多少?
-
int i = 1;
i+=++i;
心算i的值是?
赋值运算符
什么是赋值运算符,它的关键字是?
赋值运算符是【把右边的数值赋值给左边的变量名】。
基本赋值运算符 | |
---|---|
= | 等于号 |
复合赋值运算符
复合赋值运算符 | ||
---|---|---|
+= | 加等号 | a += 1 等于 a + 1; |
-= | 减等号 | b -= 2 等于 b - 2; |
*= | 乘等号 | c *= 3 等于 c * 3; |
/= | 除等号 | d /= 5 等于 d / 5; |
%= | 莫等号 | e %= 6 等于 e % 6; |
演示
class test{
public static void main(String[] args){
//等于号
int num = 1;
//复合赋值运算符
int num1 = 3;
num1 += 4;
System.out.println(num1);//7
/*
num1 = 3
num1 +=4;
3 += 4
3 += 3 + 4
结果:7
其他的也一样
*/
}
}
注意事项
-
常量不能进行赋值。
比较运算符
什么是比较运算符,它的关键字是?
比较运算符使用来比较数值的,如果成立则是true,如果不成立则是false。
比较运算符 | |
---|---|
== | 比较符号两边数值是否相等,相等结果是true,不相等结果为false |
< | 比较符号左边的数值是否小于右边的数值,如果小于结果是true,反之false |
> | 比较符号左边的数值是否大于右边的数值,如果大于结果是true,反之false |
<= | 比较符号左边的数值是否小于或者等于右边的数值,如果小于结果是true,反之false |
>= | 比较符号左边的数值是否大于或者等于右边的数值,如果大于结果是true,反之false |
!= | 比较符号两边数值不相等,相等结果是false,不相等结果为true |
演示
class test{
public static void main(String[] args){
//比较数据是否相等:==
System.out.println(1 == 1);//true
System.out.println(1 == 2);//false
//大于,小于,大小等于和不等于比较:<、>、<=、>=、!=
int num = 1;
int num2 = 2;
System.out.println(num <= num2);//false
int num3 = 3;
System.out.println(++num2 >= num3);//true,因为相等
System.out.println(--num2 != num3);//true.因为不相等,num2 == 2, num3 == 3
}
}
注意事项
-
在程序中是不允许这样写:1 < x < 3;
-
== 是相等, = 是赋值
逻辑运算符
什么是逻辑运算符,它的关键字是?
逻辑运算符是用来连接若干个boolean值的。
逻辑运算符 | 关键字 | 解释 |
---|---|---|
与(并且) | && | 全都是true,才是true;否则就是 false |
或(或者) | || | 至少一个是true,就是true;全都是 false,才是 false |
非(取反) | ! | 本来是true,变成 false;本来是 false,变成true |
演示
class test{
public static void main(String[] args){
boolean boo1 = true;
int num1 = 2;
int num2 = 3;
//与(&&)
System.out.println(boo1 == true && ++num1 == num2);//true
System.out.println(boo1 == true && (++num1 - num2) == (--num2+1));//false
// 1 == 3
//或(||)
System.out.println(boo1 == true || ++num1 == --num2);//true
System.out.println(boo1 == false || (++num1 - num2) == (--num2+1));//fasle
// 0 == 3
//非(!)
System.out.println(boo1 == true );//true
System.out.println(!boo1 == true );//fasle
int x = 2;
//之前的问题:1 < x < 3
System.out.println(1 < x && x < 3);//true
}
}
三元运算符
什么是三元运算符?
三元运算符是需要三个数据才可以进行操作的运算符。
格式:
数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B;
流程:
首先判断条件是否成立
如果成立为true,那么将表达式A的值赋值给左侧的变量; 如果不成立为fa1se,那么将表达式B的值赋值给左侧的变量
演示
class test{
public static void main(String[] args){
//格式创建:数据类型 变量名称=条件判断?表达式A:表达式B;
int a = 1;
int b = 2;
//如果成立为true,那么将表达式A(true)的值赋值给左侧的变量;
//如果不成立为fa1se,那么将表达式B(false)的值赋值给左侧的变量
boolean num = a < b? true : false;
System.out.println(num);//true
//如果成立为true,那么将表达式A(a)的值赋值给左侧的变量;
//如果不成立为fa1se,那么将表达式B(b)的值赋值给左侧的变量
int num2 = a > b? a : b;
System.out.println(num2);//2
}
}