java基础--------运算符与类型转换

运算符

  运算结果 低精度向高精度靠拢  如  Long+float=double

  常量整形默认 int    没有声明数据类型的整形默认为int     如:  123  在编译器会默认将它识别为(int)123

  常量实型默认 double  。。。              如 1.2345  。。。  double (1.2345)

    Short i=3; i=i+1;   丢失精度   ----> short 变量=short 变量  +(int)1

运算符优先级

优先级:++ 变量名    >    =    >    变量名++  

前自增的优先级比赋值符高,赋值符比后自增的优先级高;

C=++b; 分解  b=b+1; -->c=b;

C=b++; 分解  c=b; -->b=b+1;

(1)算术运算符

正号+    负号-     加号+     减号-     乘号*    除号/   取模%

前自增++  后自增++    前--  后--    字符串连接符+

 

(2)赋值运算符

=    +=   -=  *=   /=   %=

 

(3)比较运算符

>   >=   <  <=   ==  !=

 

(4)逻辑运算符

& :true&true ->true

... ->false

| :false|false ->false

... ->true

^ :false^true ->true

... ->false

! : !false ->true

!true ->false

&和&&,| 和 || 的区别

&和 | 先判断符号左右两边真假后得出结果

&&和 || 先判断符号左值判断真假后考虑是否直接得出结果

(5)三目运算符

(条件)? (语句1) : (语句2)

!!!三目运算符的运行结果是一个常量,不能直接当成语句结束换行

(6)其他运算符

位运算符,位移运算符 等等

类型转换

(1)。自动转换(隐式转换):系统自动转换

      低精度向高精度进行转换

(2)。强制转换(显式转换):手动转换

      高精度向低精度进行转换

Byte ->short  -> int  -> long   ->  float ->  double  

    short  -> int  -> long   ->  float ->  double

         int  -> long   ->  float ->  double

              long   ->  float ->  double

                    float ->  double

            隐式转换

               反向即显示转换

这里就有个问题:为什么64位的long型可以转换为32位的float的浮点型呢?

   博主刚刚查阅的深入理解java虚拟机,原话是64位的long和double在java虚拟机中占两个局部变量空间,而其他数据类型只占用一个。

   so 这个问题貌似还没有解决,有能解决的大神也欢迎来指点一二。

强转会丢失精度

32位转16位时,如果32位的数据类型中存放的16位数,在强转的时候情况如下

    +0000000000000001111111111111111    ----->这是一个32位整型数的二进制存放形式,前16位是1

  -1111111111111111 ->强制转换后16位数  ------>这是转换后的16位数,符号位+对应的0  -对应的1就不重复了

   

     都知道Short的取值范围是-2的15次方到2的15次方-1,在强制转换的过程中32位整形的前十六位会丢失,而刚好符号位在转换前是有数据的。

        so 你看到的转换前是一个正的整型数 在转换后变成了一个负的短整型。

时间: 2024-07-30 10:17:06

java基础--------运算符与类型转换的相关文章

JavaScript3基础——运算符和类型转换

JavaScript3基础--运算符和类型转换    JavaScript运算符    JavaScript运算符也称操作符.其作用是对目标数据进行运算操作. 基本数学运算符    + - * / %  分别为加,减,乘,除,求模(求余数)    加减乘除不再赘述,此处解释一下求模    eg: var a = 10%20  //10    eg: var a = 15%4   //3    求模运算较为常见的地方在于处理时间.    如下 199秒换算为几分几秒.    199/60 为分钟数

java基础 运算符

算数运算符 加号:在操作数值.字符.字符串时其结果是不同的,当两个字符相加得到的是ASCII码表值, 当两个字符串相加时表示将两个字符串连接在一起,从而组成新的字符串. 除号:整数在使用除号操作时,得到的结果仍为整数(小数部分忽略),当整数除以0的时候,会引发算术异常. 正无穷大(Infinity):当一个正浮点类型数除以0时,或者正整数除以0.0时; 负无穷大(-Infinity):当一个负浮点类型数除以0时,或者负整数除以0.0时; NaN(Not a Number):当0.0除以0.0时;

Java基础——运算符

一.赋值运算符 在前面的学习中,用到最多的是什么呢?就是“=” .例如:int money=1000;   //储存本金 使用“=”将数值1000放入变量money的存储空间中.“=”称为赋值运算符. “=”可以将某个数值赋值给变量,也可以将一个变量赋值给另一个变量,或者是将某个表达出赋值给变量.表达式就是符号(如加减号)与操作数(如b.3等)的组合. 1 public class Score{ 2 public static void main(String[] args){ 3 double

java基础02 数据类型转换

一.回答问题 float f1 = 6.66f; float f2 = (float) 6.67; f1==f2? /** * * @author sun * */ public class Demo { public static void main(String[] args) { float f1 = 6.67f; float f2 = (float) 6.66; System.out.println(f1-f2); System.out.println(f1==f2); } } 输出:

java基础之数据类型转换

在写java程序时,经常会遇到需要数据类型转换,下面我们来介绍一些一些基本数据类型之间的转换. 1.int,folat,double,boolean,long 转换成字符串,其实很简单只需使用一个函数即可,如下 String.valueOf(types) //types 可以是以上类型的数据,也可以是object 类型 2. 字符串转换为 int,folat,double,boolean,long类型(一般用到的场景是我们在配置文件定义了一个属性值为整型,读出来时如果要和数字做比较,就需要转换)

黑马程序员——java基础--运算符、位操作

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- <pre name="code" class="java">public class test{ public static void main(String args[]){ byte b = 3; b = b + 2; System.out.println(b); } } 这段代码输出结果是错的,因为byte占一个字节,没有定义的整数2占4位,b+

java基础----&gt;运算符及其优先级

一.运算符 1)'/'  除法运算符 a) 如果是两个整数相除,只取整数商,如7/2=3 b) 如果是和浮点数相除,则取浮点数为商,如7/2F=3.5 2)自增,自减运算符"++""--" a) 使用自增或自减运算符的操作数必须是整数或者浮点数,char以及 boolean型的数不可以使用"++""--" 3)比较运算符,注意这些运算符的操作数的可取类型 4)逻辑运算符&&.&.|| .! a) 这些逻

Java 基础运算符

++ , --运算符的使用: 单独使用: 放在操作数的前面和后面效果一样 参与运算操作 : 放在操作数前面,先自增或自减再赋值 放在操作数后面,先赋值再自增或自减

Java基础—运算符与引用数据类型Scanner、Random

运算符是用来计算数据的符号.数据可以是常量,也可以是变量.被运算符操作的数我们称为操作数. 1.操作数参与数学计算: 运算符 运算规则 范例 结果 + 正号 +3 3 + 加 2+3 5 + 连接字符串 “中”+“国” “中国” - 负号 int a=3;-a -3 - 减 3-1 2 * 乘 2*3 6 / 除 5/2 2 % 取模 5%2 1 ++ 自增 int a=1;a++/++a 2 -- 自减 int b=3;a--/--a 2 2.赋值运算符: 运算符 运算规则 范例 结果 = 赋