Java中通过构造函数调用无实例方法
我非常怀疑这种行为被称为什么,以及它在记忆中是如何执行的 在main()方法中,我创建了以下句子或说明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方法并生成一个存
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,这就是我的意思:)