在Java中,数据类型分为两类,一类是基本数据类型,另外一类是引用类型。

而在C#中,数据类型分为三类,分别是基元类型,值类型和引用类型。其中基元类型是.net framework框架中预定义的类型,当然,基元类型中可能包含有值类型和引用类型。下面是C#中数据类型的图示:

这一篇要总结的是java中几种基本的数据类型以及类型转换。大致分为以下几点:

1,整数类型

2,浮点数类型

3,字符类型

4,布尔类型

5,类型转换之自动转换

6,类型转换之强制转换

一,整数类型

整数类型按占用的内存空间位数不同分为4种,分别为8位的byte字节型,16位的short短整型,32位的int整型,以及64位的long长整型。我们一般用int型。

另外,整数有三种表示方法,分别是十进制,八进制和十六进制。我们一般用十进制来表示整型。

下面是例子,代码如下:

public class DataType1 {
    public static void main(String[] args) {
        final double PI = 3.14; // 声明常量用final
        int R = 5; // 声明整型
        double ymj = PI * R * R;
        System.out.print("圆的面积等于:" + ymj);
    }
}

程序输出:圆的面积等于:78.5

总结:从开头C#数据类型的图中可以看到,除了Java中定义的四种整型外,C#还新增了四种整型,分别是sbyte,ushort,uint,ulong

二,浮点数类型

浮点数一般用来表示小数。Java中浮点数分为两种,一种是32位的单精度浮点数float,另一种是64位双精度浮点数double,它们在内存中占用的位数不同,取值范围也不同。Java默认的浮点类型是double类型。所以如果使用单精度浮点型的时候需要显式加上F或者f后缀,如果是双精度浮点型的话,可以加也可以不加。示例和代码如下:

public class DataType2 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        float f = 1.2345f; // 单精度浮点类型
        double d1 = 1.234; // 双精度浮点类型,没有加后缀使用默认
        double d2 = 1.234d; // 双精度浮点型,显示加后缀
        System.out.println("单精度浮点类型数值为:" + f);
        System.out.println("双精度浮点类型数值为:" + d1);
        System.out.println("双精度浮点类型数值为:" + d2);
    }
}

程序输出:

单精度浮点类型数值为:1.2345
双精度浮点类型数值为:1.234
双精度浮点类型数值为:1.234

总结:C#在java定义的两种浮点型的基础上,新增了decimal类型。它在内存中占用128位的空间,所以它的精度更高,一般用在财务和货币计算中。

三,字符类型

字符类型一般用来表示单个字符,特别要注意的是,String类型是一个字符数组。基本与C#相同。

四,布尔类型

布尔类型一般用于判断逻辑值真假的数据类型,基本与C#相同。

五,类型转换之自动转换

因为Java和C#一样,都是强类型(即类型明确)语言,所以当遇到不同数据类型同时操作时,就需要进行数据类型转换。

自动转换有一个前提条件,就是两种数据类型要兼容,比如short和int类型是兼容的,因为它们都是整型。而boolean类型不能转换为int型,因为它们是两个不同的类型。

自动转换实际上就是将低位数转换为高位数。下面是示例和代码:

public class TypeConvert1 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        short s = 3; // 16位整数
        int i = s; // 32位整数
        float f = 1.0f; // 32位浮点数
        double d = f; // 64位浮点数
        long l = 1234l; // 64位整数
        double d2 = l;

        System.out.println("short自动转换为int后的值为:" + i);
        System.out.println("float自动转换为double后的值为" + d);
        System.out.println("long自动转换为double后的值为" + d2);
    }
}

程序输出结果:

short自动转换为int后的值为:3
float自动转换为double后的值为1.0
long自动转换为double后的值为1234.0

六,类型转换之强制转换

与自动转换刚好相反,强制转换是将高位数的数据转换为低位数的数据,当然,前提也是转换的数据类型必须兼容。

强制转换有可能会造成数据精度丢失,因为目标数据的数据范围要比源数据的范围小。下面是一个强制转换的例子。

public class TypeConvert2 {
    public static void main(String[] args) {
        // 基本数据类型转换之强制转换
        int i = 123;
        byte b = (byte) i; // 强制转换
        System.out.println("int类型强制转换为byte后值为:" + b);
    }
}

程序输出:int类型强制转换为byte后值为:123

posted on 2013-10-30 21:47  永远的麦子  阅读(3150)  评论(4编辑  收藏  举报