我对这个动作的名称及其在内存中的执行方式非常怀疑。
在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.
}
我已经清楚地知道它的作用是直接调用Random类的构造函数方法,调用nextInt
方法并生成存储在int j
变量中的随机数,但我不这样做不知道如何定义这种类型的动作,我也不知道执行这种指示是否正确。
我很好奇知道这种动作叫什么。
感谢您的关注。
P.D:对不起..我正在学习
答案 0 :(得分:5)
int j = new Random().nextInt(100);
与
几乎相同Random r = new Random();
int j = r.nextInt(100);
即都创建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
答案 1 :(得分:2)
一个重要的注意事项:这段代码短了一点,如果您不需要再次调用nextInt()也可以。如果可以的话,最好将实例存储在变量的Random类上,因为为多个int值创建多个Random对象的过程太繁琐了。
答案 2 :(得分:1)
从技术上讲,有一个类的实例,因为您看到了关键字100 200 300 0 0 0 0 0 0 400
400 500 600 0 0 0 0 -144118967647076350 0 0
0 3508856861431739000000000000000000 2070380395102208 0 0 0 0 -0 0 1921062897128927200000000000000000
1921062897128927200000000000000000 0 0 0 0 0 -0 0 1921062897128927200000000000000000 0
0 0 1921064599296481200000000000000000 -0 0 0 3501549920349857000000000000000000 3486704852883756600000000000000000 -1 0
0 0 0 0 -5529745792027328500 0 0 0 0 1931126885420802600000000000000000
1931126885420802600000000000000000 0 0 1941291301598365100000000000000000 1990334617392229100000000000000000 0 1940873342092601300000000000000000 0 1931097793829879400000000000000000 1931096401147335200000000000000000
1931096401147335200000000000000000 -0 0 0 0 0 0 0 0 1934835908521006500000000000000000
1934835908521006500000000000000000 -406541672906752 -1 1931096401147335200000000000000000 1931134003576028500000000000000000 0 0 0 0 1990463982126334400000000000000000
1990463982126334400000000000000000 0 0 0 0 0 0 0 0 0
。
在这里看到的称为方法链接。
您首先使用new
调用构造函数,然后将new Random()
方法链接到它。
如果您好奇如何在没有类实例的情况下调用方法,则简单的答案是您需要一个静态类:)好的reference on static classes
但是一个简单的示例是java中的Math类,您可以通过它执行以下操作:
nextInt()
注意调用Math时如何不使用“ new”