Java中通过构造函数调用无实例方法

Java中通过构造函数调用无实例方法,java,Java,我非常怀疑这种行为被称为什么,以及它在记忆中是如何执行的 在main()方法中,我创建了以下句子或说明 public static void main(String[] args) { int i = 0; int j = new Random().nextInt(100); // As it is called this way of acting or as it is called. } 我很清楚,它所做的是直接调用随机类构造函数方法,调用nextInt方法并生成一个存

我非常怀疑这种行为被称为什么,以及它在记忆中是如何执行的

在main()方法中,我创建了以下句子或说明

public static void main(String[] args) {
    int i = 0;
    int j = new Random().nextInt(100); // As it is called this way of acting or as it is called.
}
  • 我很清楚,它所做的是直接调用随机类构造函数方法,调用
    nextInt
    方法并生成一个存储在
    int j
    变量中的随机数,但我不知道如何定义这种类型的操作,也不知道这样做是否正确

  • public static void main(String[] args) {
        int i = 0;
        int j = new Random().nextInt(100); // As it is called this way of acting or as it is called.
    }
    
  • 我很想知道这种行为叫什么

谢谢你的关注

医生:对不起。。我在学习

int j = new Random().nextInt(100);
几乎和

Random r = new Random();
int j = r.nextInt(100);
i、 e.两者都创建
Random
类的实例(对象),然后调用该实例的方法

区别在于,在第一种情况下,您不保留对已创建实例的引用,因此无法再次访问该实例,并且由于不存在对该实例的引用,因此可以立即对其进行垃圾收集

正如Andy所建议的,您可以将其视为创建了
Random
类的实例,并将其分配给一个名为
nextInt()
方法的变量,然后退出声明该变量的范围:

int j;
{
    Random r = new Random();
    j = r.nextInt(100);
}
// at this point you have no access to the Random instance

从技术上讲,这个类有一个实例,因为您看到关键字
new

您在这里看到的称为方法链接

首先使用
new Random()
调用构造函数,然后将
nextInt()
方法链接到它

如果您想知道,如果没有类的实例,如何调用方法,简单的答案是您需要一个静态类:)一个好的

但是一个简单的例子是java中的Math类,使用它您可以做到:

double floor = Math.floor(7.343); 

请注意,在调用Math时如何不使用“new”

一个重要注意事项:此代码稍微短了一点,如果不需要再次调用nextInt(),也可以。如果愿意,最好将实例存储在一个变量中的随机类上,因为为多个int值创建多个随机对象的过程太繁重。

new Random()
是类型为
Random
的实例,您所说的“如何定义这种类型的操作”是什么意思?谢谢!!我的意思是,这类项目或声明的名称是什么?匿名类,直接实例?它有什么名字?你可以说它更像
intj;{Random r=new Random();j=r.nextInt(100);}
@Eran非常感谢您我理解此解释,但我想知道接收此类语句的名称。。。匿名类,没有变量实例的直接实例?我不知道它叫什么名字。@Sin我不知道有没有专门的术语。这不是匿名类。@Eran okey!谢谢,我很想知道这类语句的名称。你是指静态方法。如果必须对静态类调用非静态方法,则仍然需要实例化该静态类。是的,NickL,这就是我的意思:)