java数据类型

java数据类型

1. 整型

    整型有三张表示方式:

  • 10进制 :int i = 10;
  • 8进制   :int i = 013;
  • 16进制 :int i = 0xaF;

2. 字符型

    字符型有四种表示方式:

  • 单个字符     : char c = ‘a’;
  • 转义字符     : char c = ‘\n’;
  • unicode编码: char c = ‘\u9999’;
  • int            : char c = 97;

3. 浮点型

     浮点型有两种表示方式:

  • 10进制数    : 5.123
  • 科学计数法  : 5.123E2

public class FloatTest {
 
 
    public static void main(String[] args) 
    {
        //浮点型数据必须包含小数点,否则会当作int处理
        //浮点型默认是double型的,默认是64位的,所以定义float类型是,必须在最后加f表示float型
        float f = 5.0f;
        float af = 5.123456789f;
        double df = 5.12345678987654321;
        //浮点数是使用二进制数据的科学计数法表示,所以不可能精确表示一个浮点数.下面将看到的值已经发生了改变
        System.out.println("af="+af);
        System.out.println("df="+df);
        //result:af=5.123457,df=5.123456789876543
        double a = 0.0;
        double c = Double.NEGATIVE_INFINITY;
        float d = Float.NEGATIVE_INFINITY;
        //看到float和double的负无穷大的是相等的。
        System.out.println(c == d);
        //0.0除以0.0将出现非数
        System.out.println(a / a);
        //两个非数之间是不相等的
        System.out.println(a / a == Float.NaN);
        //所有正无穷大都是相等的
        System.out.println(6.0 / 0 == 555.0/0);
        //负数除以0.0得到负无穷大
        System.out.println(-8 / a);
        
        System.out.println(0.0 / 0.0);
        //result:NaN
 
        //下面代码将抛出除以0的异常
        System.out.println(0 / 0);
        
    }
}

4. 布尔型

    只能是"true"或"false",不能和其他基本数据类型相转换

5. 类型转换

   a. 自动类型转换

数据范围小的变量或数值可以直接赋给数据范围大的变量或数值,系统可以自动转换

   b. 强制类型转换

        类似将一个大瓶子的水倒入一个小瓶子中,如果大瓶子中的水过多,将可能导致溢出.

     代码清单:强制类型转换

 
public class Conversion {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        /*
         * int是32位的,例如233:
         *     0000 0000 0000 0000 0000 0000 1110 1001
         * 将int赋给byte,byte是8位的,所以会将前面的24截取掉,变成了
         *                                1110 1001
         *  整数在计算机中是以补码的形式保存的,正数的补码和原码相同,负数的补码是原码取反加1,最高位不变.所以
         *  11101001                               
         *     | 减1,成反码
         *  11101000
         *     | 取反成原码
         *  10010111 也就是-23
        */
        int intValue = 233;
        byte byteValue = (byte)intValue;
        System.out.println(byteValue);
        
        double doubleValue = 3.98;
        int intValue1 = (int)doubleValue;
        System.out.println(intValue1);
    }
 
}

你可能感兴趣的:(java数据类型)