[F-lab 모각코 챌린지 23일차] TIL

JeongheeKim·2023년 6월 23일

TIL

목록 보기
23/66

학습계획


  • 중첩클래스
    • 익명클래스
  • 자바 ch15장 연습문제풀기

Today I Learned


중첩클래스

  • 자바에서는 클래스 안에 클래스가 들어갈 수 있다.
  • 자바 기반 ui처리나, 사용자 입력, 외부의 이벤트에 대한 처리를 하는곳에 많이 사용된다.
  • 코드를 간결하게 하는 장점이 있다.
  • 목적
    • 한 곳에서만 사용되는 클래스를 논리적으로 묶어서 처리할때 → staic nested 클래스 사용 이유
    • 캡슐화가 필요할 때
      • A클래스의 private 변수에 접근하고 싶을때 A클래스 파일에 B클래스를 선언하고 구현을 감춘다. → inner클래스 사용 이유
  • Nested class
    • Static nested class
      • 내부 클래스는 감싸고 있는 외부 클래스의 어떤 변수에도 접근 할 수 있다.
        public class OuterOfStatic {
        	static class StaticNested{
        		
        	}
        }
      • 컴파일 시 아래와 같이 두개의 클래스가 생성된다.
        OuterOfStatic.class
        OuterOfStatic$StaticNested.class
    • inner class
      • local inner class
        • Inner클래스를 감싸고 있는 Outer클래스 객체를 먼저 만들어야한다.

        • 왜 inner클래스를 만드는 것인가?
          - 하나의 클래스에서 어떤 공통적인 작업을 수행하는 클래스가 필요한데 다른 클래스에서는 그 클래스가 전혀 필요없을때

          public class OutOfInner {
          	class Inner {
          		private int value = 0;
          		public int getValue() {
          			return value;
          		}
          		public void setValue(int value) {
          			this.value = value;
          		}
          	}
          }
          public class InnerSample {
          	public static void main(String[] args) {
          		InnerSample sample = new InnerSample();
          		sample.makeInnerObject();
          	}
          
          	public void makeInnerObject() {
          		OutOfInner outer = new OutOfInner();
          		OutOfInner.Inner inner = outer.new Inner();
          		inner.setValue(3);
          		System.out.println(inner.getValue());
          	}
          }
      • anonymous inner class
        • 클래스를 상속하거나 인터페이스를 구현해야만 생성 가능

        • 필드의 초기값, 로컬변수의 초기값, 매개변수의 매개값으로 주로 대입된다.

        • new 생성자() {…}

          Car car = new Car() {
          	public void run() {
          	System.out.println("Car");
          }}
        • 익명 객체에 새롭게 정의된 필드와 메소드

          • 익명 객체 내부에서만 사용됨
          • 외부에서는 익명 객체의 필드와 메소드에 접근 할 수 없다.

  • 자바의신 15장 String 연습문제
    1. String 클래스는 final 클래스인가요? 만약 그렇다면, 그 이유는 무엇인가요?
    • 더 이상 이 클래스를 확장 할 수 없게 하기 위해서
    1. String 클래스가 구현한 인터페이스에는 어떤 것들이 있나요?
    • Serializable, Comparable, CharSequence
    1. String 클래스의 생성자 중에서 가장 의미없는 (사용할 필요가 없는) 생성자는 무엇인가요?
    • 기본생성자
    1. String 문자열을 byte 배열로 만드는 메소드의 이름은 무엇인가요?
    • getBytes()
    1. String 문자열의 메소드를 호출하기 전에 반드시 점검해야 하는 사항은 무엇인가요?
    • null
    1. String 문자열의 길이를 알아내는 메소드는 무엇인가요?
    • length()
    1. String 클래스의 equals() 메소드와 compareTo() 메소드의 공통점과 차이점은 무엇인가요?
    • 공통점: 객체의 주소값이 아닌 값만 가지고 비교한다는 것이고 리턴값은 다르다
    • 차이점 :
      • equals() : boolean값 리턴
      • compareto(): 같을때 0 다를땐 문자들의 차이의 값 리턴
    1. 문자열이 "서울시"로 시작하는지를 확인하려면 String의 어떤 메소드를 사용해야 하나요?
    • startsWith()
    1. 문자열에 "한국"이라는 단어의 위치를 찾아내려고 할 때에는 String의 어떤 메소드를 사용해야 하나요?
    • indexOf()
    1. 위의 문제의 답에서 "한국"이 문자열에 없을 때 결과값은 무엇인가요?
    • 1
    1. 문자열의 1번째부터 10번째 위치까지의 내용을 String으로 추출하려고 합니다. 어떤 메소드를 사용해야 하나요?
    • substring()
    1. 문자열의 모든 공백을 표시로 변환하려고 합니다. 어떤 메소드를 사용하는 것이 좋을까요?
    • replaceAll()
    1. String의 단점을 보완하기 위한 두개의 클래스는 무엇인가요?
    • StringBuffer,StringBuilder
    1. 문제의 답에서 문자열을 더하기 위한 메소드의 이름은 무엇인가요?
    • append()

0개의 댓글