Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在Java的类方法中使用类变量吗?_Java_Class_Variables_Methods - Fatal编程技术网

我可以在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

我正在学习Java,自己练习。 我试图创建一个类变量
字符串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
方法的形式参数,它将被设置为调用者作为实际参数提供的任何值。

a
static
方法只能访问
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);
}