作为新到Java,我类和类型的概念之间的混淆。 例如,应该对象"Hello World!"
属于类型 String
或类 String
? 或者,也许两者兼而有之?
Answer 1:
类是一类。 一个接口是一个类型。 基元是一种类型。 数组是一种类型。
因此,每一种类型的也是一个类(包括枚举常数),的接口,一个原语,或阵列。
有两种不同的类型类别:原始类型和引用类型:
- 原语类型的变量总是认为,相同类型的原始值。 这样的价值只能通过赋值操作对变量进行更改。
- 引用类型的变量总是保持对一个对象的引用的值。 所有对象,包括数组,支持类的方法
Object
。 引用类型是类类型(包括枚举类型),接口类型,和数组类型。
每个数据都有一个类型定义其结构,即有多少内存占用,它是如何布局,更重要的是,你如何与它进行交互。
原语类型的例子:
-
int
-
float
-
char
-
boolean
类类型的例子:
-
String
-
Integer
-
Boolean
-
ArrayList
-
StringBuilder
接口类型的例子:
-
Collection
-
List
-
Map
-
Serializable
阵列类型的例子:
-
int[]
-
String[]
-
Integer[][][]
基本上,任何可以参考的变量有一个类型,而类是一类的类型。
更多资讯: http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html
Answer 2:
“类型”是更具包容性的范畴。 在Java中的变量可以有三种类型:8“原始”类型,如int和float,接口和类。 值(相对于变量)可以是原语类的实例。
Answer 3:
“类型”定义“它是什么类型的数据”
例如: “世界你好” 是一个字符串 - > “Hello World” 的类型是STRING型(字符串是没有什么不同的INT A premetive数据..所以我们可以说的 “Hello World” 是一个字符串类类型)
图10是一个INT - >图10是一个整数数据类型。
Answer 4:
TLDR -类是Java中的类型之一。
注 - 要充分认识答案,你必须对自己在Java泛型一点想法。
理解上的差异,让我们先了解一个类型是Java的东西。
根据JLS SE 10 ,
有两种类型的Java编程语言: 基本类型 ( 4.2节 )和引用类型 (第4.3节)。
什么是基本类型?
一个)的积分类型是字节,短,int和长 ,其值是8位,16位,32位和64位带符号的二进制补码整数,分别和焦炭,其值是16位表示UTF-16代码单元无符号整数(§3.1)。
b)在浮点类型是浮点 ,其值包括32位IEEE 754浮点数,和双 ,其值包括64位IEEE 754浮点数。
c)在布尔类型正好有两个值:true和false。
现在,让我们来什么是引用类型?
有四种类型的参考类型: 类类型 ( 第8.1节 ), 接口类型 ( 第9.1节 ), 类型变量 ( §4.4 )和数组类型 ( §10.1 )。
让我们来讨论一个接一个。
如果你看到在JLS, 等级定义如下:
类声明指定一个新的命名引用类型。
有两种类声明的: 普通类的声明和enum声明 。
ClassDeclaration:
NormalClassDeclaration
EnumDeclaration
NormalClassDeclaration:
{ClassModifier} class TypeIdentifier [TypeParameters] [Superclass] [Superinterfaces] ClassBody
您将看到[TypeParameters]
这表明该类类型包括那些泛型类了。
class Example<T>{
}
类类型将被称为Example
总之,类类型涵盖了我们的枚举,我们常规(非通用)类,如String
等和我们的泛型类了。
同样,我希望接口和数组类型也很清楚。 通过数组类型,我们的意思是像int[]
String[]
等。
让我们走到了最后一部分 - 类型的变量。 这些是什么 ?
A型变量是用作类,接口,方法和构造体类型不合格的标识符。
让我们在它下面的JLS的例子理解。
class Test {
<T extends C & I> void test(T t) {
t.mI(); // OK
t.mCPublic(); // OK
t.mCProtected(); // OK
t.mCPackage(); // OK
}
}
你看,在方法参数的对象类型的T
。 是的,这T
是类型可变的并且/可作为一个参考。 是的。 (无法理解这种奇怪的例子 - 了解什么是Java泛型方法)
这样就完成了答案。