Java 阶级与类型的区别
作为Java新手,我对类和类型的概念感到困惑。Java 阶级与类型的区别,java,class,types,Java,Class,Types,作为Java新手,我对类和类型的概念感到困惑。 例如,对象“Hello World!”应该属于类型String还是类String?或者两者兼而有之?类是一种类型。接口是一种类型。原语是一种类型。数组是一种类型 因此,每个类型也可以是类(包括枚举常量)、接口、基元或数组 有两种不同类型:基本类型和引用类型: 基元类型的变量始终保存同一类型的基元值。这样的值只能通过对该变量的赋值操作来更改 引用类型的变量始终保存对对象的引用的值。所有对象,包括数组,都支持classObject的方法。引用类型包括
例如,对象
“Hello World!”
应该属于类型String
还是类String
?或者两者兼而有之?类是一种类型。接口是一种类型。原语是一种类型。数组是一种类型
因此,每个类型也可以是类(包括枚举常量)、接口、基元或数组
有两种不同类型:基本类型和引用类型:
- 基元类型的变量始终保存同一类型的基元值。这样的值只能通过对该变量的赋值操作来更改
- 引用类型的变量始终保存对对象的引用的值。所有对象,包括数组,都支持class
的方法。引用类型包括类类型(包括枚举类型)、接口类型和数组类型李>Object
int
float
char
boolean
int[]
String[]
Integer[][]
10是整数-->10是整数数据类型。TLDR-类是Java中的一种类型 注意-要完全理解答案,您必须对Java中的泛型有一点了解
为了理解差异,让我们首先了解Java中的类型是什么 根据, Java编程语言中有两种类型: 基本类型()和参考类型(§4.3) 什么是原始类型 a) 整数类型为字节、短、int和长,其值为 8位、16位、32位和64位带符号2的补码整数, 分别为和字符,,其值为16位无符号整数 表示UTF-16代码单位(§3.1) b) 浮点类型为浮点型,其值包括32位 IEEE 754浮点数和双精度浮点数,其值包括 64位IEEE 754浮点数 c) boolean类型正好有两个值:true和false 现在,让我们来看看什么是引用类型 有四种引用类型:类类型(),接口 类型、类型变量和数组类型 让我们逐一讨论 如果您看到在JLS中,类的定义如下: 类声明指定一个新的命名引用类型 有两种类型的类声明:普通类声明 和枚举声明 您可以看到
[TypeParameters]
,这表明类类型包括
泛型类也是
class Example<T>{
}
您可以看到method参数中的对象的类型为T
。是的,此T
是类型变量,可以用作参考。是的。(无法理解这个奇怪的示例-了解Java中的泛型方法)
这就完成了答案。这是一个关于编程术语的问题,正如所料,还有另一个答案可以被认为是有效的 反射API公开的Java类型系统有两种类型:类和接口,前者实现。在该系统中,类(由
类
实例描述的元素)是使用关键字类
或接口
创建的任何类型、任何基元类型、其任何数组和无效
。其他一切都是类型
那么其他的都是什么呢?当考虑对象的功能时,这个上下文中的类是运行时看到的和可以访问的一切,而类型通常是编译器看到的一切。这可以是一个(如ArrayList
–记住类型擦除会导致每个ArrayList
在运行时映射到同一个类)、一个作为方法或类声明的一部分创建的、一个和任意一个。这些类型通过API方法在所有类型擦除无效的地方公开,
与遍历参数类型或基类型时类似。类型与编译时实体(如变量和表达式)关联,而类与运行时实体(如内存对象)关联。考虑规范中使用的语言 如果表达式的类型是引用类型,则 引用的对象。。。可以使用
instanceof
测试类型为引用类型的表达式,以确定表达式的运行时值引用的对象的类是否
罗伯特·哈普
class Example<T>{
}
class Test {
<T extends C & I> void test(T t) {
t.mI(); // OK
t.mCPublic(); // OK
t.mCProtected(); // OK
t.mCPackage(); // OK
}
}
String greeting = "Hello" + " " + "world!";
List<String> greetings = List.of("Hello World!");
jshell> /set feedback verbose
| Feedback mode: verbose
jshell> List.of("Hi", "Hello")
$1 ==> [Hi, Hello]
| created scratch variable $1 : List<String>
jshell> List.of(42, -11)
$2 ==> [42, -11]
| created scratch variable $2 : List<Integer>
jshell> $1.getClass() == $2.getClass()
$3 ==> true
| created scratch variable $3 : boolean