我开始学习Java,我有一个问题。
原始数据类型是作为Java中的任何对象创建的吗?
我的意思是,在某个深处,有一个叫做Int的类。
泛型是用于创建新数据类型的模板,对吧?
就惯例而言,我们必须将它们放在尖括号中,例如<HugeInteger>
。
答案 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。首先,原始类型没有类。好吧,有Integer
和Float
等等,但这些是包装类。它们只包含int
(或float
)变量。泛型对于某些东西非常有用,例如,你有一个名为Couple
的类,它包含两个对象,但你不知道是什么。他们让你告诉班级你实例化它而不是预先定义它。