![](/img/trans.png)
[英]Java- code in main method or not? If not, how do I call new method from main?
[英]How do I call a method in java from main?
import java.util.*;
import java.io.*;
public class Test extends ArrayList
{
ArrayList<String> list = new ArrayList<String>();
public static void main(String[] args)
{
new Test().add();
new Test().contains();
}
public boolean add(){
list.add("cat");
System.out.println(list);
return true;
}
public void contains(){
if (list.contains("cat")){
System.out.println("list contains cat");
}
else{
System.out.println("list doesn't contain cat");
}
}
}
為什么結果[cat]列表不包含cat? 它一直在給我[cat]列表中不包含cat。 第一種方法可以正常工作,但是第二種方法為什么不起作用? 謝謝...我真的很新。
那是因為您要用不同的實例調用這兩個方法。
new Test().add(); // Creates 1 instance
new Test().contains(); // creates another instance
您需要使用相同的實例來調用這兩種方法。
Test t = new Test();
t.add();
t.contains();
由new Test()
創建的每個新Test
對象都有其自己的list
副本。 這就是為什么當您用另一個實例調用contains()
時,它仍然為空的原因,因為第一個實例的list
僅添加了字符串“ cat”。
因為arraylist不是靜態的,所以您要創建兩個App實例,每個實例都有自己的list變量。
將變量設置為static它將起作用。
static ArrayList<String> list = new ArrayList<String>();
但是最好使用同一實例兩次調用。
Test test = new Test();
test.add();
test.contains();
您要兩次調用new Test()
。 您正在創建兩個實例。 您將添加到第一個,並在第二個(新創建的)中檢查contains
。
您正在創建兩個Test實例。 然后,您創建兩個單獨的“列表”實例。 第一個使用字符串“ cat”,第二個為空。
為什么要擴展ArrayList? 也許你可以這樣嘗試...
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("cat");
System.out.println(list);
if (list.contains("cat")) {
System.out.println("list contains cat");
} else {
System.out.println("list doesn't contain cat");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.