본문 바로가기
프로그래밍 언어/Java

Java 각 파트별 헷갈리는 부분

by Ing_til_death 2021. 9. 16.

Ch 2 

 

- 실수형: float 4 byte, double 8 byte (3.14는 3.14d에서 d가 생략된 것이다)

- 타입별로 문자 붙이는 것: long 타입(주민번호), float 타입,

- 리터럴(값 그대로), 키워드(int, long, float, final 등), 상수(PI), 변수(변할 수 있는 수)

- 기본형은 8개. 타입이 대문자이면 기본형이 아니다. 

- 유니코드: 연산은 char를 전부 int로 바꾼다(유니코드 값으로) "A"는 65, "a"는 97, "1"은 49

=> 문자열+문자열은 그냥 문자열문자열이다.

 

- 변수의 이름으로 사용할 수 있는 것들:  숫자 시작 X, 예약어 X, 특수문자 $와 _, 한글 사용 가능

 

 

- 참조형 변수: 모든 참조형 변수는 4byte 이다

 

- 자동형변환

// 아직 확실히 못 넘어갔다.... // 이 범위가 무슨 소리지??

- char 타입 변수에 저장될 수 있는 정수 값의 범위. 2byte 이기에 16bit 이는 2**16 까지 가능

 

- public static void main(String [] args)

===>> [] 는 타입 뒤에 붙여도 되고, 변수명 뒤에 붙여도 된다.

// public과 static은 위치가 변경되어도 된다.

// 매개변수 args는 다른 이름이어도 괜춘하다.

 

- 타입과 기본값

boolean: false, char: '\u0000', float: 0.0f, long: 0L

String: null(String은 참조형 타입, 모든 참조형 타입의 기본값은 null)

 

Ch 3 

 

- 삼항 연산자  a>0 ? a : (a=0 ? 0 : -a) 처럼 활용 가능

- 연산의 우선순위

상관 무:  /와 *
<<는 +보다 우선 순위가 뒤다. (<<는 뒷 숫자만큼 2의 n제곱해서 앞 숫자와 곱하는것)
|| 는 &&보다 우선 순위가 뒤다.
 

- % 적극 활용 (나머지가 0인 경우가 있기에, int a % b >0 ? x : y 등으로 이용)

- 소수점 x번째 자리에서 반올림해야한다. Math.round() 사용하면 되지만, 그렇지 않다면!

=> x번째 자리가 소수점 첫번째가 될 수 있도록 곱하고, 0.5를 더한다.

(반올림 대신, 0.5 더해서 올림 되지않으면 어차피 반올림해도 오르지 않는것이기에)

-> 그리고 나서 int타입으로 변환하고 곱한 만큼을 f붙여서 나누면 된다.

 

- printf에서 i++ 여도 증가하는 것이다!! + 덧셈연산자일 때는 내용 변경없이 새로운 값을 만들어주기 때문에 i 값 변화x

 

- 이항 연산은 반드시 타입 일치시키고 실행한다.

- double과 float 연산은 둘 다 double타입으로 변한다. 정확한 근사값은 float타입이다.

- char타입에서 숫자일 때 조건 // '0' <= X && X<= '9'

 

 

Ch 4

 

 

 

Ch 5

 

 

 

Ch 6

 

 

 

Ch 7

- 객체지향에서 캡슐화, 상속, 추상화, 다형성이 중요. 

 

- 오버라이딩:  부모 클래스에서 대략 정의된 동작을, 자식 클래스에서 좀 더 구체화시켜 재정의(오버라이딩)하는 것.

구현부만 변경가능, 선언문은 불가능. 

ex) usb에서 컴퓨터로 덮어쓰기할 때, png파일이 hwp파일을 덮을 수는 없지 않은가? 2개가 1개를 덮을 수 없고,,,, 다 같아야한다.  => 반환타입, 메서드이름, 매개변수목록, 인수타입    + 바인딩 방식 : 동적 바인딩 (실행시에 결정)

vs

오버로딩 (Overloading) : 동일 클래스 내 또는 상속 관계 둘 다 가능 (클래스를 차라고 생각하자)
- 주로, 클래스 상속시에, 기존에 없던 새로운 메서드를 추가하는 것 . 어떤 메소드의 구현내용을 다양하게, 다른 형태로 동시에 제공키 위해 사용
 - 조건 : 메소드명 만 같으면 됨 - 바인딩 방식 : 정적 바인딩 (컴파일시에 결정)

 

- this는 iv와 lv 구분할 때 쓰는 참조변수. 

 

- 다형성

(1) 객체지향에서 제일 중요하다.
(2) 조상타입참조변수로 자손 타입 객체를 다루는 것. 참조변수의 차이로 인해 사용할 수 있는 멤버의 개수 상이. 

=> 참조변수는 리모컨. t.hour은 t 리모컨의 hour을 누른다. 넷플릭스가 되는 tv에서 넷플릭스 버튼이 없는 리모컨 vs 넷플릭스 안되는 tv에서 넷플릭스 버튼이 있는 리모컨(리모컨에서 호출했는데 안 나오면 그건 에러)

이렇게 타입의 불일치를 통해 두 가지 장점이 있다. 

(1) 다형적 매개변수: 참조형 매개변수는 메서드 호출시, 자신과 같은 타입 또는 자손타입의 인스턴스를 넘겨줄 수 있다.
(2) 하나의 조상타입 배열로 여러 종류 자손 객체 다룰 수 있다. 

=> 다형성을 활용하면 기능을 확장하거나, 객체를 변경해야할 때 타입 변경 없이 객체 주입만으로 수정이 일어나게 할 수 있다. 또한 상속을 사용한다면 중복되는 코드까지 제거할 수 있으므로 더욱 객체 지향 설계와 가까워

 

 

 

- instanceof 연산자(형변환 가능여부 ->인스턴스의 원래기능을 모두 사용하려는.. true가 나오면 가능)

 

Ch 8

 

 

 

Ch 9

 

댓글