Java中的基本数据类型

来源:互联网 发布:淘宝怎么批量上架宝贝 编辑:程序博客网 时间:2024/06/15 22:20

1、数据类型
这里写图片描述
这里写图片描述

2、数据类型的转换:
①默认转换(从小精度到大精度)
 ●byte,short,char—>int—>long—>float—>double
  注意:
    long:8字节
    float:4字节
    为何默认转换却把long转成float呢?
    原因如下:
    A.它们底层的存储结构不同
    B.float表示的数据范围比long的范围要大
      long: 2^63 - 1
      float: 3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 >2^63-1
    
 ●byte,short,char相互之间补转换,他们参与运算首先转换为int类型
 如图:
 
②强制转换(从大精度到小精度)
  目标类型 变量名=(目标类型)(被转换的数据);
③boolean类型不能转换为其他的数据类型

④面试题:
 题一:
   byte b1=3,b2=4,b;
   b=b1+b2;
   b=3+4;
   哪句是编译失败的呢?为什么呢?
  
  答案:
   b=b1+b2 编译报错
   b=3+4 编译通过
   因为b1、b2是byte类型的值,两个byte值相加的时候系统会先把b1、b2的值转换成int类型,然后再实现加法运算。这样得到的结果依旧是int型,在赋值给b的时候就会出现报错,这里会丢失精度。
   而3+4中,3和4都是常量,常量的加法是先计算出结果,然后看结果是否在byte的范围内,如果在就不报错,如果不再就不报错。因此这里并不会报错。
   
 题二:
   byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?

  答案:有问题,会出现编译出错。因为byte的范围是-128~127,130超出了这个范围,所以会报错。
     想让赋值正确就必须使用强制类型转换,及 byte b = (byte) 130 ;
     输出结果:-126
     分析原因:
      A:要知道在计算机中运算都是以补码进行的,因此首先要知道130的二进制表示。因为130是整型常量,因此使用4位二进制数表示,即
        00000000 00000000 00000000 10000010
           因为130是正数,因此其原码反码补码相同。
      B:强制转换要做截取操作,截成byte类型,即一个八进制位:
        10000010
         这个结果是补码,是一个负数。
     C:已知补码求原码:
           符号位    数值位
       补码: 1      0000010
       反码: 1      0000001
       原码: 1      1111110
       由上可得:b = -126
  

3、字符数据和字符串参与运算
由以下代码即可看出端倪:

System.out.println("hello"+'a'+1); //helloa1System.out.println('a'+1+"hello"); //98helloSystem.out.println("5+5="+5+5); //5+5=55System.out.println(5+5+"=5+5"); //10=5+5

从代码和结果可以看出,字符串数据和其他数据做+,结果是字符串类型。这里的+不是加法运算,而是字符串连接符。

  面试题:Java语言中的字符char可以存储一个中文汉字吗?为什么?

    答:可以,因为java语言中字符占两个字节。
    
    注:Java语言采用的是Unicode编码

0 0
原创粉丝点击