프롬프트 AI&OpenAPI&공공데이터를 활용한 웹앱개발자 양성 과정 9일차

서명원·2023년 12월 20일

1. 문자타입

  1. 문자타입은 숫자?
    일반적으로 프로그래밍 언어에서는 문자를 숫자로 컴파일해서 저장한다.
    자바에서 아래 문자들을 숫자로 찍어보면 다음과 같은 값이 나온다.
char값int값
'a'97
'A'65
'가'44032
'힣'55203
  1. 아스키 코드 (ASCII, American Standard Code for Information Interchange)
    컴퓨터에서 문자를 표현하기 위해 사용되는 표준 인코딩.
    초기에는 7비트로 128개의 문자 표현.
    확장된 아스키는 8비트를 사용하여 256개의 문자를 표현.
    상기 표에서 알파벳에 해당한다.

  2. 유니코드(Unicode)
    유니코드는 전 세계의 모든 문자를 하나의 표준으로 표현하기 위한 국제 표준. 초기에는 16비트(2바이트)로 표현.
    나중에 21비트(4바이트)로 확장.
    상기 표에서 한글에 해당한다.


2. 문자열 이해

  1. 문자열 풀
    다음 두 String 객체는 주소값을 비교하면 동일하다는 결과가 나온다.
    String str1 = "Hello";
    String str2 = "Hello";
    같은 문자열 값을 사용 하는 경우는 동일한 문자열 객체를 공유하도록 JVM이 최적화를 수행한다.
    즉 문자열 변수를 초기화 할때 JVM이 문자열 풀을 찾아보고 동일한 문자열이 있는 경우 해당 문자열객체를 할당한다.

  2. String의 불변성(Immutable)
    String 클래스로 한 번 생성된 문자열객체는 변경할 수 없다.
    문자열에 수행되는 모든 연산은 새로운 문자열을 반환합니다.

  3. StringBuffer과 StringBuilder
    가변(mutable)한 특성을 가지고 있어서, 문자열이 변경 될 때마다 새로운 객체를 생성하지 않고, 이미 가지고있던 객체를 수정할 수 있다.
    차이점은 StringBuffer은 멀티쓰레드 환경에서도 안전하다는 것이다.


3. 동등성과 동치성

  1. 동등성 (Equality)
    객체의 내용이 같은지를 비교
    즉, 객체의 상태나 값이 동일한 경우 두 객체는 동등하다. equals로 비교.

  2. 동치성 (Equivalence):
    두 객체가 메모리 상에서 동일한 객체인지를 나타낸다. ==로 비교.


4. Object 메소드 오버라이딩

  1. toString
    만약 어떤 메서드나 연산에서 문자열이 필요한 상황이면, 객체가 주어질 경우 해당 객체의 toString() 메서드가 자동으로 호출된다.
    출력문, 문자열 연결, 디버깅 및 로깅 등에서 유용하게 사용된다.
  2. eqauls
    두 객체가 동등한지를 비교한다.
    컬렉션 프레임워크에서 contains, remove 등의 메서드를 호출할 때, 객체가 인자인 경우 equals메서드를 통해 현재 컬렉션의 요소와 인자값이 동일한지 판단한다.

5. Stream의 쓰레기값

아래 코드 실행시, 문자를 입력하면 오로지 캐치문만 반복 실행된다.

 
        int a = 0;

        while(true) {
        	 System.out.print("숫자 : ");

        	try {
            	a= sc.nextInt();
            	break;
            }catch(InputMismatchException e) {
            	System.out.println("숫자 써라");
            	sc.nextLine();
            }
        }

계속해서 오류가 일으킨 문자값이 입력스트림(System.in)에 남아있고, Scanner 객체가 계속해서 이 남아있는 문자값을 읽고 있기 때문에 오류가 발생한 것이다.
sc.nextLine()을 캐치문에 넣어, 오류시 스트림을 비워주는 처리를 하면 문제는 해결된다.

profile
백엔드 취업을 꿈꾸는 일본어 전공자

0개의 댓글