zoukankan      html  css  js  c++  java
  • 基本数据类型

     java中数据类型

     整数默认:int    

    小数默认:double

    基本数据类型取值范围

    整型

    byte	Byte	[-2^7~2^7-1]	1个字节		8位35B
    short	Short	[-2^15~2^15-1]	2<span style="font-family: Arial, Helvetica, sans-serif;">个字节			16位35S
    int	Integer	[-2^31~2^31-1]	4个字节		32位35
    long	Long	[-2^63~2^63-1]	8个字节		64位35L
    

    浮点型

    float	Float	[1.401298e-45~3.402823e+38]	4个字节
    double	Double	[4.9000000e-324~1.797693e+308]	8个字节
    

    char占两个字节,boolean占一位:

    默认转换

    byte,short,char——>int——>long——>float——>double;          byte,short,char相互之间不转换,他们参与运算首先转换为int类型 ;

    强制转换 :把大的类型转换成小的类型

    目标类型 变量名=(目标类型)(被转换的数据);

    相关题目

    1、下面的语句是否有问题?

    byte b1 = 3, b2 = 4;
    
    byte b3 = b1 + b2; //语句1
    
    int b4 = b1+b2; //语句2
    
    byte b5 = 3+4; //语句3

    解答:语句1会报错,因为b1和b2作为变量参与运算的时候,会先提升为int类型,然后将int类型的结果赋值给byte,可能会丢失精度,所以报错;

    语句2没有问题,因为是把int结果给int,类型匹配;

    语句3正确,因为3和4是常量,所以编译器编译的时候,会计算出结果,然后判断结果是否在byte的范围内,在的话就不会报错,如果咱们反编译class文件,会发现这一句变成了byte b5=7;

    结论:变量参与运算会先做类型提升,而常量会直接计算后判断类型是否匹配;

    2、下面这两个表示有没有问题,有什么区别?

    解答:

    float f1 = (float)12.345;
    
    float f2 = 12.345F;

    都没有问题,第一种相当于先定义了一个double类型常量,然后截取了后四个字节得到了f1,第二种是直接定义float,建议定义第二种。

    3、byte b = 130 有没有问题?

    解答:有,因为超出了范围;

    如果如下修改:

    byte b = (byte)130;
    
    System.out.println(b);

    结果为:-126,

    分析:

    A: 把130转换成二进制为:10000010,因为是int类型4个字节,所以结果因为是:

    00000000 00000000 00000000 10000010 这个是130的原码,也是反码,也是补码;

    B: 截取成byte类型的,结果为: 10000010,这个是结果的补码,我们需要转换成原码:

    符号位 数值为

    补码: 1 0000010

    反码: 1 0000001 补码上减1

    原码: 1 1111110 把反码各位反过来

    接下来把11111110转换成10进制,结果为-126;

    4、为什么long会自动转换成float?

    解答:float虽然是4个字节,long是8个字节,但是底层存储方式不同,所以float能表示的范围比long大

    5、JAVA中char能够表示一个汉字?

    解答:能,因为JAVA中char是两个字节;

  • 相关阅读:
    iOS遍历程序内某个文件夹下所有文件的属性
    CATransition 转场动画
    Xcode安装的推送证书所在目录
    UIMenuController 实现长按显示自定义菜单功能
    ios调用第三方程序打开文件,以及第三方调用自己的APP打开文件
    购物车界面,不同section,点击增减物品,确定取消选中的逻辑判断
    iOS UINavigationController
    iOS9 URL Schme 白名单
    iOS9 HTTPS
    iOS9 后台定位
  • 原文地址:https://www.cnblogs.com/WPF0414/p/9885621.html
Copyright © 2011-2022 走看看