zoukankan      html  css  js  c++  java
  • 你知道long和Long有什么区别吗?

    Java中数据类型分两种:


    1.基本类型:long,int,byte,float,double
    2.对象类型:Long,Integer,Byte,Float,Double其它一切java提供的,或者你自己创建的类。

    其中Long叫 long的包装类。Integer、Byte和Float也类似,一般包装类的名字首写是数值名的大写开头。


    什么是包装类?


    在java中有时候的运算必须是两个类对象之间进行的,不充许对象与数字之间进行运算。所以需要有一个对象,这个对象把数字进行了一下包装,这样这个对象就可以和另一个对象进行运算了。


    比如我们可以定义一个类:

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. public class Long {  
    2.     int i=0;  
    3.     public Long (int i){  
    4.         this.i=i;  
    5.     }  
    6. }  


    这个Long 就是一个包装类,它包装了一个整数值,然后可以在里面写一些运算符重载的方法使它支持某些运算。这个时候可以赋值:
    Long l = new Long(10);
    现在变量 l 就是一个对象,不是一个数字。 



    long是原始数据类型,没有属性方法,只能进行数学运算,Long是long相对应的引用数据类型,它有方法和属性,一个没方法属性,一个有方法属性,这就是它们的区别。


    看下面的小程序:

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. long l = 1;  
    2. Long l1 = new Long(1);   
    3. Long l2 = new Long(1);   
    4.   
    5. if (l == l1){   
    6.     System.out.println("=====l与l1相等=====");  
    7.  }   
    8.   
    9. if(l == l2){   
    10.     System.out.println("=====l与l2相等=====");  
    11. }  
    12.   
    13. if(l1 == l2){  
    14.     System.out.println("=====l1与l2相等=====");  
    15.  }         


    输出:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. =====l与l1相等=====  
    2. =====l与l2相等=====  


    如果将第三个if语句的条件换成"l1.equals(l2)",那么输出结果就会变成:

    [plain] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. =====l与l1相等=====  
    2. =====l与l2相等=====  
    3. =====l1与l2相等=====  


    由此也能看出,Long定义的变量为一个Long类型的对象;而long定义的变量为一个长整形数值的数值变量。

     
    ID用long还是Long?

     
    hibernate、el表达式等都是包装类型,用Long类型可以减少装箱/拆箱;

    在hibernate中的自增的hid在实体中的类型要用Long 来定义而不是long。否则在DWR的匹配过程中会出现Marshallingerror:null的错误提示。
     
    到底是选择Long 还是long这个还得看具体环境,如果你认为这个属性不能为null,那么就用long,因为它默认初值为0,如果这个字段可以为null,那么就应该选择Long。

    http://blog.csdn.net/liushuijinger/article/details/30726433

  • 相关阅读:
    清除vs2005、vs2008起始页最近打开项目
    解决VS2005打开js,css,asp.php等文件,中文都是乱码的问题
    “007~ASP 0104~不允许操作”错误的解决方法(图解)
    nofollow标签浪费了多少站长做外链的时间
    如果你的评论被WordPress的Akismet插件屏蔽,怎么解封?
    VPS磁盘划分建立新磁盘
    ASP.NET使用AJAX应注意IIS有没有.ashx扩展
    将磁盘从FAT格式转换为NTFS格式的方法
    C#调用RabbitMQ实现消息队列(转载)
    超燃:2019 中国.NET 开发者峰会视频发布
  • 原文地址:https://www.cnblogs.com/cmblogs/p/4348304.html
Copyright © 2011-2022 走看看