--------------------------------------------------------------------------------------------------------------
运算符-算数运算符
(1)种类:+ - * / %
(2)有0的运算除法
/*
* 整数除以0= 抛出异常
* 任意非0数字/0.0 任意非零小数/0 infinity
* 0.0/0.0 0/0.0 0.0/0 --> NaN
*/
(3)保留小数
double d=45.127456;
System.out.println(String.format("%.2f",d)); //保留俩位小数 使用string的format方法
DecimalFormat df=new DecimalFormat("0.000");//保留小数格式自定义
System.out.println(df.format(d));
String str=df.format(d); //str 变成double类型
double d2=Double.parseDouble(str);//把字符串类型的数值变成响应数值型
System.out.println(d2);
}
连接符
System.out.println(3+5+"");//字符串在后当运算符
System.out.println(""+3+5);//字符串在前当连接符
System.out.println(3+""+5);//连接符
运算符-赋值运算符
赋值运算符左边必须是变量,右边可以是变量,常量,表达式 eg: x+3=r;错因为左边不可以为表达式
赋值方向:右到左赋值
强制转换,自动提升
强制转换:赋值运算符右边的比左边的大,需要强制转换 float f=(float)5.67;int r=(int)3.0+3;
byte short int long char float double 父子关系的类都可以强制转换
在变量或者表达式前面添加(强制转换的类型)
自动提升:赋值运算符右边的比左边的小,小的自动提升 float f=6;
//byte b2=b+b1; error
//有变量参与的运算,表示式最小的数据类型为int
b2+=1;//等价于b2=(byte)(b2+1)
//b2=b2+b1; error
自增自减运算符
i++/i--先赋值 后加减自增
++i/--i 先加/减 自增/自减后赋值
比较运算符
== != >= > < <=
较简答不作详细说明
逻辑运算符
逻辑与 && 左右俩边都为true 才true 有false则false
逻辑或 | | 有一个true 则true
!:取反
&& 短路:左边返回false ,右边不执行
||短路:左边返回true ,右边不执行
&和|没有短路 2&3 二进制码按位与或非
如果&&和||同时出现 且||在前 那么||左边返回true 导致短路
.二进制运算符 & | ^ ~
&(与) 2&3 ---> 010 (俩个都为1则为1 ,有0就为0)
&011
-------------------------------
010
| (或) 2|3 ---->011 (有1则为1)
^异或 2^3---->相同为0 不同为1 --->001
~ (补码运算) ~2 --->~00000010 (先补齐八位,有一个符号位)
-------------------先取反
11111101 补码
--------------------再变源码取反 符号位不变
10000011 加1 第一位是符号位1表示负号