在Java中,你提到的两种赋值方式实际上反映了Java中对象和非对象(基本数据类型)之间的区别。这是Java(以及许多其他面向对象编程语言)的一个核心特性。
第一种:数据类型 变量名 = 值;
这种方式用于基本数据类型的变量赋值。基本数据类型包括int、double、char、boolean等,它们不是对象,而是直接存储数据的简单类型。当你为这些类型的变量赋值时,你直接给出了数据的值。例如:
java
int age = 25; // 整数类型
double pi = 3.14; // 浮点类型
char letter = 'A'; // 字符类型
boolean isDone = true; // 布尔类型
第二种:一个单词 变量名 = new 又是那个单词();
这种方式用于对象的创建和赋值。在Java中,除了基本数据类型之外的所有内容都被视为对象,包括数组和类实例。当你使用new关键字时,你实际上是在请求JVM(Java虚拟机)在堆内存中为你的对象分配空间,并返回一个指向该新创建对象的引用。这个引用被存储在变量中。
这里的“一个单词”通常指的是类名(或者在某些情况下是接口名,但这通常与工厂模式或依赖注入等高级概念相关)。例如:
java
String name = new String("John Doe"); // String是一个类
List<Integer> numbers = new ArrayList<>(); // ArrayList是一个类,实现了List接口
Person person = new Person(); // 假设Person是一个用户定义的类
在上面的例子中,String、ArrayList和Person都是类名。当你使用new关键字加上类名并调用其构造函数(如果有的话,如上例中的new String("John Doe")和new ArrayList<>())时,你会得到一个该类的对象实例的引用,这个引用被存储在左侧的变量中。
总结
第一种方式用于基本数据类型的变量赋值。
第二种方式用于对象的创建和赋值,通过new关键字和类名(或接口名与工厂方法结合)来实现。
这两种方式共同构成了Java语言中变量赋值的基础,体现了Java作为面向对象编程语言的特点。