博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java与.net比较学习系列(3) 基本数据类型和类型转换
阅读量:6811 次
发布时间:2019-06-26

本文共 2569 字,大约阅读时间需要 8 分钟。

在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

转载地址:http://lpwzl.baihongyu.com/

你可能感兴趣的文章
对待棘手bug,新手与大牛的差距在哪里?
查看>>
中企通信发布DaaS桌面云解决方案 企业迎来真正“桌面即服务”
查看>>
英国风力发电已比核能便宜
查看>>
《并行计算的编程模型》一2.6.3 AM Ping-Pong示例
查看>>
Kronos银行木马的前世今生
查看>>
武汉电博会看点 daydao电商云ERP亮相
查看>>
浪潮李辉:SDS,承载应用和技术两极蔓延式创新
查看>>
机会与危险并存 存储业希望依旧
查看>>
GE以9.15亿美元收购ServiceMax 以完善工业互联网平台
查看>>
Windows Shellcode学习笔记——通过VirtualProtect绕过DEP
查看>>
Apache httpd 出现多个漏洞 可能引发DoS攻击 2.2.x及2.4.x版本受影响
查看>>
ARM计划将四核心CPU引入磁盘驱动器
查看>>
智慧城市数量年内超500个 这两大难题不得不解
查看>>
《中国人工智能学会通讯》——10.27 提出的方法
查看>>
大数据重点不在于“大”
查看>>
普元发布Primeton DI 6.1.0送新鲜:为用户终极体验而战
查看>>
解读固态磁盘性能发展之现状
查看>>
CFO职能扩张 CIO将面临更大数据压力
查看>>
区块链之路该怎么走?
查看>>
12款白帽子用于黑客渗透测试的操作系统
查看>>