배열 toString () 방법, 배열 상용 동작

4397 단어 JavaSEjdk
int[] arr ={1,2,3,4,5};
String arrString = Arrays.toString(arr);
//  [I@7150bd4d
System.out.println(arrString);
//  [1, 2, 3, 4, 5]

자바 에 서 는 모든 클래스 가 자바 라 이브 러 리 에 있 는 클래스 든 당신 이 만 든 클래스 든 모두 object 클래스 에서 계승 되 었 습 니 다.object 에 toString () 방법 이 있 습 니 다. 모든 클래스 를 만 들 때 toString 방법 이 있 습 니 다.
자바 출력 용 함수 print ();대상 이 직접 출력 하 는 것 을 받 아들 이지 않 고 문자열 이나 숫자 같은 출력 만 받 습 니 다.그럼 만 든 대상 을 출력 하려 면 어떻게 합 니까?
package com.spring.h3;

public class Test2 {
    public static void main(String[] args) {
        System.out.println("new Test2()==="+new Test2());
        //     :new Test2()===com.spring.h3.Test2@18a992f
    }
}

print 가 받 아들 이 는 형식 에 따라 s1 은 직접 출력 할 수 없습니다. 그러면 이것 은 컴 파일 하여 실행 할 수 없다 는 것 을 의미 하 는 것 입 니까?아니 지.print 에서 출력 이 문자 나 숫자 가 아 닌 대상 임 을 감지 하면 이 대상 클래스 의 toString 방법 을 호출 합 니 다. 출력 결 과 는 [형식 @ 해시 값] 입 니 다.Object 클래스 의 toString () 방법의 소스 코드 는 다음 과 같 습 니 다.
/**
 * Returns a string representation of the object. In general, the 
 * toString method returns a string that 
 * "textually represents" this object. The result should 
 * be a concise but informative representation that is easy for a 
 * person to read.
 * It is recommended that all subclasses override this method.
 * 

* The toString method for class Object * returns a string consisting of the name of the class of which the * object is an instance, the at-sign character `@', and * the unsigned hexadecimal representation of the hash code of the * object. In other words, this method returns a string equal to the * value of: *

*

 * getClass().getName() + '@' + Integer.toHexString(hashCode())
 * 
*
* @return a string representation of the object.
*/
public String toString() {
return getClass().getName() + "@"+ Integer.toHexString(hashCode());
}
배열 류 에 서 는 이 방법 에 대해 재 작성 (override) 하지 않 았 습 니 다. 재 업로드 (overload) 와 같은 정적 방법 (자바 util. Arrays 참조) 만 있 습 니 다.따라서 배열 이 toString () 을 직접 사용 한 결과 도 [유형 @ 해시 값] 입 니 다.
그래서 배열 을 문자열 로 바 꾸 려 면 다음 과 같이 써 야 합 니 다.
Arrays.toString(a) 

이러한 방법의 toString () 은 형식 이 있 습 니 다. 즉, 출력 은 [a, b, c] 입 니 다. abc 만 출력 하려 면 다음 과 같은 두 가지 방법 이 필요 합 니 다.
방법 1: String 을 직접 구성 할 때 전환 합 니 다.
char[] data = {'a', 'b', 'c'};
String str = new String(data);

방법 2: String 클래스 를 호출 하 는 방법 으로 변환 합 니 다.
String.valueOf(char[] ch)

배열 상용 동작
1. 배열 설명
String[] arr1 = new String[5];  
String[] arr2 = {"a","b","c", "d", "e"};  
String[] arr3= new String[]{"a","b","c","d","e"};  

2. 배열 출력
int[] arr = { 1, 2, 3, 4, 5 };  
String arrString = Arrays.toString(arr);  
   
//     ,     
System.out.println(arr);  
// [I@139a55
   
System.out.println(arrString );  
// [1, 2, 3, 4, 5]

3. 한 배열 에 어떤 값 이 포함 되 어 있 는 지 확인 합 니 다.
 String[] arr= { "a", "b", "c", "d", "e" };  
 boolean b = Arrays.asList(arr).contains("a");  
 System.out.println(b);  
 // true 

4. 두 배열 연결
방법 1
방법 2
방법 3
//  Apache Commons Lang library
 
 int[] arr1 = { 1, 2, 3, 4, 5 };  
 int[] arr2= { 6, 7, 8, 9, 10 };  
 int[] combArr = ArrayUtils.addAll(arr1 , arr2); 

5. 역 출력 배열
방법 1
방법 2
// System.arraycopy()
static String[] concat(String[] a, String[] b) {
      String[] c = new String[a.length + b.length];
      System.arraycopy(a, 0, c, 0, a.length);
      System.arraycopy(b, 0, c, a.length, b.length);
      return c;
 }

6. 배열 의 요 소 를 제거 합 니 다.
//Arrays.copyOf()

public static int[] concat(int[] first, int[] second) {
    int[] result = Arrays.copyOf(first, first.length + second.length);
    System.arraycopy(second, 0, result, first.length, second.length);
    return result;
}

좋은 웹페이지 즐겨찾기