티스토리 뷰
■ Day1~10 총정리
출력 메소드 : 오류 구체화
변수 : 저장공간
자료형 : int(4byte), float(4byte), double(8byte), char(2), String(?), boolean(1)
1byte가 정보의 최소단위
형변환 : 문자+정수 = 정수
입력 메소드
연산자 : 최단삼쉬관리삼대, 결합성
제어문 : 조건문, 반복문(for : 반복 횟수를 알 때, while : 반복 횟수를 모를 때)
배열 : 저장공간의 나열, 시작 주소, 인덱스 0부터 시작? 배열은 시작 주소를 가지고 있으니까
[], 1. 여러 칸 만들기, 2.규칙성 부여
메소드 : 이름(), 저장공간(소스코드의 주소값), 매개변수?화면에서 입력받은 값을 전달받는 공간
클래스 : 반, 한 번씩만 선언하기 위해서, 재사용, 1.타입이다, 2.주어이다, 추상적이다,
추상적인 개념을 구체화시키는 작업(객체화-instance), 객체화를 통해 나온 변수(객체-주소값담김)
추상적인 개념으로 필드에 접근할 수 없다, 필드를 메모리에 올리기 위해서는 생성자
생성자=클래스명(), 생성자는 필드를 초기화할 수 있다.
this(자기자신의 주소값, 필드에 접근한 객체의 주소를 담는 변수)
this() : 자기 자신의 생성자
class A{
int a;
public A(){
this(10);
}
public A(int a){
this.a = a;
}
}
다형성 : 1.오버로딩) 메소드 이름은 같은데, 매개변수가 다르다.
상속(inheritance) : 1.기존에 있는 클래스의 필드를 쓸 때 2.만들다 보니 공통요소 많아서 부모 선언
super : 부모필드, 부모클래스
super() : 부모생성자
다형성 : 2.오버라이딩(재정의, 무시하다)) 부모꺼 무시하고 자식꺼 사용(부모의 메소드명과 동일)
부모필드가 먼저 생성, 자식필드가 나중에 생성
Casting : up, down
부모타입에 자식값을 집어넣으면 up
up된 객체를 다시 자식타입으로 복원할 때 down
추상클래스 : 추상메소드를 필드로 가지고 있는 클래스, abstract
인터페이스 : 틀, 추상클래스를 고도화시킨 문법, implements(지정), 인터페이스의 필드는 구현이 안 되어있다.
마커 인터페이스 : 그룹화
내부클래스
익명클래스 : 이름이 없는 클래스, 필드를 구현하기 위해
함수형 인터페이스 : 한 개의 추상메소드를 선언? 메소드를 구현할 때 이름을 안 쓰려고
람다식 : 이름이 없는 메소드(익명메소드)
람다식 실습 복습
(패키지 : lambdaTask)
--------------------------------------------------
■예외 처리
에러 : 심각한 오류(동작과 제 기능을 못함)
예외(Exception) : 덜 심각한 오류(오타 등)
예외 처리 문법
try{
예외가 발생할 수 있는 문장;
}catch(예외이름 객체명) {
예외 발생 시 실행할 문장;
예외 발생 시 해당 예외 필드가 메모리에 할당된다.
할당된 주소를 선언한 객체로 받지 못한다면 프로그램이 강제 종료된다.
이를 막기 위해 동일한 예외 타입의 객체를 catch문 안에 선언하여 전달되는 주소를 잡아준다.
해당 예외 주소가 담긴 catch문의 문장이 실행된다.
}catch(예외이름 객체명) {
예외 발생 시 실행할 문장;
}...
}finally{
예외 발생 여부에 상관없이 무조건 실행할 문장
※ 외부 장치와 연결했을 경우 다시 닫을 때 주로 사용한다.
}
■예외는 다 클래스로 만들어져 있음
예외가 발생하면 해당 생성자가 바로 호출됨 > 필드가 메모리에 할당됨 > 주소값을 받을 데가 없으면 강제종료됨.
■finally 외부장치랑 연결되어 있을 때 마지막에 닫을 때 씀.
드라이버 : 운영체제와 외부장치랑 연결해주는 통로(열고 닫을 수 있음)
외부장치 : 키보드, 마우스, DB
(패키지 : exceptionTest)
==============================================================
■API(Application Programming Interface)
개발에 필요한 라이브러리들의 집합.
선배 개발자들이 만들어 놓은 소스코드.
- 내부 API
JDK 설치 시 제공해주는 기본 API
docs.oracle.com/javase
api 문서 : api documentation
- 외부 API
선배 개발자들이 개발한 패키지 및 클래스들을 의미한다.
보통 JAR(짜르)파일로 배포하며 자바 프로젝트의 buildPath에 추가하여 사용할 수 있다.
(패키지 : apiTest)
/** api 주석
*
* @author 만든사람
* @since JDK11 (버전정보)
* <br> 줄바꿈
* Calculator
*
* @param 파라미터 변수들에 대한 설명
* @throws 발생할 수 있는 오류
* @see 참고해서 볼 수 있는 클래스 @link
*/
설명하고자 하는 하는 내용 위에 주석 작성
■api짜르 파일 자바 프로젝트에 추가하기
project>build path>configure buildpath>libraries>classpath>add external jars>파일추가
order and exports>select all>apply and close
■ 연습하기 **
JAR 파일로 배포하기
배포할 클래스 또는 패키지 우클릭
> Export > JAVA/JAR file 선택 > Next
> destination을 원하는 경로로 선택
> Export Java source files... 체크
> Finish
JAR 파일을 프로젝트에 추가하기
배포된 JAR파일을 다운 받기
> 프로젝트 우클릭 > Build Path > Configure Build Path
> Libraries 탭 클릭 > ClassPath(안되면 ModulePath) 클릭 > Add External JARs
> 저장된 경로의 .jar파일을 더블 클릭으로 추가 > Apply 클릭
> Orders and Exports 탭 클릭
> Select All 클릭 > Apply and Close
보통 자르파일은 라이브러리에 있음
(클래스 : SmsTest)
-------------------------------------------------------------
■Object 클래스(최상위 부모 클래스, 모든 클래스는 자동으로 Object를 상속받는다)
항상 모든 클래스의 부모 클래스
배울 메소드 3개 >> 알맞은 목적에 맞게 재정의하는 법을 배움
1.toString()
항상 객체명을 출력할 때에는 toString()이 생략되어 있다.
toString()을 통해 출력되는 문자열이 마음에 들지 않는다면, 재정의(오버라이딩)하여 수정하도록 한다.
실무에서는 클래스 선언 시 각 필드의 초기화 여부를 확인하기 위해 toString을 재정의하여 사용한다.
2.equals()
주소값 비교(==).
String 클래스에서 equals를 값 비교로 재정의하여 사용하기 때문에
문자열 비교는 무조건 equals()로 비교한다.
3.hashCode()
(패키지 : objectTest)
(((equals 설명
메모리
Text영역 : 상수, 코드 저장
상수가 메모리에 할당됨
constant pool 에서 만들어진 상수주소를 공유( == )
data1 = "ABC"; > 상수의 주소를 연산할 때 쓰겠다(필드의 주소X)
data2 = "ABC"; > 값이 같아서 주소값을 공유
data3 = new String("ABC"); > 연산할 때 필드의 주소를 연산함., 필드 주소로 구분
data4 = new String("ABC");
선언하는 방법에 따라서 달라짐(값을 선언 -> 상수의 주소를 먼저 연산(필드보다 먼저) / 필드를 선언 -> 필드연산, 주소값이 다른 것임)
== 주소값 비교
문자열클래스에서만 equals가 값비교로 재정의됨. 안에 있는 문자열을 비교.
)))
주소비교가 아닌 내가 원하는 값끼리 비교할 때 equals 재정의하기
jdk8에서 equals메소드 재정의 한 내용
1.주소비교
2.타입비교
3.다운캐스팅해서 원하는 값 비교
**정리
toString은 객체명을 출력할 때 항상 붙기 때문에 간단하게 필드의 값을 눈으로 확인할 수 있음.
재정의해서 필드의 초기화된 값들을 리턴해주면 객체명만 출력했을 때 원하는 값들을 보고 확인할 수 있음.
상위과정에서는 무조건 재정의 해야 함.
equals는 주소가 비교되기 때문에 원하는 값을 비교하기가 힘듦.
재정의해서 원하는 값을 비교할 수 있게끔 해줌.
'2022 > java 2' 카테고리의 다른 글
day13[ArrayLIst 실습,빠른for문] (0) | 2022.08.18 |
---|---|
day12[hashCode,Wrapper Class,Collection Framework_ArrayList] (0) | 2022.08.14 |
day10[추상클래스,인터페이스,내부/익명클래스,람다식] (0) | 2022.08.10 |
day09[day01~09 종합실습] (0) | 2022.08.10 |
day08[상속,저장기억부류,접근권한제어자] (0) | 2022.08.08 |