iT邦幫忙

0

Java: Arrays.toString() 何時要自行再寫一次 public String toString()方法,何時不用?

  • 分享至 

  • xImage

第一段的是直接使用Arrays.toString(),
第二段是寫一個public String toString()方法。

是不是若我想直接print出Array中的元素,直接Arrays.toString()即可?
但若我想利用Array中的元素做變化,就要自行寫public String toString()方法,並return想傳回的句子?

public class num{
	public static void main(String args[]){
		int[] score = {20,30,40};
		System.out.println(Arrays.toString(score));
		//[20,30,40]
	}
}
class Person {
	String name;

	Person(String name){
		this.name = name;
	}
	public String toString(){
		return("My name is " + name);
	} 
}

public class Obj{
	public static void main(String args[]){
		Person[] aryname = new Person[2]; 
		Person objname = new Person("cindy"); 
		Arrays.fill(aryname, objname) 

		System.out.println(Arrays.toString(aryname));
		//[My name is cindy,My name is cindy]
	}
}

以下這段程式,會print出 [I am 20,I am 30,I am 40] 嗎?

public class Obj{
    public String toString(){
		return("I am " + old);
	} 
	public static void main(String args[]){
        int[] old = {20,30,40};
		System.print.out(Arrays.toString(old));
	}
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
海綿寶寶
iT邦大神 1 級 ‧ 2022-01-22 08:38:31
最佳解答

是不是若我想直接print出Array中的元素,直接Arrays.toString()即可?

但若我想利用Array中的元素做變化,就要自行寫public String toString()方法,並return想傳回的句子?

以下這段程式,會print出 [I am 20,I am 30,I am 40] 嗎?

不會,因為光 compile 就過不了

你貼上程式碼之前先自己執行看看
如果沒有環境,可以到Coding Ground,免安裝,即時看到結果
可以省去一些時間

crazy iT邦新手 5 級 ‧ 2022-01-22 10:15:35 檢舉

海綿寶寶謝謝您。
想請問若讓以下這段程式碼,用Arrays.toString方法輸出成[I am 20,I am 30,I am 40],該怎麼修改呢?

public String toString 應該放哪裡呢? 還是只有"物件陣列"可以呼叫?
謝謝您。

import java.util.Arrays;

public class Year{

    public String toString(int[] old){
		return("I am " + old);
	} 
	
	public static void main(String args[]){
        int[] old = {20,30,40};
		System.out.println(Arrays.toString(old));
	}
}

請問列印物件陣列改寫public String toString()時,@override是可寫可不寫嗎?
前面的
public String toString(){
return("My name is " + name);
}
就沒有寫@override,但有看到其他範例程式碼有寫。

import java.util.Arrays;

public class HelloWorld{

    public static <T> String toString(T arr[]) {
        String sret = "I am "+arr[0]+" "+"I am "+arr[1]+" "+"I am "+arr[2]+" ";
        return sret;
    }	
    
	public static void main(String args[]){
        Integer old[] = {20,30,40};
		System.out.println("Arrays.toString:"+Arrays.toString(old));
        System.out.println("Override toString:"+toString(old));
	}
}
1
Samuel
iT邦好手 1 級 ‧ 2022-01-22 12:31:19

可以去override原先繼承自Object Base類中的toString方法

Object 類別是 Java 程式中所有類別的父類別,
JAVA中所有物件都隱含的擴充了 java.lang.Object 類別

https://coolmandiary.blogspot.com/2018/01/javagetset.html

我要發表回答

立即登入回答