我可以在Java的类方法中使用类变量吗?
我正在学习Java,自己练习。 我试图创建一个类变量我可以在Java的类方法中使用类变量吗?,java,class,variables,methods,Java,Class,Variables,Methods,我正在学习Java,自己练习。 我试图创建一个类变量字符串username,我想我会得到结果 “Hi Nat”,因为方法engHi()与变量在同一个类中 class Greetings{ String userName = "Nat"; public static void engHi(String userName){ System.out.println("Hi "+userName); } } public c
字符串username
,我想我会得到结果
“Hi Nat”,因为方法engHi()
与变量在同一个类中
class Greetings{
String userName = "Nat";
public static void engHi(String userName){
System.out.println("Hi "+userName);
}
}
public class Main {
public static void main(String[] args) {
Greetings.engHi();
}
}
我收到了这个信息
Error:(11, 18) java: method engHi in class com.company.Greetings cannot be applied to given types;
required: java.lang.String
found: no arguments
reason: actual and formal argument lists differ in length
然后我在方法engHi()
结果是
Error:(12, 18) java: method engHi in class com.company.Greetings cannot be applied to given types;
required: java.lang.String
found: no arguments
reason: actual and formal argument lists differ in length
我想因为这个方法在同一个类中,所以我想这个方法会自动使用变量username,所以我在调用这个方法时没有输入任何参数。
所以这意味着方法不从同一个类中获取任何变量?或者在调用中添加一个用户名,比如
Greetings.engHi(“Nat”)代码>或从acceptig函数中删除,如
public static void engHi(){
}
您的engHi方法需要一个用户名,您在从Greetings.engHi()调用时不会传递该用户名代码>该错误与使用类变量无关
相反,如果一个方法是用N个参数声明的,则需要用N个参数调用它
声明:engHi(字符串用户名)
-1参数
调用:Greetings.engHi()
-0个参数
参数计数不匹配是语言冲突
此外,在这两行中:
String userName = "Nat";
public static void engHi(String userName){
出现的两个username
指的不是同一件事。第一个声明类实例的成员;第二个是engHi
方法的形式参数,它将被设置为调用者作为实际参数提供的任何值。astatic
方法只能访问static
变量。非静态
方法可以访问静态
和非静态
变量。这里代码的问题是,方法engHi()
需要将用户名字符串作为参数发送进来。如果删除engHi()
的参数,此错误应消失
class Greetings{
String userName = "Nat";
public static void engHi(){ //nothing required to be passed in when you call engHi()
System.out.println("Hi "+userName);
}
}
public class Main {
public static void main(String[] args) {
Greetings.engHi();
}
}
在engHi()方法中创建问候语类的对象
class Greetings{
String userName = "Nat";
public static void engHi(){ //nothing required to be passed in when you call engHi()
System.out.println("Hi "+userName);
}
}
public class Main {
public static void main(String[] args) {
Greetings.engHi();
}
}
public static void engHI() {
Greetings greetings = new Greetings();
System.out.println("Hi " + greetings.userName);
}