JAVA/Java 기초
자바 이론 복습용 정리
H_eh
2022. 5. 31. 17:31
- 자바
- 개발환경설정: JDK와 이클립스 설치
- .java(자바소스파일) → 컴파일러 → .class(바이트코드) → JVM
- JDK: Java Development Kit → 개발에 필요한 라이브러리와 플랫폼이 포함
- JRE: 자바 실행 환경(런타임 관련된것들)
- 오픈소스: 무상으로 공개한 소프트웨어
- 컴파일: 자바를 기계어로 변경해주는 과정
- bin 폴더: 개발에 필요한 도구들이 들어있다.
- API: Application Programming Interface
- JDK에 포함된 클래스 라이브러리
- 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 변수와 자료형
- 보수: x에 대한 (x+k)의 보수는 k이다
- 데이터 타입
- 기본타입 8개
- null : 레퍼런스 타입의 값으로 사용가능하다. (기본타입에는 사용 불가)
- 문자열: 자바에서 문자열은 객체임(기본타입 아님)
- 레퍼런스 타입: 클래스, 인터페이스, 배열에 대한 레퍼런스
- 기본타입 8개
- 바이트형: 1바이트는 8비트, 동영상이나 음악팡리 재생, 데이터 전송에 사용
- → 바이트 기반 스트림
- 8진수: 0으로 시작하는 숫자 ex) int n = 015 → 0으로 시작=8진수
- 상수: final, 값변경불가, 사용전에값지정가능
- 리터럴: 프로그램에서 사용하는 모든 숫자, 문자, 논리값
- 형변환 : 자동형변환, 강제형변환
- 강제형변환 시 데이터 손실이 될 수 있다. (나누기 연산 시 소수점 아래가 버려짐)
- 제어문
- case 문에 정수, 문자, 문자열 사용가능
- continue 문
- continue 이후의 문장은 수행하지 않고, 검사식 처음으로 돌아가 수행됨
- 반복문을 빠져나가지 않고 건너뛴다
- break 문
- 그 지점에서 더 이상 수행문을 반복하지 않고 반복문을 빠져나온다. 가장 가까운 반복문을 빠져나간다.
- 나머지의 범위는 나누는 수보다 하나 작은 수까지.
- 객체지향 프로그래밍
- 사용목적:
- 상속, 상속으로 인한 업,다운 캐스팅. 캡슐화
- 소프트웨어 재사용성이 높아진다. 생상성이 향상된다.
- 캡슐화
- 클래스에 메서드와 데이터를 넣고 구현
- 공개된 메서드에만 접근가능하도록 제한
- 객체내의 데이터를 보안, 보호
- 클래스의 다중 상속 없음 → 인터페이스를 통해 같은 결과를 얻음
- 다형성 → 오버라이딩 → 동일한 이름의 다른 동작을 하게 한다.
- 클래스: 변수(필드), 생성자, 메서드만 들어갈 수 있다.
- static: 메모리 공간이 따로 생기지 않고 같이 사용 가능한 공간
- 인자(매개변수) 전달 -> call by value
- 값에 의한 호출: 기본타입의 값을 전달하는 경우/레퍼런스를 전달하는 경우
- 기본타입의 값을 전달하는 경우
- 값이 복사되어 전달
- 메소드의 매개변수가 변경되도 호출한 실인자 값은 변경되지 않음
- 레퍼런스를 전달하는 경우
- 객체, 배열의 레퍼런스 전달(복사되어 전달되는게 아님)
- 메소드의 매개변수와 호출한 실인자가 객체나 배열을 공유하게 된다.
- 생성자
- 메서드 (리턴타입이 없다)
- new를 통해 객체를 생성할 때만 호출된다.
- 생성자를 작성하지 않으면 컴파일에 의해 자동으로 기본생성자가 선언된다.
- 사용목적:
- 클래스와 객체
- this: 자신의 레퍼런스를 반환
- this(): 생성자에서 다른 생성자를 호출
- 접근 지정자
- default: 같은 패키지 내의 다른 클래스만 접근 가능
- public: 패키지에 관계없이 모든 클래스에서 접근 가능
- private: 클래스 내에서만 접근 가능(상속받았을 때도 안됨)
- protected: 같은 패키지 내의 모든 클래스에서 잡근 가능, 상속 받은 자식 클래스는 다른 패키지에 있어 접근 가능
- no-static 멤버
- 객체마다 독립적으로 별도 존재 (인스턴스 변수)
- 객체 생성 후 사용가능
- static 멤버
- 객체를 생성하지 않고 사용 가능 (클래스 변수, static 변수)
- 동일한 클래스의 모든 객체에 의해 공유된다
- 상속과 다형성
- 자바는 다중상속을 지원하지 않는다.
- 상속의 횟수 제한이 없다
- 하위 클래스 객체가 생성될 때
- 하위 클래스가 생성될 때는 상위 클래스의 생성자가 먼저 호출된다
- 하위 클래스의 생성자와 상위 클래스의 생성자가 모두 실행된다
- → 하위 클래스 생성자에서 super()를 자동으로 호출된다.
- 동적바인딩 : 서브 클래스에 오버라이딩 된 메소드가 무조건 실행됨
- 추상 클래스
- 추상클래스 : 추상 메서드와 일반메서드 모두 있을 수 있다.
- 추상 메서드는 추상 클래스 안에서만 존재할 수 있다.
- public static final int MAX = 9999; → 공유 가능하고, 수정은 불가능하게 설정
- 추상클래스 사용 이유
- 목적에 맞게 추상메서드를 다르게 구현하여 다형성을 추구할 수 있다
- 인터페이스: 추상메서드와 상수로만 이루워져있다
- 클래스
- Object 클래스: 최상위 클래스
- Wrapper 클래스
- 기본타입을 객체형으로 사용해야 하는 경우.
- 박싱(Boxing): 기본타입을 객체형으로 바꾸는 것
- 언박싱: 객체형을 기본형으로 꺼내는 것
- valueOf(), parseInt() : 클래스 메서드의 일종
- 예외
- Exception 클래스: 예외 클래스의 최상위 클래스
- throws: 예외처리를 메서드가 호출될 때 처리하도록 미룸
- 입출력
- InputStream : 입력 => 파일을 읽어 들일 때 사용
- OutputStream : 저장 => 파일 생성
참고
Do it! 자바프로그래밍 입문
728x90
728x90