我一直在为Java编写一些教程,他们都说要在调用类时创建一个新变量。为什么是这样?我已经测试了一些代码,但它没有这样做。 我已经使用python很长一段时间了,所以我习惯使用动态语言。
请看下面我一直在玩的一些代码:
import java.util.Scanner;
class MyClass {
static String myName(String name) {
return ("Your name is: "+name);
}
static String myAge(Integer age){
return ("Your age is: "+age);
}
static String myGender(String gender){
return ("You are: "+gender);
}
}
class Test{
public static void main(String [ ] args){
Scanner ui = new Scanner(System.in);
MyClass user = new MyClass();
//Output with new variable of class - user
String input = ui.next();
String newname = user.myName(input);
System.out.println(newname);
//Output calling class directly
Integer input1 = ui.nextInt();
String newage = MyClass.myAge(input1);
System.out.println(newage);
//Output with new variable of class - user
String input2 = ui.next();
String newgender = MyClass.myGender(input2);
System.out.println(newgender);
}
}
感谢您的时间。
答案 0 :(得分:4)
如果类中的所有内容都是static
(如您发布的代码中所示),那么就不需要创建类的实例。但是,如果该类具有实例字段和/或方法,那么故事就不同了。例如,考虑这样一个类:
class Person {
private String name;
private int age;
private String gender;
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
String myName() { return "Your name is: " + name; }
String myAge() { return "Your age is: " + age; }
String myGender() { return "You are: " + gender; }
}
然后,您可以创建具有不同内部状态的多个Person
实例,并在代码中交替使用它们:
public static void main(String[] args) {
Person jim = new Person("Jim", 40, "male");
Person sally = new Person("Sally", 12, "female");
report(jim);
report(sally);
}
private static report(Person person) {
System.out.println(person.myName());
System.out.println(person.myAge());
System.out.println(person.myGender());
}
答案 1 :(得分:0)
如果我们使用static关键字创建任何成员,它会立即为所有对象获取内存,当我们在类中具有公共属性时我们使用静态关键字,并且我们不想为所有实例对象创建单独的内存...它确实'我需要创建实例变量来调用它,这个静态块可以共享给所有对象....例如,如果我们有Animal类,我们想描述5种不同类型的狗...比我们没有定义颜色,大小像静态属性...因为它们都有自己不同的大小和颜色....我希望你得到它