개발 이야기

카드 번호 마스킹 StringBuilder, charArray 본문

네트워크/java 실습

카드 번호 마스킹 StringBuilder, charArray

개발거미 2021. 7. 20. 22:48

이것은 아래 다른 블로그를 보고 이해가 되지 않는 부분은 따로 정리한 것이다.

 

maskingCard라는 메소드를 보면

  1. 매개 변수로 받는 params의 0번째 list를 가져온다.
  2. StringBuilder 객체를 생성한다
  3. char[] 배열을 선언하는데 여기서 toCharArray() 메소드를 사용한다.

 

StringBuilder

우리가 아는 String과 같은 문자열 클래스인데, 여러 스레드에 사용하기엔 안전하지 않고, 문자열을 생성할 때 길이가 용량을 초과하지 않는다면 새 내부 버퍼를 할당할 필요가 없습니다. 이것이 무슨 뜻이냐면

 

		String str1 = new String("김길");
		String str2 = str1.replace("김", "홍"); // 김을 홍으로 변환
		
		if (str1 == str2) {
			System.out.println("동일한 인스턴스");
		} else {
			System.out.println("다른 인스턴스");
		}
		
		StringBuilder str3 = new StringBuilder("김길");
		StringBuilder str4 = str3.replace(0, 1, "홍"); // 인덱스 0부터 1까지 문자열을 홍으로 변환
		
		if (str3 == str4) {
			System.out.println("동일한 인스턴스");
		} else {
			System.out.println("다른 인스턴스");
		}

실행 결과에서 알 수 있듯이 str1과 str2는 서로 다른 인스턴스이고, str3과 str4는 같은 인스턴스를 참조하기 떄문에 위에서 설명된 새 내부 버퍼를 할당할 필요가 없지는 것 입니다.

 

toCharArray

변수를 통해 입력받은 문자열을 char 형식에 맞게 한 글자씩 나누어 이를 char 배열에 넣는 것 입니다.

 

 

 

 

 

 

 

블로그 : https://tlo-developer.tistory.com/233?category=973130