加减乘除求余没什么说的了,python除法得到小数,
而java如果2个操作数都是整数,那么各种操作数的结果就是整数,而如果有一个或2个都是浮点数,那么这些操作数的结果就是浮点数
如
int a=1,b=2;
System.out.println(a/b);结果是0
int a=1;
float b=2.0f;
System.out.println(a/b);结果是0.5 (小数计算有时候因为计算机的精度问题导致结果不会特别理想,和python一样)
字符串拼接
System.out.println("aaa"+"bbb");输出aaabbb
但是
System.out.println("aaa"+13);输出aaa13,将13实现了转化为字符串
又如
System.out.println(""+13);也是将字符串转换成13的字符串输出
System.out.println("13"+13);也是将字符串转换成1313的字符串输出
计算是从左到右的
System.out.println(""+13+13);结果是1313字符串输出
System.out.println(13+""+13);也是
System.out.println(13+13+"");的结果是68的字符串,即先计算数字求和
还有字符型
System.out.println('a'+'b');输出的结果是195,因为字符是按数值考虑,结果就是ascii码值相加
自增运算符
a++;
++a;
光看结果都是a=a+1了,但是在赋值或者运行时却是有区别的,
b=a++的结果是使a赋值给b,然后语句执行完a自加1,
b=++a的结果是a自加1,然后a的值给b
其实可以理解成+的位置决定是先赋值还是先+
赋值运算符
int a=2;
int x=y=z=4;等号右边开始赋值相当于4->z->y->x的顺序,不建议这么写
a+=4;等价于a=a+4;
比较操作符
<,>,>=,<=,==,!=返回的结果是true,false
System.out.println(1>2);输出false
System.out.println('c'>'b');输出true
如果
System.out.println(a=2);则结果输出2,这是赋值语句
逻辑运算符
&&,&与,||,|或,!非,^异或
&&和&都是与,但是如果左操作数为false,&&不会再往下计算,&&也叫短路与
||和|都是或,但是如果左操作数是true,||不会往下计算,||也叫短路或
int age=80;
boolean isAudlt = age>=18;
boolean isQing = age>=25 && age<=35;(无法像python写成连式,必须用逻辑运算符相连)
System.out.println(isAudlt);
System.out.println(isQing);
原码,反码,补码
二进制原码就是二进制表示
反码正数是自身,负数除了第一个符号位不变,其他位取反,
补码正数是自身,负数是反码+1(计算机存储数据用的都是补码)
9原码int 00000000 00000000 00000000 00001001,补码,反码一样
-9原码int 10000000 00000000 00000000 00001001
反码 11111111 11111111 11111111 11110110
补码 11111111 11111111 11111111 11110111
位运算
&位与,|位或,~位取反,^位异或(符号位参与运算)
<<左移,>>右移,>>>右移(其中2个符号左移右移保留符号位,三个符号,带着符号位移动)
public class MyData{
public static void main(String[] args){
int a=-9,b=9;
System.out.println(a<<1); //-18
System.out.println(a>>1); //-5
System.out.println(a>>>1); //2147483643
System.out.println(b<<1); //18
System.out.println(b>>1); //4
System.out.println(b>>>1); //4
}
}
三元操作符
形如a?x:y a条件满足与否,是返回x,否则返回y
System.out.println(7>8?"7大于":"7不大于8");