我如何区分原始数据类型与Java中的泛型?

时间:2016-04-23 13:54:59

标签: java

我开始学习Java,我有一个问题。

原始数据类型是作为Java中的任何对象创建的吗? 我的意思是,在某个深处,有一个叫做Int的类。 泛型是用于创建新数据类型的模板,对吧? 就惯例而言,我们必须将它们放在尖括号中,例如<HugeInteger>

4 个答案:

答案 0 :(得分:1)

原始类型(如int,double,float)不是Objects。它们是原始的,有时可能非常烦人,不能用作泛型。

对于泛型,您需要对象。那将是Integer,Double,Float等。

顺便说一句,除非你声明它,否则没有名为Int的类(大写为i)。

答案 1 :(得分:0)

泛型并不代表原语。它们意味着代表对象(因为泛型类型都隐式地扩展Object)。

您可以使用所需基元类的包装变体来实现相同的效果。

 DDHGeneric<Integer, Integer, Integer, Integer> t = new DDHGeneric<>();

以下是Java Trails中的Why Use Generics?摘录:

  

简而言之,泛型使类型(类和接口)成为可能   定义类,接口和方法时的参数。

归功于@ Makoto

要了解更多信息,您可以阅读本教程:Restrictions on Generics

答案 2 :(得分:0)

实际上,使用new()关键字创建常规对象:

Object myObject = new Object();
Integer myInt = new Integer(5);

调用new()在所谓的堆上分配一些内存空间,以便存储新定义的实例。每次调用实例时,JVM都会查看存储它的内存地址。

另一方面,在编译期间,基元在内存中注册。让我们假设您有一条线:

int i = 5;

在编译程序时,JVM(java虚拟机)会为i变量创建一个位置,记住该位置的位置,以及它想要使用i值的任何地方那个地方。如果其他基元具有相同的值(例如int y = 5),则将其分配给存储器中的相同位置。这意味着,基元按其值存储。

答案 3 :(得分:-1)

您好,欢迎来到Stack Overflow。首先,原始类型没有类。好吧,有IntegerFloat等等,但这些是包装类。它们只包含int(或float)变量。泛型对于某些东西非常有用,例如,你有一个名为Couple的类,它包含两个对象,但你不知道是什么。他们让你告诉班级你实例化它而不是预先定义它。