概述
1.算术运算符 :
知识点:算数运算符的基本使用
+、-、*、/、%、++、-- //+、-、*、/ int num1 = 10; int num2 = 5; int result = num1 + num2; System.out.println(result);//15 System.out.println(num1 - num2);//5 System.out.println(10 * 5);//50 System.out.println(10 / 5);//2 System.out.println(10 % 3);//1 //++a:先自增1,再使用 int a = 10; System.out.println(++a);//11 System.out.println(a);//11 //d--:先使用,在自减1 int d = 10; System.out.println(d--);//10 System.out.println(d);//9
知识点:深入算数运算符
+、-、*、/、%、++、--
案例一:byte类型做运算,会向上转型成int
byte b1 = 10;
byte b2 = 20;
//10 - byte - 8位:0000,1010
//10 - int -32位:0000,0000,0000,0000,0000,0000,0000,1010
//20 - byte - 8位:0001,0100
//20 - int -32位:0000,0000,0000,0000,0000,0000,0001,0100
//30 - int -32位:0000,0000,0000,0000,0000,0000,0001,1110
//30 - byte - 8位:0001,1110
byte result = (byte)(b1+b2);
System.out.println(result);
案例二:short类型做运算,会向上转型成int
short s1 = 10;
short s2 = 20;
short result = (short)(s1+s2);
System.out.println(result);
案例三:描述下列计算结果的类型
byte b = 10;
short s = 10;
int i = 10;
long l = 10;
float f = 1.1F;
double d = 2.2;
System.out.println(b+s);//int类型
System.out.println(i+s);//int类型
System.out.println(l+s);//long类型
System.out.println(i+l);//long类型
System.out.println(i+f);//float类型
System.out.println(i+d);//double类型
案例四:浮点类型不能直接做运算,要做运算会使用BigDecimal(大数值运算类)
double d1 = 0.5;
double d2 = 0.4;
System.out.println(d1-d2);//0.09999999999999998
案例5:'a'的ASCII是97
char c = 'a';
System.out.println(c+1);//98
经典面试题一:输出结果为?
int a = 8;
int b = (a++)+(++a)+(a*10);
System.out.println(b);//118
//a = 10
//b = 8 + 10 + 10
经典面试题二:输出结果为?
int i = 0;
i = ++i;
//底层原理:
//i = (int)(i+1);
//i = i;
System.out.println(i);//1
int i = 0;
i = i++;
//底层原理:
//int temp = i;--temp用于记录i最初的值
//i = (int)(i+1);
//i = temp
System.out.println(i);//0
扩展1:
byte b = 10;
++b;//底层:b = (byte)(b+1);
short s = 10;
++s;//底层:s = (short)(s+1);
int i = 10;
++i;//底层:i = (int)(i+1);
long l = 10;
l++;//底层:l = (long)(l+1);
扩展2:
int i = 10;
i++; //++i;
System.out.println(i); //11
//++i; 和 i++; 没有区别,因为分号是一条执行语句的结束标志,不管先加还是后加都会加1
2. 赋值运算符:
知识点:赋值运算符
=、+=、-=、 *=、/= 、 %=
int i = 10;
i += 10; //i = (int)(i+10);
i -= 10; //i = (int)(i-10);
i *= 5 ; //i = (int)(i*5);
i /= 5 ; //i = (int)(i/5);
i %= 3 ; //i = (int)(i%3);
System.out.println(i);//1
经典面试题一:输出结果为?
//一次性声明多个变量
int a,b;
a = b = 100;//把100赋值给b,b再赋值给a
System.out.println(a);//100
System.out.println(b);//100
经典面试题二:下面的两种写法结果分别是?
short s=1;
s = s+1;//报错:short类型的变量s与int类型的数字1做运算的结果是int类型
short s=1;
s += 1;//s = (short)(s+1);
赋值规则:
s + = 1
s = (T)((s) + (1) )
复合赋值 E1 op= E2等价于简单赋值 E1 = (T)((E1)op(E2)),
其中T是E1的类型。
3.关系运算符:
注意:
- 关系运算符的结果都是boolean类型,即true或false
- 不要将 == 用成 =
知识点:关系运算符
==、!=、>、>=、<=
System.out.println(10 == 10);//true
System.out.println(10 != 10);//false
System.out.println(10 > 10);//false
System.out.println(10 >= 10);//true
System.out.println(10 < 10);//false
System.out.println(10 <= 10);//true
总结:
1.=是赋值号,==是判断两个值是否相等
2.关系运算符运算的结果都是boolean值
经典面试题一:输出结果为?
int x = 10;
int y = 10;
boolean flag = (x == y);
System.out.println(flag);//true
flag = (x = y);//报错:boolean不能与其他类型兼容
System.out.println(flag);
经典面试题二:输出结果为?
boolean b1 = true;
boolean b2 = false;
boolean b3 = (b1 == b2);
System.out.println(b3);//false
boolean b4 = (b1 = b2);
System.out.println(b4);//false
4.逻辑运算符
知识点:逻辑运算符
&与
&&短路与
|或
||短路或
^异或
!非
// &与:运算符两边都是boolean值,同时成立(true),结果才为true
System.out.println(true & true);//true
System.out.println(true & false);//false
System.out.println(false & true);//false
System.out.println(false & false);//false
// &&短路与:运算符两边都是boolean值,同时成立(true),结果才为true
// & vs && (通过除数为0来判断)
&:判断前者为false后,会继续判断后者
&&:判断前者为false后,不会判断后者,所以效率更高
//ArithmeticException - 算数类异常
System.out.println(false && 10/0>5);
// |或:运算符两边都是boolean值,有一个成立(true),结果就为true
System.out.println(true | true);//true
System.out.println(true | false);//true
System.out.println(false | true);//true
System.out.println(false | false);//false
// ||短路或:运算符两边都是boolean值,有一个成立(true),结果就为true
// | vs ||(通过除数为0来判断)
|:判断前者为true,还会继续判断后者
||:判断前者为true,不会判断后者,所以效率更高
System.out.println(true || 10/0>5);
// ^异或:运算符两边都是boolean值,相同为false,不同为true
System.out.println(true ^ true);//false
System.out.println(true ^ false);//true
// !非 - 置反
boolean bool = true;
System.out.println(!bool);//false
知识点:逻辑运算符的案例
//在dos窗口输入一个数字,判断是否在50~100的区间内
//1.输入一个int数字
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个int值:");
int num = scan.nextInt();
//2.判断是否在50~100的区间内
boolean bool = num>50 && num<100;
//3.输出结果
System.out.println("该值是否在50~100的区间内:" + bool);
5.三目运算符/三元运算符
扩展: 知识点:Scanner类的使用
含义:Java给我们提供的一个类,这个类的功能就是在控制台输入数据
//创建Scanner类的对象
Scanner scan = new Scanner(System.in);
//调用方法
int i1 = scan.nextInt();//在控制台输入一个int数据
int i2 = scan.nextInt();//在控制台输入一个int数据
double d = scan.nextDouble();//在控制台输入一个double数据
String str = scan.next();//在控制台输入一个String数据
知识点:三目运算符/三元运算符
语法:
数据类型 变量 = (表达式)?值1:值2;
理解:
表达式的结果必须是boolean类型
true - 将值1赋值给变量
false- 将值2赋值给变量
例:
int num = (false)?10:20;
System.out.println(num);//20
案例1:在控制台输入两个int类型的数字,输出最大值
//创建Scanner类的对象scan
Scanner scan = new Scanner(System.in);
//输入两个数字
System.out.println("请输入第一个数字:");
int a = scan.nextInt();
System.out.println("请输入第二个数字:");
int b = scan.nextInt();
//判断大小
int max = (a>b)?a:b;//判断a是否大于b,如果大于就返回a,否则返回b
//输出最大值
System.out.println("最大值为:" + max);
案例2:在控制台输入三个int类型的数字,输出最大值
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int a = scan.nextInt();
System.out.println("请输入第二个数字:");
int b = scan.nextInt();
System.out.println("请输入第三个数字:");
int c = scan.nextInt();
int max = (a>b)?a:b;
max = (max>c)?max:c;
System.out.println("最大值为:" + max);
案例4:在控制台输入三个int类型的数字,由小到大输出
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int a = scan.nextInt();
System.out.println("请输入第二个数字:");
int b = scan.nextInt();
System.out.println("请输入第三个数字:");
int c = scan.nextInt();
//获取最大值
int max = (a>b)?a:b;
max = (max>c)?max:c;
//获取最小值
int min = (a<b)?a:b;
min = (min<c)?min:c;
//获取中间值
int mid = a+b+c-max-min;
System.out.println(min + "<" + mid + "<" + max);
知识点:深入三目运算符
扩展面试题1:
int a = 5;
System.out.println((a<5)?10.9:9);//9.0
扩展面试题2:
char x = 'x';//'x' - ASCII - 120
byte i = 10;
System.out.println(false?i:x);//120
扩展面试题3:
char x = 'x';//'x' - ASCII - 120
System.out.println(false?100:x);//x
System.out.println(true?97:x);//a
System.out.println(false?65536:x);//120
三目运算符返回值规则:
1.值1和值2都是常量 或 都是变量的情况,就会按照运算时数据类型的取值范围大的类型返回数据
2.值1是常量,值2是变量的情况,值1是否在值2所属类型的取值范围里
在,就按照值2类型返回数据
不在,就按照值1类型返回数据
6.字符串拼接符
知识点:字符串拼接符 +
+两侧都是数值: 此符号为算术运算符
+有一侧或者两侧是字符串: 则此符号为字符串拼接符
System.out.println(1+2+"abc" + "def" +1+2);//3abcdeef12
7.位运算符
知识点:位运算符
&与 |或 ^异或
<< 左移
>> 右移
>>>无符号位右移
含义:将十进制的数据转换为二进制再进行运算
// &:同位比较,两者为1,结果才为1
byte b1 = 23;//0001,0111
byte b2 = 25;//0001,1001
//23 byte - 0001,0111
//23 int - 0000,0000,0000,0000,0000,0000,0001,0111
//25 byte - 0001,1001
//25 int - 0000,0000,0000,0000,0000,0000,0001,1001
//17 int - 0000,0000,0000,0000,0000,0000,0001,0001(运算结果)
//17 byte - 0001,0001
byte result = (byte)(b1 & b2);
System.out.println(result);//17 - 0001,0001
// |:同位比较,两者有1,结果就为1
byte b1 = 23;//0001,0111
byte b2 = 25;//0001,1001
System.out.println(b1 | b2);//31 - 0001,1111
// ^:同位比较,两者相同为0,不同为1
byte b1 = 23;//0001,0111
byte b2 = 25;//0001,1001
System.out.println(b1 ^ b2);//14 - 0000,1110
&、|、^:运算符两边都是数值时,该符号为 位运算符
&、|、^:运算符两边都是boolean值,该符号为 逻辑运算符
// <<:整体向左移动n位,就用n个0补位
byte b1 = 10;//0000,1010
System.out.println(b1 << 2);
// >>:整体向右移动n位,就用n个最高位补位
byte b1 = 10;//0000,1010
//10 int:0000,0000,0000,0000,0000,0000,0000,1010
//2 :0000,0000,0000,0000,0000,0000,0000,0010
System.out.println(b1 >> 2);
byte b2 = -10;//1111,0110
//-10 int:1111,1111,1111,1111,1111,1111,1111,0110
//-3 :1111,1111,1111,1111,1111,1111,1111,1101
System.out.println(b2 >> 2);
//>>>:整体向右移动n位,就用n个0补位
byte b1 = 10;//0000,1010
//10 byte:0000,1010
//10 int:0000,0000,0000,0000,0000,0000,0000,1010
//2 :0000,0000,0000,0000,0000,0000,0000,0010
System.out.println(b1 >>> 2);
byte b2 = -10;//1111,0110
//-10 byte:1111,0110
//-10 int:1111,1111,1111,1111,1111,1111,1111,0110
//1073741821:0011,1111,1111,1111,1111,1111,1111,1101
System.out.println(b2 >>> 2);
//注意:>> 和 >>> 如果是操作整数,效果是一样的
经典面试题1:使用最有效率的方式计算2*8
System.out.println(2<<3);
经典面试题2:描述下列代码的输出结果
//-1 int:1111,1111,1111,1111,1111,1111,1111,1111
//(byte):1111,1111
//(char):1111,1111,1111,1111 -- char类型向上转型用0补位
//(int) :0000,0000,0000,0000,1111,1111,1111,1111
System.out.println((int)(char)(byte)-1);//65535
8.表达式
知识点:表达式
5+6:算术表达式
5>6:关系表达式
true & false:逻辑表达式
9.运算符的优先级别
经验:不用记,灵活运用小括号
转义字符&常量
知识点:转义字符
含义:具有特殊意义的字符本身 n:表示换行 ":表示一个双引号 ':表示一个单引号 \:表示一个斜杠 t:表示水平制表 System.out.print("用良心做教育n"); System.out.print("用良心做教育n"); System.out.println("何老师说:"用良心做教育""); System.out.println("何老师说:'用良心做教育'"); System.out.println("何老师说:\用良心做教育\"); System.out.println("3*3=9t3*4=12t3*5=15"); System.out.println("4*3=12t4*4=16t4*5=20");
知识点:常量
含义:在程序执行过程中不可变的量
分类:
1.数字字面量(ps:69、100、200)
2.字面值常量(ps:"abcd"),即为字符串
3.final(最终的)修饰的变量
final int i = 100;//i为常量,值为100
字面值常量和final(最终的)修饰的变量:存储在常量池中,直到项目结束才会被销毁
最后
以上就是秀丽水池为你收集整理的运算符及使用的全部内容,希望文章能够帮你解决运算符及使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复