Java基础-2、浮点数、类型转化、关系运算及优先级
Java基础-2、浮点数、类型转化、关系运算及优先级
1、整数与整数运算结果一定是整数(去尾)
2、整数与浮点数运算结果一定是浮点数
public static void main(String[] args) {
// TODO Auto-generated method stub
int c;
Scanner in=new Scanner(System.in);
c=in.nextInt();
int f;
f=(int)((c-32)*(5.0/9));//华氏温度转化为摄氏温度
System.out.println(f);
}
千万要小心5/9的结果为0
1、强制类型转换优先级高于算术运算
Java的隐式类型转换只能把字节数少的转为多的。平级也不能默认类型转换,如int 和float
int a=(int)40/3.5//error.因为强制类型转换只作用于40了
//把double赋值给int是错误的
以后在编程时用的最多的就是double和int,因为小数默认为double,加f才是float。
这与cpp是严重不同的
2、单目取正、单目取负优先级高于其它运算符
3、连续赋值是自右向左的
4、字符串是可以+数字的,结果是字符串,这一技巧有利于简化输出
字符串是引用类型,为什么还存在运算符呢?
为什么没有引入string类,可以直接输出字符串呢?(甚至是输出字符串相加的字符串)
关系运算符
等于、不等于、大于、小于
大于等于、小于等于
所有关系运算符的优先级小于算术,但大于赋值运算符
关系运算的结果是true或false,boolean类型不能和其它数据比大小,但Cpp中可以(我要赶紧忘了Cpp,其实Java更合理,true和false是判断,和数据有毛的关系,Java中true和1什么关系都没有)
整数可以和浮点数比大小
浮点数之间不要直接比大小(尤其是不要直接用==来判断两个浮点数是否相等,那百分之八九十不相等)。因为浮点数计算是有误差的
public static void main(String[] args) {
// TODO Auto-generated method stub
double a=1.0;
double b=0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1;
System.out.println(a==b);//false
System.out.println(Math.abs(a-b)<1e-6);//true
}
Java基础-2、浮点数、类型转化、关系运算及优先级相关教程