运算符(1)


运算符

算数运算符

在Java中,使用算术运算符+、-、*、/表示加、减、乘、除运算。当参与/运算的两个操作数都是整数时,表示整数除法运算;否则,表示浮点除法。整数的求余操作(取模)用%表示。

例如:15/2等于7,15%2=1,15.0/2=7.5

ps:整数被0除会产生异常,而浮点数被0除将会得到无穷大或NaN结果

运算符

算数运算符

在Java中,使用算术运算符+、-、*、/表示加、减、乘、除运算。当参与/运算的两个操作数都是整数时,表示整数除法运算;否则,表示浮点除法。整数的求余操作(取模)用%表示。

例如:15/2等于7,15%2=1,15.0/2=7.5

ps:整数被0除会产生异常,而浮点数被0除将会得到无穷大或NaN结果

数值类型之间的转换

下图表示数值之间的转换关系

查看源图像

图中的6个实线箭头表示无信息丢失的转换;另外有3个虚线箭头表示有精度丢失的转换

例如:一个lint类型的整数123456789,将这个数转换为float类型时,将会得到正确的大小,但会损失一些精度

 int num = 123456789;
 float f = (long)num;//f = 1.23456792E8

当用一个二元运算符连接两个数时(例如 a + b),先要将两个数的类型转换为同一个类型,然后在进行运算

  • 如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型,最后的结果也就是double类型
  • 否则,如果两个操作数中有一个是float类型,另一个操作数就会转换为float类型,最后的结果也就是float类型
  • 否则,如果两个操作数中有一个是long类型,另一个操作数就会转换为long类型,最后的结果也就是long类型
  • 否则,两个操作数都将被转换为int类型

自动转换和强制转换

类型优先级:byte—>short—>char—>int—>long—>float—>double

double d = 6;//int-->double  自动类型转换

int i = (int)6.5;//double--->int  强制类型转换 (强转)
//i = 6(精度缺少)

优先级小的转为优先级大的:自动转换

优先级大的转为优先级小的:强制转换

强制转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟变量或者变量名

public class TestVar10{
        public static void main(String[] args){ 
                //在同一个表达式中,有多个数据类型的时候,应该如何处理:
                //多种数据类型参与运算的时候,整数类型,浮点类型,字符类型都可以参与运算,唯独布尔类型不可以参与运算。
                //double d2 = 12+1294L+8.5F+3.81+'a'+true;
                double d2 = 12+1294L+8.5F+3.81+'a';
                System.out.println(d2);//将d2打印在控制台上
                /*
                当一个表达式中有多种数据类型的时候,要找出当前表达式中级别最高的那个类型,然后
                其余的类型都转换为当前表达式中级别最高的类型进行计算。
                double d2 = 12+1294L+8.5F+3.81+'a';
                          = 12.0+1294.0+8.5+3.81+97.0
                */
                int i2 = (int)(12+1294L+8.5F+3.81+'a');//因为右边自动转换为double类型,所以要强转为int类型              	   
                //以下情况属于特殊情形:对于byte,short,char类型来说,只要在他们的取值范围中,赋值的时候就不需要进行
                //强转了直接赋值即可。
                byte b = 12;
                System.out.println(b);
                byte b2 = (byte)270;
                System.out.println(b2);            
        }
}

本文章参考Java核心卷1

写在最后

作为Java初学者,发博客的主要目的是为记录自己的学习过程,帮助自己更好的巩固基础,也希望这些小的知识点可以为友友们带来一点帮助,如果有说的不对的地方,欢迎大家在评论区指出。

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/245345.html

(0)
上一篇 2022年4月18日
下一篇 2022年4月18日

相关推荐

发表回复

登录后才能评论