Java 배열 원소

반응형

1. 거슬리는 Enumeration Warning

 

Enumeration를 쓰다 보면 위 사진처럼 노란색 Warning 표시가 뜹니다.

노란색 Warning 표시가 거슬리시죠

Enumeration is a raw type. References to generic type Enumeration<E> should be parameterized

수정 전

Enumeration netInterfaces = null;

 

수정 후

Enumeration<?> netInterfaces = null;

변경 해주면 됩니다.


2.Java split 특수문자 버그

 

String str = "172.10.0.100" ;
String[] result = str.split(".");

String str = "사성|엘취" ;
String[] result = str.split("|");

 

예시대로 코드를 작성 할 경우 split 함수가 작동하지 않습니다.

눈에 안약넣고 찾아봐도 틀린 코드가 없습니다.

 

JDK 1.8 기준 특수문자 스플릿 버그입니다.

 

해결

String str = "172.10.0.100" ;
String[] result = str.split("\\.");

String str = "사성|엘취" ;
String[] result = str.split("\\|");

split 함수 안에 \(역슬래쉬)를 추가 해주면 됩니다.

 

※헷갈림 주의

Java에서만 뜨는 버그입니다

Javascript 됩니다.


3.Java 배열 원소 뽑기

 

split 버그를 찾으려고 배열 안에 잘 들어갔나 안 들어갔나 디버깅 중

java.lang.ArrayIndexOutOfBoundsException를 뱉어서 배열의 길이를 먼저 체크했는데

0이 나왔길래 원소를 보려 했더니

배열 원소 뽑는 게 순간 헷갈렸다.

그래서 준비했습니다.

String[] result = {"arr1","arr2","arr3"};
LOG.info(result);

결과 값 : [Ljava.lang.String;@주소값

[Ljava.lang.String;@주소 값 말고 arr1, arr2, arr3 즉, 배열의 원소들을 뽑고 싶을 땐 이런 식으로 사용하면 안 됩니다.

 

해결

import java.util.Arrays;

int[] result = new int[] {1, 2, 3, 4, 5};
System.out.print(Arrays.deepToString(result));

String[] result = {"arr1","arr2","arr3"};
System.out.print(Arrays.toString(result));

깨알 정보

[Ljava.lang.String;@3 db386 ff 맨 앞에 L이 있으면 배열 주소

java.lang.String;@3db386ff 없으면 그냥 String 주소


4.Java의 Integer, int 숫자 비교의 주의사항

 

java에서 숫자 비교는 ==,!=,>, < 여러 연산자가 있는데

 

int와 int 끼리 비교할 땐 ==이 값을 비교 하지만

Integer와 Integer를 비교 할 땐 ==는 개념이 조금 다르다.

 

Integer wr_i = new Integer(100); 
Integer wr_j= new Integer(100);

System.out.println(wr_i == wr_j); //false 
System.out.println(wr_i.equals(wr_j)); //true

위 코드를 보면 ==로 했을 땐 false가 나온다.

바로 Integer 객체에 주소 값으로 비교했기 때문이다.

 

해결

System.out.println(wr_i.equals(wr_j)); //true

String 타입도 마찬가지로 == 비교하진 않잖아요 equals 비교하지

똑같은 원리입니다. 자세한 건 이전에 글을 작성했습니다.

 

깨알 정보

1) int == Integer

int i = 1;
Integer j = 1;

if (i == j)  //true

2) int == new Integer

int i = 1;
Integer j = new Integer(1);

if (i == j)  //true

3) Integer == Integer

Integer i = 1;
Integer j = new Integer(1);

if (i == j) //false 

 

참고 글

 

[Java]기본형(primitive type)과 참조형(reference type) (feat.Integer와 int 차이점)

오늘은 Java 기본형(primitive type)과 참조형(reference type) 종류 및 특징,사용 이유에 대해 시작하겠습니다. 자바는 크게 기본형(primitive type), Wrapper Class 참조형(reference type)으로 나눠진다. Primi..

java119.tistory.com

 

반응형

+ Recent posts