我刚接受我所制作的所有节目都必须从这开始。然后我看了一个关于生成随机数的例子#2 here。
import java.util.Random;
/** Generate random integers in a certain range. */
public final class RandomRange {
public static final void main(String... aArgs){
log("Generating random integers in the range 1..10.");
int START = 1;
int END = 10;
Random random = new Random();
for (int idx = 1; idx <= 10; ++idx){
showRandomInteger(START, END, random);
}
log("Done.");
}
private static void showRandomInteger(int aStart, int aEnd, Random aRandom){
if (aStart > aEnd) {
throw new IllegalArgumentException("Start cannot exceed End.");
}
//get the range, casting to long to avoid overflow problems
long range = (long)aEnd - (long)aStart + 1;
// compute a fraction of the range, 0 <= frac < range
long fraction = (long)(range * aRandom.nextDouble());
int randomNumber = (int)(fraction + aStart);
log("Generated : " + randomNumber);
}
private static void log(String aMessage){
System.out.println(aMessage);
}
}
我注意到它有一个公共静态void和一个私有静态void。为什么不将代码组合成public static void下的一件事?更重要的是,这些意味着什么?我做了研究,经常看到“课堂”这个词。什么是课程?我希望我的问题符合指导方针,这是我第一次在这里发帖。感谢。
答案 0 :(得分:3)
我会假设你在这里问过,因为你想要一个简洁的答案,给你一些直觉,而不是深入研究OOP,你可以从教程中提取。
class
是构建对象的模板。但是,在您理解OOP之前,class
只是您正在编写的命令性代码的必要包装,因为Java要求所有代码都存在于类中。
public
表示该方法可公开访问。在除此之外的类中定义的方法可以访问它。 private
具有相反的含义。
static
表示这是一个类级别的函数,它不依赖于类的任何特定实例。
void
表示该方法不返回任何内容。
您当然可以将所有代码放在一个方法中,但这至少会带来以下问题。
答案 1 :(得分:0)
以下不完全正确,非常简化:
大多数一个类等于一个文件。即使如此,他们也可以互相访问(如果在同一个项目/文件夹中)以下是3个示例类:
用主要方法分类:
package ooexample;
public class OOExample {
public static void main(String[] args) {
int min = 2;
int max = 101;
// use of static method
int randomNumberA = MyMath.generateRandomNumber(min, max);
// use of non static method
RandomNumberGenerator generator = new RandomNumberGenerator();
int randomNumberB = generator.randomNumber(min, max);
/**
* does not work, method is private, can not be accessed from an outise class
* only RandomNumberGenerator can access it
*/
// generator.printSomeNumber(123);
}
}
使用静态方法的类。该方法可以通过编写classname.nameOfStaticMethod(...)来访问,参见main方法。
package ooexample;
public class MyMath {
public static int generateRandomNumber(int min, int max) {
return min + (int) (Math.random() * ((max - min) + 1));
}
}
没有静态方法的类。您必须使用new运算符在main方法中创建类,并将创建的类分配给变量。然后,您可以使用该变量来访问该类的PUBLIC方法。除了在类本身内部之外,您无法访问其他任何地方的私有方法。参见主要方法。
package ooexample;
public class RandomNumberGenerator {
public RandomNumberGenerator() {
}
public int randomNumber(int min, int max) {
int randomNumber = min + (int) (Math.random() * ((max - min) + 1));
printSomeNumber(randomNumber);
return randomNumber;
}
private void printSomeNumber(int number) {
System.out.println(number);
}
}