[Java] split 특수문자 버그 해결,배열 원소 추출,숫자 비교 총 정리
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' 카테고리의 다른 글
[Java] MD5,SHA-256,AES-128,3DES (4가지 암호화) 문법 총 정리 (0) | 2020.04.30 |
---|---|
[Java] 숫자 양수< - >음수 변환 총 정리 (0) | 2020.04.05 |
[Java] LocalDate,LocalTime,LocalDateTime 총 정리 (10) | 2019.11.13 |
[Java] Error(에러)와 Exception(예외) 그리고 자주 보이는 Exception (0) | 2019.11.06 |
[Java]기본형(primitive type)과 참조형(reference type) (feat.Integer와 int 차이점) (0) | 2019.11.03 |