强制类型转换,也成为""显示类型转换":
当把大范围类型的数值或变量赋给另一个小范围类型变量时,此时系统不能自动完成转换,需要加上强制转换符,但这样的操作可能造成数据精度的降低或溢出,所以使用时要格外注意.
这就好比把两斤水容器里面的水倒入一斤水容器里面,是可能造成水溢出的.
强制类型转换,可能造成溢出和精度损失的.
数据类型强制转换
public class TypeConvertDemo
{
public static void main(String[] args)
{
float F2 = (float)D1;//double强制转换float类型
System.out.println(F2);
double D2 = 3.1415926;//声明一个double小数类型3.1415926
int IN2 = (int)D2;//double类型强制转换为int类型
System.out.println(IN2);//值为3,损失了小数的精度
//-------------------------
//把double类型和byte类型的和,赋值给int类型变量IN3
int IN3 = (int)(D2 + b1);
System.out.println(IN3);
//整数常量,默认是int类型
//把int类型常量赋值给byte类型的变量
byte by = 125;
System.out.println(by);
//编译器发现125在byte类型范围内,底层偷偷的进行转换.
double dou = 123 + 1.4565F + 11111L + 3.14;//int + float + long + double的和 赋值给double类型变量dou
System.out.println(dou);
int IN4 = 28;
IN4 = IN4 + 5;//将IN4变量+5重新赋值给IN4;
System.out.println(IN4);//错误: 从int转换到byte可能会有损失
//注意:如果String和任意数据使用 + 连接起来,结果都是String(字符串)
}
}
表达式类型的自动提升:
image.png算数运算符
image.png运算符+ - * / %范例
public class ArithmeticOperatorsDemo
{
public static void main(String[] args)
{
//操作数
System.out.println(10 + 2);
System.out.println(10 - 2);
System.out.println(10 * 2);
System.out.println(10 / 2);
//操作字符
System.out.println('A' + 'B');
//操作字符串
System.out.println("hel" + "lo");
System.out.println(10 / 3);
System.out.println(99999 / 1000 * 1000);//注意结果为99000
//System.out.println(100 / 0);//ArithmeticException:原因: / by zero
//System.out.println(10.12 / 0);// Infinity 正无穷大
//System.out.println(-10.12 / 0);// Infinity 负无穷大
System.out.println(0.0 / 0.0);//NaN Not a Number.
//NaN,自己都不等于自己
double a = 0.0 / 0.0;
System.out.println(a == a);//false
System.out.println(10 % 3);//取余,值为1.
}
}
运算符++ -- 详解
//++和--的问题
public class ArithmeticOperatorsDemo2
{
public static void main(String[] args)
{
/*
++ 前置情况:
a++
前置++是a变量+1之后再运算
++ 后置情况:
++a
后置是a变量+1,用a原始的值去运算+1
*/
int a1 = 5;
int b1 = ++ a1;//b1 = a1 + 1
System.out.println("a1="+a1+" "+"b1="+b1);//a1=6 b1=6
System.out.println("-----------------------");
int a2 = 5;
int b2 = a2 ++;//b2 = a2(5) + 1 ;
System.out.println("a2="+a2+" "+"b2="+b2);//a2=5 b2=6
/*
-- 前置情况:
a--
前置--是a变量-1之后再运算
-- 后置情况:
--a
后置是a变量-1,用a原始的值去运算-1
*/
int a3 = 5;
int b3 = -- a3;//b3 = a3 - 1
System.out.println("a3="+a3+" "+"b3="+b3);//a3=4 b3=4
System.out.println("-----------------------");
int a4 = 5;
int b4 = a4 --;//b4 = a4(5) - 1 ;
System.out.println("a4="+a4+" "+"b4="+b4);//a4=4 b4=5
}
}
网友评论