Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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_Intellij Idea_Methods_Call_Packages - Fatal编程技术网

Java 如何调用比较另一个类(包)中两个字符串的方法?

Java 如何调用比较另一个类(包)中两个字符串的方法?,java,intellij-idea,methods,call,packages,Java,Intellij Idea,Methods,Call,Packages,我在intellij的java文件夹中有两个类(我指的是两个不同的文件): Main.class和 字段。类 在字段.class中,我只想保存我在应用程序上测试的所有字段(姓名、姓氏、电话等)。例如: String a1 = "Tom"; String b1 = "James"; 在Main.class中,我编写代码并尝试调用一些方法。例如,我想编写一个方法,用于比较Fields.class中的两个字符串。我的结果如下: public class Main { public static vo

我在intellij的java文件夹中有两个类(我指的是两个不同的文件):

Main.class字段。类

字段.class中,我只想保存我在应用程序上测试的所有字段(姓名、姓氏、电话等)。例如:

String a1 = "Tom";
String b1 = "James";
Main.class中,我编写代码并尝试调用一些方法。例如,我想编写一个方法,用于比较Fields.class中的两个字符串。我的结果如下:

public class Main {
public static void main(String[] args) {

    String var1;
    String var2;

    class equalsM {
          void equalsMethod(String a1, String b2) {
            if (a1.equals(b1)) System.out.println("OK");
            else System.out.println("Bad");
        }
    }
我想写一次方法,每次需要时都调用这个方法

我的问题是:我不知道如何在Main.class中调用方法equalsMethod,并比较字段中的字符串。class


我正在读赫伯特·席尔德的书,但仍然不懂一些基本知识

调用方法取决于其状态。有两种方法:实例方法和类方法。实例方法只能与实例一起调用,而类方法可以在类上调用(实例化或非实例化)

首先

定义时:

class equalsM {
    void equalsMethod(String a1, String b2) {
        if (a1.equals(b1)) System.out.println("OK");
        else System.out.println("Bad");
    }
}
使用实例方法
equalsMethod
定义类。要调用它,您需要实例化该类:

equalsM i = new equalsM();
i.equalsMethod("foo","bar");
这可能不是您所期望的,因为没有必要将这样一个类实例化为行为类似于函数的对象。您可能需要一个静态方法,如:

class equalsM {
    static void equalsMethod(String a1, String b2) {
        if (a1.equals(b1)) System.out.println("OK");
        else System.out.println("Bad");
    }
}
在这种情况下,它可以是:

equalsM.equalsMethod("foo","bar");
第二

不要为这种需要使用内部类,在外部定义
equalsM
类,并按照建议使用它

第三,

像许多约定中建议的那样拼写类:
EqualsM
(第一个字母大写)


如前所述,您的设计非常糟糕,我建议您阅读基本OOP。

如果您不需要定义内部类,那么您可以使用静态方法来执行代码,也可以使用其他人建议的上述示例

public class Main {

    public static void main(String[] args) {

        Fields field = new Fields();

        String var1 = field.a1;
        String var2 = field.b1;
        equalsMethod(var1,var2);
    }

    private static void equalsMethod(String var1, String var2) {
        if (var1.equals(var2)) {
            System.out.println("OK");
        }
        else {
            System.out.println("Bad");
        }   
    }
}

equalsMethod方法不是主类的方法。它是在主类的主方法中定义的局部内部类equalsM的方法。直接在主类中定义方法。将其设置为静态,因为它是一个纯实用方法,不需要访问Main的任何实例的状态。也将其公开,使其在任何地方都可见,并使用Main.equalsM(…)从任何地方调用它。这是Java入门书籍或Java教程中所涵盖的基本内容。在提问之前先读一遍。谢谢,但是我想使用Main.java中Fields.java的数据。这并不能解决我的问题。如果它不能解决问题,那就意味着你做错了什么。但是你没有发布你的尝试,所以不可能说出什么。你也不可能在这么短的时间内阅读并消化我链接的Java教程。所以退一步,读一读。仔细地写:static void equalsMethod(字符串a1,字符串b1){if(a1.equals(b1))System.out.println(“OK”);else System.out.println(“Bad”)}我得到了一个错误。无法解析符号a1、B1,谢谢。但是如何在Main.java项目中使用Fields.java中的数据呢?如何调用我的方法并使用Fields.java中的数据?不可能吗?