Java基础07-基本运算符
运算符
java语言支持如下运算符
1、算术运算符:+,-,*,/,%(模运算,也是取余数),++,–
2、赋值运算符:=
3、关系运算符:>,<,>=,<=,==(java里面的等于是两个等号),!=(不等于),instance of
4、逻辑运算符:&&(与),||(或),!(非)
5、位运算符:&,|,^,~,>>,<<,>>> (了解!!!)
6、条件运算符:? :
7、扩展赋值运算符:+=,-=,*=,/=
代码示例
算术运算符(二元运算符)(除自增自减运算符)
1、加、减、乘、除的运算
//首先定义两个变量
int a = 10;
int b = 20;
//进行加减乘除运算,并输出
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b); //得到的结果是int类型,0.5最后被四舍五入,取0
System.out.println(a/(double)b); //经过类型转换后,结果为0.5
2、模运算(取余)
int a=10;
int c=21;
//取余,也叫做模运算
System.out.println(c%a); // c/a 等于 21/10 =2 .... 1
3、数据类型不一样的变量,如何加减,且输出形式是否发生改变
//定义变量
long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
//结果输出
System.out.println(a+b+c+d); //Long
System.out.println(b+c+d); //Int
System.out.println(c+d); //Int
结论:
(1)如果四个数据类型中,一个为Long,那么结果类型也为Long。如果有一个是double类型,那么结果一定是double类型。
(2)如果没有Long类型,无论数据类型中是否含有Int类型,结果都为Int类型
关系运算符(二元运算符)
说明:关系运算符的返回结果一般有两种形式:正确 错误
在java中一般用布尔值来表示
//定义变量
int a = 10;
int b = 20;
//关系运算符的使用及结果输出
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
自增自减运算符(一元运算符)
1、定义:自增自减运算符 (++ --),只需要一个变量即可计算,因此也叫做一元运算符
2、运算符的解释:
//a++ 相等于 a = a + 1 //执行完这行代码后,先给b赋值,b就等于原来a的值,再自增
//++a 相等于 a = a + 1 //执行完这行代码后,先自增,再给c赋值。
3、代码应用
//定义变量
int a = 3;
//自增自减运算符的使用
int b = a++; //a++ 相等于 a = a + 1 //执行完这行代码后,先给b赋值,b就等于原来a的值,再自增
System.out.println(a); //a++执行完之后,a才会在原来的值加1
int c = ++a; //++a 相等于 a = a + 1 //执行完这行代码后,先自增,再给c赋值。
//结果输出
System.out.println(a);
System.out.println(b);
System.out.println(c);
幂运算
1、说明:幂运算使用Math工具类来操作,很多运算,我们也会使用工具类来操作!
//Math类提供了很多科学的计算方法
2、代码示例:
//如果计算2^3 2*2*2=8
double pow = Math.pow(2, 3);
//结果输出
System.out.println(pow);
逻辑运算符
1、逻辑运算符
(1)、定义:&&与(and) ||或(or) ! 非(取反)
(2)、说明:逻辑与运算:两个变量都为真,结果才为真true
逻辑或运算:两个变量有一个为真,结果才为真true
逻辑非运算: 如果是真,则变为假,如果是假,则变为真
(3)代码:
//变量定义
boolean a = true;
boolean b = false;
//结果输出
System.out.println("a && b:"+(a&&b));
System.out.println("a || b:"+(a||b));
System.out.println("! (a && b):"+!(a&&b));
2、短路运算
(1)、介绍:指的是在逻辑与运算中,如果第一个括号内的运算本身是假的,那么则直接返回假,并不会执行第二括号里的命令
(2)、代码验证:
//下面的例子则说明了,若执行了第二个括号,则C返回的会是6,而非5
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
位运算符
(1)、说明:也是“与或非”的运算,是和二进制有关的运算
位运算直接和二进制打交道,所以效率非常高!!!!
(2)、实例说明:
/*
A = 0011 1100
B = 0000 1101
-----------------------------------------------------------------------
与 A&B :如果A和B上下相对两个数值(每一位)都是1,则为1,否则为0。 这是根据位的运算
此时结果为 A&B=0000 1100
或 A/B :如果A和B对应位都是0,则结果为0,否则为1
此时结果为:A/B=0011 1101
抑或 A^B :如果A和B对应位的值相同,则为0,否则为1
此时结果为:A^B=0011 0011
取反 ~B: 对B每一位的值取反
此时结果为 1111 0010
*/
(3)、与位运算有关的常见面试题
//题目:2*8如何计算最快?
//解析:2*8=16 可以改写成 2*2*2*2
//两个位运算符的定义:<< >> 左移 右移
<<左移 相当于对数字*2
>>右移 相当于对数字/2
//采用位运算计算上面的题目
System.out.println(2<<3);
/*在二进制中
0000 0000 0
0000 0001 1
0000 0010 2 2往左移一位变为4
0000 0011 3
0000 0100 4 4往左移一位变为8
0000 1000 8 8往左移一位变为16
0001 1000 16
*/
扩展赋值运算符
1、说明:
a+=b; //a=a+b
a-=b; //a=a-b
2、代码:
//变量定义
int a = 10;
int b = 20;
//扩展赋值运算符
a+=b; //a=a+b
a-=b; //a=a-b
//结果输出
System.out.println(a);
字符串连接符
1、说明:+
2、如果+的前面出现字符串String类型,那么就会把后面的操作处都转换成String类型并进行连接
3、代码
//字符串连接符 + 如果+的前面出现字符串String类型,那么就会把后面的操作处都转换成String类型并进行连接
System.out.println(a+b);
System.out.println(""+a+b); //""代表空的字符串
4、面试题
//面试题:下面两个有什么区别?
//如果String在前面,则把后面的当作字符串,如果String类型在后面,则前面的仍然进行计算。
System.out.println(""+a+b);
System.out.println(a+b+"");
结论:(1)、如果+的前面出现字符串String类型,那么就会把后面的操作处都转换成String类型并进行连接
(2)、如果String在前面,则把后面的当作字符串,如果String类型在后面,则前面的仍然进行计算。
三元运算符(条件运算符)
1、说明:
x ? y : z
//如果x==true,则结果为y,否则,结果为z
2、代码
int score = 80;
String type = score <60 ?"不及格":"及格"; //必须掌握
System.out.println(type);