• 基本数据类型


     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是两个字节;

  • 相关阅读:
    King's Quest
    JavaScript“并非”一切皆对象
    javascript中的style只能取到在HTML中定义的css属性
    jquery中的$(this)和this
    WEB安全字体(Web Safe Fonts)-网页设计用什么字体兼容性好?
    css各种水平垂直居中
    css绘制各种形状
    css3椭圆运动
    通过时间戳控制类
    js中的面向对象程序设计
  • 原文地址:https://www.cnblogs.com/WPF0414/p/9885621.html
Copyright © 2020-2023  润新知