Java 阶级与类型的区别

Java 阶级与类型的区别,java,class,types,Java,Class,Types,作为Java新手,我对类和类型的概念感到困惑。 例如,对象“Hello World!”应该属于类型String还是类String?或者两者兼而有之?类是一种类型。接口是一种类型。原语是一种类型。数组是一种类型 因此,每个类型也可以是类(包括枚举常量)、接口、基元或数组 有两种不同类型:基本类型和引用类型: 基元类型的变量始终保存同一类型的基元值。这样的值只能通过对该变量的赋值操作来更改 引用类型的变量始终保存对对象的引用的值。所有对象,包括数组,都支持classObject的方法。引用类型包括

作为Java新手,我对类和类型的概念感到困惑。
例如,对象
“Hello World!”
应该属于类型
String
还是类
String
?或者两者兼而有之?

类是一种类型。接口是一种类型。原语是一种类型。数组是一种类型

因此,每个类型也可以是类(包括枚举常量)、接口、基元或数组

有两种不同类型:基本类型和引用类型:

  • 基元类型的变量始终保存同一类型的基元值。这样的值只能通过对该变量的赋值操作来更改
  • 引用类型的变量始终保存对对象的引用的值。所有对象,包括数组,都支持class
    Object
    的方法。引用类型包括类类型(包括枚举类型)、接口类型和数组类型
每一段数据都有一个定义其结构的类型,即占用多少内存、如何布局,更重要的是,如何与之交互

基本类型的示例:

  • int
  • float
  • char
  • boolean
  • 类类型的示例:

  • 接口类型示例:

  • 数组类型的示例:

  • int[]
  • String[]
  • Integer[][]
  • 基本上,任何可以称为变量的东西都有一个类型,类就是一种类型

    此处的更多信息:

    “类型”是更具包容性的类别。Java中的变量可以有三种类型:8种“基本”类型,如int和float、接口和类。值(与变量相反)可以是基元或类实例。

    “类型”定义“它是什么类型的数据”

    例如:“hello world”是一个字符串-->“hello world”是字符串类型(与int不同,String不是前置数据..因此我们可以说“hello world”是一个字符串类类型)


    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