精华内容
下载资源
问答
  • 五分钟学Java:为什么不应该使用Java的原始类型

    千次阅读 多人点赞 2019-12-19 17:37:04
    在逛 Stack Overflow 的时候,发现了一些访问量像熊耳山一样高的问题,比如说这个:为什么不应该使用Java的原始类型?访问量足足有 205K+,这不得了啊!说明有很多很多的程序员被这个问题困扰过。实话实说吧,本文...

    在逛 Stack Overflow 的时候,发现了一些访问量像熊耳山一样高的问题,比如说这个:为什么不应该使用Java的原始类型?访问量足足有 205K+,这不得了啊!说明有很多很多的程序员被这个问题困扰过。实话实说吧,本文之前的就是其中之一。

    来回顾一下提问者的问题吧:

    Java 的原始类型是什么?为什么不要使用原始类型?如果不能使用原始类型,有什么更好的选择呢?

    如果大家也被这个问题困扰过,或者正在被困扰,就请随我来,咱们肩并肩手拉手一起梳理一下这个问题,并找出最佳答案。Duang、Duang、Duang,打怪进阶喽!

    01、Java 的原始类型是什么?

    要理解 Java 的原始类型是什么,可以先看一下什么是泛型

    List<String> list = null;
    

    其中 list 就是一个泛型,我们通常称之为字符串(String)列表(List),也就是说 list 中只能放字符串类型的元素。

    如果我们按照下面这种方式声明 list 的话,它就是一个原始类型。

    List list = null;
    

    从 list 的声明当中我们可以对比发现,原始类型没有为容器指定明确的元素类型,所以我们可以在容器中放入一个 String,也可以放入一个 Integer,甚至任意的类型,就像下面这样。

    public class RawType {
        public static void main(String[] args) {
            List list = new ArrayList();
            list.add("沉默王二");
            list.add(18);
            list.add(new RawType());
        }
    }
    

    注意哦,编译器没有任何提醒!这预示着 Java 这门强类型的语言竟然有点弱类型的影子了。

    PS:关于 Java 中的类型术语,大家可以参照下表。

    术语含义举例
    Parameterized type参数化类型List<String>
    Actual type parameter实际类型参数String
    Generic type泛型类型List<E>
    Formal type parameter形式类型参数E
    Unbounded wildcard type无限制通配符类型List<?>
    Raw type原始类型List
    Bounded type parameter限制类型参数<E extends Number>
    Bounded wildcard type限制通配符类型List<? extends Number>

    02、为什么不要使用原始类型?

    大家可能会有一个疑惑,原始类型用起来很爽啊!因为不用关心放入 List 的元素到底是什么类型,想放什么就可以放什么,不要太爽啊!

    可当我们想要从 List 中把元素取出来使用的时候,可就遇到大麻烦了。

    List list = new ArrayList();
    list.add("沉默王二");
    list.add(18);
    list.add(new RawType());
    
    for (Object o : list ) {
        String s = (String) o;
        System.out.println(s);
    }
    

    上面这段代码编译的时候没有任何问题,但输出的时候就会抛出 ClassCastException

    沉默王二
    Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
    	at com.cmower.java_demo.programcreek.RawType.main(RawType.java:14)
    

    除非我们使用 instanceof 关键字进行类型判断,就像下面这样。

    List list = new ArrayList();
    list.add("沉默王二");
    list.add(18);
    list.add(new RawType());
    
    for (Object o : list ) {
        if (o instanceof String) {
            String s = (String) o;
            System.out.println(s);
        } else if (o instanceof Integer) {
            Integer i = (Integer) o;
            System.out.println(i);
        } else if (o instanceof RawType) {
            RawType raw = (RawType) o;
            System.out.println(raw);
        }
    }
    

    可假如代码写成这样,可真真算得上是糟糕的代码了。

    通常来说,为了代码的安全性起见,我们希望代码的错误发生得越早越好,能在编译时就不要在运行时。可使用原始类型的时候,我们发现错误一直到运行时才可能会被检出。

    还记得《扁鹊见蔡桓公》的故事吗?

    扁鹊见蔡桓公,立有间。扁鹊曰:“君有疾在腠理,不治将恐深。”桓侯曰:“寡人无疾。”扁鹊出,桓侯曰:“医之好治不病以为功。”…居十日,扁鹊望桓侯而还走。桓侯故使人问之,扁鹊曰:“疾在腠理,汤熨之所及也;在肌肤,针石之所及也;在肠胃,火齐之所及也;在骨髓,司命之所属,无奈何也。今在骨髓,臣是以无请也。”居五日,桓侯体痛,使人索扁鹊,已逃秦矣。桓侯遂死。

    病情发现得越早,治疗的可能性就越大。同理,代码隐藏的问题发现的越晚,找出根源花费的精力就越大、时间就越多。

    03、有什么更好的选择呢?

    如果不能使用原始类型,有什么更好的选择呢?

    为了让 List 能够容纳任意类型的元素,我们可以使用 List<Object>,尽管这并不是一个最优的选择。

    List<Object> list = new ArrayList<>();
    list.add("沉默王二");
    list.add(18);
    list.add(new RawType());
    

    鹅鹅鹅,这样的参数化类型 List<Object> 和原始类型 List 之间有区别吗?

    当然有了!

    List<Object> 至少明确地告诉编译器,该容器可以存放任意类型的对象,没有丢失类型的安全性。

    可能我这样的解释会遭到某些抨击:“这不五十步笑百步吗?呵呵。”但我要想表达的是登月男神阿姆斯特朗的那句话:“这是我个人的一小步,却是人类的一大步。”能向前迈一步是一步啊。

    那最优的选择是什么呢?

    从一开始就为 List 声明具体的类型,比如说 List<String> list,当我们尝试放入一个 int 值的时候就会编译出错。

    从另一种层面上来说,这样做削弱了程序的灵活性,但保证了程序的绝对安全性,以及在表达上的明确性。

    04、为什么 Java 允许使用原始类型?

    既然原始类型是不安全的,那为什么 Java 一直允许使用原始类型呢?并且泛型擦除后仍然是个原始类型呢?

    答案很简单、很无厘头、很苍白——为了版本兼容!

    引入泛型的时候,Java 已经进入到第二个十年(年纪大了),市面上存在大量没有使用 Java 泛型的代码。如果因为版本升级导致它们不能使用,恐怕 Java 也活不到现在,毕竟对用户友好才是一个软件存在的硬道理。

    当然了,Java 已经对开发者做出了警示:强烈建议不要在 Java 代码中使用原始类型,未来的版本中可以会禁止使用原始类型,请小心点。

    05、鸣谢

    好了各位读者朋友们,以上就是本文的全部内容了。能看到这里的都是最优秀的程序员,升职加薪就是你了👍。如果觉得不过瘾,我把本系列文章做了汇总,这里推荐给大家。

    五分钟学Java:打印数组最优雅的方式是什么?

    五分钟学Java:为什么不应该使用Java的原始类型?

    五分钟学Java:为什么会发生ArrayIndexOutOfBoundsException?

    五分钟学Java:Java 到底是值传递还是引用传递?

    五分钟学Java:如何比较 Java 的字符串?

    五分钟学Java:什么是 NullPointerException?

    谢谢大家的阅读,原创不易,喜欢就点个赞,这将是我最强的写作动力

    展开全文
  •   JS1997年标准化以后,定义了六种内置类型,包括五种原始(Primitive)类型以及一种引用类型,ES6又新增了一种原始类型-----symbol,接下来咱们一一来分析下这七种内置类型: 六种原始类型 分别是: number string ...

      JS1997年标准化以后,定义了六种内置类型,包括五种原始(Primitive)类型以及一种引用类型,ES6又新增了一种原始类型-----symbol,接下来咱们一一来分析下这七种内置类型:

    六种原始类型

    分别是:

    • number
    • string
    • null
    • undefined
    • boolean
    • symbol
    1. number
      和其他编程语言不同,JavaScript中的所有数字均采用浮点数值表示。JavaScript采用IEEE-754标准定义的64位浮点格式表示数字。然而在实际过程中,JavaScript则是基于32位整数。此外还有一点需要注意,实数有无数个,但JavaScript通过浮点数的形式只能表示其中有限的个数,即当在JavaScript中使用实数的时候,常常只是真实值的一个近似表示。

    2. string
      字符串(string)是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集,JavaScript字符串的索引从零开始。在JavaScript程序中的字符串直接量,是由单引号或双引号包括起来的字符序列。在ECMAScript3中,字符串直接量必须写在一行中,而在ECMAScript5中,字符串直接量可以拆分成数行,但每行必须以反斜线()结束,反斜线和行结束符都不算是字符串直接量的内容。
      在这里插入图片描述
      上文中提到的反斜杠(),在JavaScript字符串中有着特殊的用途,反斜杠符号后加一个字符,就不再表示它们的字面含义了,比如,\n就是一个转义字符,它表示的是一个换行符。
      除此之外,在ES5中,字符串可以当做只读数组,除了使用charAt()方法,也可以使用方括号来访问字符串中的单个字符:
      在这里插入图片描述

    3. null
      null是JavaScript语言的关键字,他表示一个特殊值,常用来描述“空值”。对null执行typeof运算,结果返回字符串“object”,这个最初是JavaScript设计的一个缺陷,后来渐渐被大家接受,可以理解为object的占位符。表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象,Null表示“没有对象”,即该处不应该有值。

      	typeof(null)    结果: "object"
      
    4. undefined
      当声明的变量还未被初始化时,变量的默认值为undefined,表示“缺少值”,就是此处应该有一个值,但是还没有定义。undefined是预定义的全局变量,他的值就是“未定义”。在ES3中,undefined是可读/写的变量,可以给它赋任意值。这个错误在ES5中做了修正,undefined在该版本中是只读的。如果使用typeof运算符得到undefined的类型,则返回“undefined”,表明这个值是该类型的唯一成员。

      	typeof(undefined)      结果: "undefined"
      
    5. boolean
      布尔值指代真或假、开或关、是或否。这个类型只有两个值,保留字true和false。任意JavaScript的值都可以转换为布尔值。以下的一些类型会被转换成false,undefined、null、0、-0、NaN、“” //空字符串,所有其他值,包括所有对象(数组)都会转换成true。布尔值常用的运算符有"&&"、"||"、"!"。

    6. Symbol
      Symbol是ES6新增的一种数据类型,表示独一无二的值,Symbol最大的用途是用来定义对象的唯一属性名。ES5的对象属性名都是字符串,容易造成属性名的冲突。如果使用了一个他人提供的对象,但又想为期添加新的方法,那么新方法的名字有可能与已有方法产生冲突。因此,需要保证每个属性的名字都是独一无二的,以防止属性名的冲突。这就是ES6引入Symbol的原因。

    引用类型

    1. Object
      在JS中,除了原始类型,其它的都是对象类型了,对象类型和原始类型不同,原始类型存储的是值,对象类型存储的是地址(指针)。当你创建了一个对象类型的时候,计算机会在内存中帮我们开辟一个空间来存放值,但是我们需要找到这个空间,这个空间会拥有一个地址(指针)。
    	const a = []
    

    假设内存地址(指针)为#001,即表示在内存#001的地方存放了值[ ],常量a存放的是地址(指针)#001。那么如果将a赋值给b,这个过程中究竟发生了什么呢?写个小例子试试:

    const a = []
    b = a
    console.log("a:",a, "; b:",b)         //输出: a: [ ] ; b: [ ]
    b[0] = 1
    console.log("a:",a, "b:",b)           //输出: a: [1] ; b: [1]
    

    b = a好比是a有五斤苹果,但是a并没有将苹果复制五斤给了b,而是将他的苹果地址告诉了b。
    a: 我的苹果在客厅的篮子里,你可以对苹果随意“操作”;
    b: 哦!好的我知道了。
    一个小时后。。。
    a: 我的苹果咋都没了?
    b: 都被我吃完了,哈哈哈哈额嗝!
    a: …
    a将地址给了b,所以b对数组的操作一样会影响到a的值,这又引申出一个概念,深拷贝浅拷贝,下篇博客会做详细的介绍。

    展开全文
  • 原始类型 包装类 原始类型所占的字节数
  • Java中的8种原始类型

    2020-06-09 20:55:39
    首先,我要介绍有关Java的8种原始类型的所有信息。 Java基本类型 正如本文标题所暗示的,Java语言内置了8种原始类型。 在以下小节中,我们将不按特定顺序查看所有八个基本类型。 对于每种原始类型,我们将描述...

    几年前,当我开始编辑Java Basics系列时,我认为将一些非常详细的信息拉到自己的帖子中是很有意义的。 这样,初学者的内容就更容易消化了。 首先,我要介绍有关Java的8种原始类型的所有信息。

    Java基本类型

    正如本文标题所暗示的,Java语言内置了8种原始类型。 在以下小节中,我们将不按特定顺序查看所有八个基本类型。 对于每种原始类型,我们将描述如何使用它以及它的局限性。

    原始类型

    首先,Java整数是32位带符号的值(表示正值或负值),并由int关键字表示:

     int someNumber = 10 ; 

    当然,像所有基本类型一样,整数有其局限性。 由于它们是32位的,因此我们要查看的范围是-2,147,483,648到2,147,483,647。 有很多数字! 当然,我们可以使用DrJava的交互窗格中的便捷技巧来确认该范围:

     Integer.MAX_VALUE // Prints 2,147,483,647  Integer.MIN_VALUE // Prints -2,147,483,648 

    自然, int可能是用于简单计算的最常见的整数类型。 如果您需要更多的范围内,看到long的下方。

    双重原始类型

    int不同,Java double是64位浮点值,它们由double关键字标记:

     double someNumber = 110.55 ; 

    提醒一下,浮点数只是实数。 换句话说,当我们使用双精度时,我们可以访问小数点。

    由于双精度数是64位的,因此与整数相比,我们可以访问的数字明显更多。 如果我们使用相同的“交互”窗格技巧,则可以找出潜在值范围的巨大程度:

     Double.MAX_VALUE // Prints 1.7976931348623157E308  Double.MIN_VALUE // Prints 4.9E-324 

    请记住,负指数意味着极小的数字(与极度负的数字相对),因此我们并不是在寻找与整数相同的范围。

    通常, double是Java中浮点值的默认选择。 替代方法是float

    字符基本类型

    正如我们已经看到的,Java字符代表16位字符,并用char关键字标记:

     char someCharacter = 'f' ; 

    Java中的所有字符都使用单引号定义。 同时,双引号用于定义字符串-我们稍后会讨论。

    像往常一样,我们可以使用以下代码片段找出字符范围:

     Character.MAX_VALUE // Prints '???'  Character.MIN_VALUE // Prints '' 

    为了理解这个范围,我们总是可以将结果强制转换为整数(稍后会详细介绍):

     ( int ) Character.MAX_VALUE // Prints 65535  ( int ) Character.MIN_VALUE // Prints 0 

    事实证明, char类型是Java中唯一的无符号类型。 换句话说,一个字符的范围可以从0到65,535,其中每个数字都映射到一个特定的字符。 为了创建此列表之外的字符,Java可以组合成对的字符。 请查看Java中的“反向字符串”示例。

    字节原始类型

    当我们谈论二进制时,我们谈到了一点概念。 好吧,一组八位组成一个字节,Java将其作为原始类型来支持。 byte类型本质上只是一个8位数字,范围为-128至127。如所期望的,字节由byte关键字表示:

     byte someByte = 20 ; 

    与往常一样,我们可以使用以下代码片段来确认byte类型的范围:

     Byte.MAX_VALUE // Prints 127  Byte.MIN_VALUE // Prints -128 

    以我的经验, byte类型对于读取和处理原始数据很有用。 但是,总的来说,由于电位值的范围太小,我们可能不会使用它。

    短原始类型

    short类型是另一个整数类型,但是它比int类型占用更少的空间。 实际上,它只占用16位的一半空间,并用short关键字标记:

     short someNumber = 11 ; 

    就范围而言, short类型仅将整数的一半作为时钟输入,但是我们可以像往常一样确认这一点:

     Short.MAX_VALUE // Prints 32767  Short.MIN_VALUE // Prints -32768 

    出于实际目的, short仅具有65,546个可能值。 当内存和磁盘空间不足时,通常同时使用byteshort byte 。 否则,使用int是安全的,因为在声明整数时它是默认类型。

    长原始类型

    在频谱的另一端是long原始类型。 该类型表示极大的整数,我们可能希望这些整数甚至大于int类型可以提供的值。 long类型是一个64位有符号整数,这意味着值的范围为5百亿分之一。

    当然,我们表示与多头long关键字:

     long someBigNumber = 1013401346173L; 

    为了演示一个64位值可以具有多大的范围,让我们看一下以下代码片段:

     Long.MAX_VALUE // Prints 9,223,372,036,854,775,807  Long.MIN_VALUE // Prints -9,223,372,036,854,775,808 

    对于计算给定时间范围内的光线传播距离,也许很long时间有用。 一秒钟后,光传播约3亿米。 如果我们编写了一个程序来实时跟踪光的距离,则int类型将在大约7秒后消失,而很长的时间可以计算出大约975年。 不相信我吗? 检查一下整个计算过程中的要点

    浮点原始类型

    虽然我们经常使用double ,它是64位浮点数类型,但Java支持另一种浮点数类型,称为float 。 但是,像int一样,Java默认将浮点值double 。 无论如何,我们可以使用float关键字表示32位浮点数:

     float someNumber = 11 .4f; 

    为了了解float的范围,让我们再次使用技巧:

     Float.MAX_VALUE // Prints 3.4028235E38  Float.MIN_VALUE // Prints 1.4E-45 

    如我们所见,32位确实减少了我们的范围和精度。 如果要在使用一半空格的同时使用精度不如double的十进制值,则可以选择float类型。

    布尔基元类型

    最后,我们可以介绍boolean类型。 要声明一个boolean ,我们可以使用boolean关键字:

     boolean isBool = true ; 

    布尔值有点独特,因为它们不像所有其他原始类型一样代表数字值。 实际上,我们的MAX_VALUEMIN_VALUE小技巧在这里不起作用。 取而代之的是,布尔值表示true还是false ,我们可以从上一堂逻辑课中回顾出来。

    我们现在不会花很多时间,因为它将成为我们在Java中所做的几乎所有事情的一部分。 也就是说,我们通常不会像这样明确声明它们。 相反,它们是比较的结果,这些比较驱动代码中的逻辑。 请查看下面的布尔运算符部分以获取更多信息。

    想了解更多?

    如前所述,该信息可以在Java基本类型和变量文章中找到。 当然,现在该文章更容易阅读。

    无论如何,再次感谢您的支持。 下次见!

    翻译自: https://www.javacodegeeks.com/2019/08/8-primitive-types-java.html

    展开全文
  • Java原始类型和引用类型

    千次阅读 2016-06-05 16:30:47
    在Java中提供了两种数据类型:原始类型和引用类型。 本文主要针对这两种类型进行说明,便于在实际开发过程中正确选择合适的数据类型。 1. 原始类型  Java中的原始类型是不同于类的基本数据类型,包括如下8种...

    在Java中提供了两种数据类型:原始类型和引用类型。 本文主要针对这两种类型进行说明,便于在实际开发过程中正确选择合适的数据类型。


    1.  原始类型

         Java中的原始类型是不同于类的基本数据类型,包括如下8种基本类型:double、float、byte、short、int、long、char、boolean。这8种 原始类型直接存储在Java的内存栈中,数据本身的值也是存储在栈中,即当声明了一个原始类型时,就在栈中为类型本身申请了存储。

          同时,Java为每个原始类型提供了对应的封装类型,分别如下:


    原始类型封装类
    doubleDouble
    floatFloat
    byteByte
    shortShort
    intInteger
    longLong
    charCharacter
    booleanBoolean

        Java中针对原始数据类型提供了对应的封装类,因为在类中可以定义一些必要的方法,用于实现基本数据类型的数值与可打印字符串之间的转换,以及一些其他的实用程序方法;  
        另外,有些数据结构库类只能操作对象,而不支持基本数据类型的变量,包装类提供一种便利的方式,能够把基本数据类型转换成等价的对象,从而可以利用数据结构库类进行处理。   


    2.  引用类型

         引用类型和原始类型的行为完全不同,分别具有不同的语义,并且具有不同的特征和用法,它们包括:大小和速度问题,使用原始类型无须调用 new,也无须创建对象,这节省了时间和空间。另外,对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。


       下面用一段简单的代码看看原始类型和引用类型在实际编码中的区别:

    package DataType;
    
    public class Demo1 {
    	
    	public static void main(String args[]){
    		int a = 1;  //原始类型
    		int b = 2;  //原始类型
    		Point pOne = new Point(5,5);  //引用类型
    		Point pTwo = new Point(6,6);  //引用类型
    		
    		System.out.println("Before : a =" + a);
    		System.out.println("Before : b =" + b);
    		System.out.println("Before : pOne =" + pOne.toString());
    		System.out.println("Before : pTwo =" + pTwo.toString());
    		
    		a = b;   //将b赋值给a
    		a++;     //a自增
    		pOne = pTwo;   //将pTwo 赋值给pOne
    		
    		pOne.setX(10);  //重置pOne中的值
    		pOne.setY(10);
    		System.out.println("After : a =" + a);
    		System.out.println("After : b =" + b);
    		System.out.println("After : pOne =" + pOne.toString());
    		System.out.println("After : pTwo =" + pTwo.toString());
    	}
    
    }
    

    注:省略了Point类的相关代码,其很简单,就两个int变量,和其对应的set\get方法,以及构造函数等。


    首先看看输出结果,如下:

    Before : a =1
    Before : b =2
    Before : pOne =Point [x=5, y=5]
    Before : pTwo =Point [x=6, y=6]
    After : a =3
    After : b =2
    After : pOne =Point [x=10, y=10]
    After : pTwo =Point [x=10, y=10]
    

    从结果中看出,重新赋值后,a和b的值输出结果,在意料之中;而程序中真的pOne和pTwo,仅改变了pOne的值,为什么输出结果中pTwo也改变了,并且跟pOne一致呢?


    这就是由于原始类型和引用类型的存储结构不一致导致的,其实,针对“=”本身,对这两种数据类型是没有本质区别的,都是"="左右的值等于右边的值,但不同的是,针对引用类型,赋值符“=”改变的是对象引用,而不是对象本身,也就是说当程序执行完下面这句之后,

    <strong>pOne = pTwo;</strong>
    pOne和pTwo,均指向了同一个对象,因此对pOne的任何操作,同时也会影响到pTwo。




    展开全文
  • 本章主要对Java泛型类型的命名规范和有界泛型类型进行学习。 1.泛型相关概念 首先通过泛型类与泛型方法的语法,对几个概念进行说明: 泛型类与泛型方法示例 /** * 泛型类语法示例 * Created by 韩超 on 2018/2...
  • 每个集合类型都可以与任何原始类型一起使用, 布尔值 字节 烧焦 短的 整型 长 漂浮 双倍的 包中为每种原始类型定义了接口 com.mebigfatguy.caveman 如 情报清单 字符集 字节包 对于地图,实际上有三种: 原始->...
  • Java中的原始类型与原始封装类型

    千次阅读 2019-08-05 15:36:42
    在写Java代码的过程中,一直对Java提供的一些类参数又疑问,今天查了一下,进行了解学习。 ...Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。比如:Int是java的原始数据类型,In...
  • JavaScript数据类型,包括原始类型和引用类型有哪些? 原始类型有五个 Number类型 专门保存数字的类型,可用于进行数学计算等的数值 String类型 专门用来保存字符串的类型;” “,用来存储字符串类型的文本. ...
  • PAGE / NUMPAGES Java 传递对象给期望原始类型参数的方法 术语 autoboxing 是指创建一个代表一个原始类型数据的对象术语 unboxing 是指创建一个代表一个对象的值的原始类型数据Java 1.5 中新的 autoboxing/unboxing ...
  • JavaScript中的原始类型

    千次阅读 2016-05-22 15:16:44
    JavaScript中的数据类型分为两类,原始类型(primitive type)和对象类型(object type)。JavaScript中的原始类型包括:数字,布尔值,字符串,以及null和undefined。 数字类型 和其他语言不一样,JavaScript不...
  • JavaScript原始类型和引用类型

    千次阅读 2015-10-23 09:43:58
    引子理解和使用对象是理解整个 JavaScript 的关键JavaScript 把对象作为语言的中心,几乎所有的 JavaScript 的...JavaScript 中的数据分为两种类型:原始类型和引用类型,两者都通过对象进行访问。原始类型保存为简单
  • 原始类型原始类型是没有实际参数的泛型类或者接口的名字。举个例子,泛型Box类:public class Box<T> { public void set(T t) { /* ... */ } // ... }要创建一个参数化类型的Box ,您将为形式类型参数T提供一个...
  • 前面的文章有介绍:为了解决装箱带来的效率问题,java8针对原始类型提供了一些特化的函数式接口,如:IntPredicate。流也不例外,它提供了3个的原始类型数值流: IntStream LongStream DoubleStream 分别将流中的...
  • 引用类型和原始类型区别

    千次阅读 2016-03-25 19:49:37
    Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。另外,Java 还为每个原始类型提供了封装类(Wrapper)。如果需要一个整型变量,是使用基本的 int 型呢,还是使用 Integer 类的一个对象呢?如果需要...
  • 在Kotlin中我们不能直接声明原始类型(也称原语类型)的,但是当我们不像使用对象实例那样操作一个变量时,那么这个变量在底层将转换成原始类型处理。例如,请看以下示例: var i = 10 i = i * 2 ...
  • Java的原始类型(Primitive Type)

    万次阅读 2017-03-20 22:15:34
    我们知道,在Java中,变量有两种类型,一种是原始类型,一种是引用类型。 原始类型一共有8种,它们分别是char,boolean,byte,short,int,long,float,double。在Java API中,有它们对应的包装类,分别是(首字母大写...
  • 这个jdk5.0引入的泛型. 在eclipse中你只要在声明集合的时候写成这样ArrayList list...你这样定义以后,这个list里面add就只能添加String类型,如果你添加int或者别的引用类型,编译器就会报错。 完全可以忽略掉这个警告
  • jdk 从8 改成了7 就好了! 或者, 修改源码, 每个响应的地方加上 surppressingWarnings xxx , 或者使用 请使用 -Xlint:unchecked 重新编译。 参照 http://www.cnblogs.com/qiernonstop/p/3620747.html ...
  • c#可空类型获取原始类型

    千次阅读 2012-09-25 18:53:21
    类型本来是有默认值的,初始化时不能赋值为null,否则编译时会报错.net 2.0以后增加了可空类型。 int? a,float? b,double? c, DateTime? d,bool? e为可空类型, 此时a=null,不会报错。判断时也可以用if(a==...
  • 【笔记26】不要使用原始类型

    千次阅读 2019-07-04 13:56:45
    原始类型(raw type):没有任何类型参数的泛型类型的名称。如List<E>对应的原生态类型是List。它们的存在主要是为了与没有泛型之前的代码相兼容。 出现泛型前: // Now a raw collection type - don't do ...
  • 引用类型和原始类型的区别

    千次阅读 2013-07-09 23:22:55
    Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean --> Boolean byte --> ...
  • java基本类型封装类和原始类型的区别及好处

    千次阅读 多人点赞 2019-01-07 19:13:14
    这是最近有人问我的一个问题,我当时解答了,但是发现解答的并不是很全面,所以花时间稍微整理了一下 我们先来看一下java的... 原始类型 封装类   boolean Boolean   char Character   byte Byte   ...
  • Java中引用类型和原始类型的区分

    千次阅读 2011-07-31 12:26:50
    Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。另外, Java还为每个原始类型提供了封装类(Wrapper)。如果需要一个整型变量,是使用基本的int 型呢,还是使用 Integer 类的一个对象呢?如果需要声明...
  • 引用类型和原始类型

    千次阅读 2006-06-26 19:03:00
    引用类型和原始类型的行为完全不同,并且它们具有不同的语义。例如,假定一个方法中有两个局部变量,一个变量为 int 原始类型,另一个变量是对一个 Integer 对象的对象引用: int i = 5; // 原始类型 ...
  • 如果它是原始类型,还可以判断表示哪种原始类型(注意:对Null值使用typeof运算符,返回的是object)。     typeof运算符 :  typeof运算符有一个参数,即要检查的变量或值。例如  var sTemp = ...
  • js中的原始数据类型

    千次阅读 2018-12-21 23:49:14
    js中原始数据类型有:number、string、boolean、null、undefined、object null:当一个对象指向为空了,此时可以赋值为null undefined:1. 当变量声明了,但是没有赋值,结果是undefined            2.当...
  • 原始数据类型

    千次阅读 2019-07-29 15:07:58
    JavaScript 的类型分为两种:原始数据类型(Primitive data types)和对象类型(Object types)。 原始数据类型包括:布尔值、数值、字符串、null、undefined 以及 ES6 中的新类型 Symbol。 本节主要介绍前五种...
  • Java中区分引用类型和原始类型

    千次阅读 2006-02-10 10:04:00
    下表列出了原始类型以及它们的对象封装类。原始类型和封装类 原始类型 封装类 boolean Boolean char Cha

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 735,863
精华内容 294,345
关键字:

原始类型