算术,赋值,比较,逻辑运算符,移位,三目(元)运算符
运算符
算术运算符 (+,-,*,/,%,++,--)
赋值运算符 (=,+=,-=,*=,/=,%=,&=,|=,^=,>>=,<<=)
比较(关系运算符) (==,<,>,<=,>=,!=):运行的结果为boolean类型
逻辑运算符 &,|,^,!,&&,||:用于连接左右两边都是布尔值或布尔表达式
位运算符: (针对的是二进制)&,|,^,~,>>,<<,>>>
三目(元)运算符 ------返回的一定是结果值
算术运算符(+,-,*,/,%,++,--)
字符常量或者字符变量与其他相加会转成对应的编码值,除了boolean,引用类型
class test{ public static void main(String[] args){ int a = 10; char c = 'a'; //输出为 107,c转化为编码值进行相加 //字符常量或者字符变量与其他相加会转成对应的编码值,除了boolean,引用类型 System.out.println(a+c); } }
+(字符串拼接符),见到字符串时才拼接
除(/)
如果参与运算的数都是整数,结果就是整数
class test{ public static void main(String[] args){ //输出结果为0 System.out.println(2/3); } } class test{ public static void main(String[] args){ //输出结果为0.6666666... System.out.println(2*1.0/3); } }
ArithmeticException -----算术异常
class test{ public static void main(String[] args){ //ArithmeticException -----算术异常 System.out.println(2/0); } }
Java允许除小数除0
class test{ public static void main(String[] args){ //运行结果为Infinity----正无穷大 //分子不变,分母无限趋向于0,则接近无限 System.out.println(1.0/0); //运行结果为-Infinity----负无穷大 System.out.println(-1.0/0); //运行结果为NaN---------不是一个数 System.out.println(0.0/0); } }
取余(%):取余结果的正负号与取余符号左边值的正负号一致
class test{ public static void main(String[] args){ //结果为-3 System.out.println(-3%-6); } }
++,--:单独操作,参与运算
class test{ public static void main(String[] args){ int a=1; //如果++或--在操作数之前,先自加/减,再传值 System.out.println(++a); //如果++或--在操作数之后,先传值,再自加/减 System.out.println(a++); } }
赋值运算符(=,+=,-=,*=,/=,%=,&=(按位与等),|=(按位或等),^=(按位异或等),>>=(右移等),<<=(左移等))
class test{ public static void main(String[] args){ byte a=1; a+=2 //与a=(byte)(a+2)等价,底层会进行强转 System.out.println(a); } }
比较(关系运算符)(==,<,>,<=,>=,!=):运行的结果为boolean类型
逻辑运算符(&:逻辑与,|:逻辑或,^:逻辑异或,!:逻辑非,&&:短路与,||:短路或):用于连接左右两边都是布尔值或布尔表达式
^:逻辑异或—----相同结果为(true true,false false)false,结果不同(true false)结果为true
&&:只有左边为true时,才继续向下执行,如果左边结果值为false,结果就为false,右边默认不执行
&:先执行语句再进行判断
||:只有左边为false时,才继续执行,如果左边结果值为true时,结果就为true,右边默认不执行。
|:先执行语句再进行判断
当&&和||同时出现: true&&false||true 先看true,再看false,看true&&false,再看true
移位运算符:(针对的是二进制)
移位运算符:(针对的是二进制)
需要将数据转成二进制的补码形式才能进行运算
class test{ public static void main(String[] args){ int a=5; //&(按位与),遇0则0 //用于:1&任意整数==1,这个整数为奇数,一个正数&任意数==值,这个值为正数 System.out.println(a&2); // 结果 0 //|(按位或),遇1则1 System.out.println(a|2); //结果 7 //^(按位异或),相同则0,不同则1 //a^a==0,a^b^a=b,一个整数。按位异或其他整数两次,结果就是他本身 //作用:可以用于两个数据值的交换 a=a^b b=a^b a=a^b System.out.println(a^2); //结果 7 //~(按位取反,包括符号位) System.out.println(~a); //结果 -6 } }
交换两个整数
按位异或(只能针对整数):a=a^b ;b=a^b ;a=a^b
求和(一般适用于整数):a=a+b;b=a-b;a=a-b;
效率:按位异或>求和>中间变量(开发中常用适用于任意数据)
(右移)>>,<<(左移),>>>(无符号右移),移动的位数,先对32位取余,余数就是要移动的位数
右移(>>):如果是正数,右移几位就在最左边加上几个0,如果是负数就在最左边加上几个1
左移(<<):无论正负数,左移几位就在最右边加上几个0
无符号右移(>>>)::无论正负数,右移几位就在最左边加上几个0
class test{ public static void main(String[] args){ int a = -12; System.out.println(a>>2); //结果 -3 System.out.println(a<<2); //结果 -48 System.out.println(a>>>2); //结果 1073741821 } }
三目(元)运算符------返回的一定是结果值
格式:
表达式?表达式1:表达式2;
执行流程:
先计算出表达式的值,如果是true,则返回表达式1,如果是false,则返回表达式2
键盘录入
步骤
1.导包: import java.util.Scanner;
2.获取Scanner: Scanner sc = new Scanner(System.in);
3.获取数据:
int num = sc.nextInt();
String s = sc.next();
System.out.println(num+s);