본문 바로가기
멀티캠퍼스/복습

자바

by 세크레투스 2023. 8. 17.
반응형
SMALL

1. 파라미터 : 메서드에 데이터를 전달하는 매개변수

 

2.메소드 호출문의 작성 방법

- main이 아닌 메소드는 자동으로 실행되지 않음 : 명시적인 호출(호출문)을 해야 실행됨

 

3. 결과를 리턴하는 메서드

- 리턴값(return value) : 메소드가 호출한 쪽으로 넘겨주는 메소드의 실행 결과

- 리턴값을 리턴하는 메소드 호출문의 형식

변수 = 메소드이름(파라미터1, 파라미터2, 파라미터3);

 

4. return 문

- 결과 리턴 : return 식;

- 결과 없이 리턴 : retun;

 

5. 인스턴스 멤버란?

- 객체(인스턴스)마다 가지고 있는 필드와 메소드 : 인스턴스 필드, 인스턴스 메소드라고 부름

- 객체 소속된 멤버이기 때문에 객체(인스턴스) 없이 사용 불가

 

6. this

- 객체(인스턴스) 자신의 참조(번지)를 가지고 있는 키워드

- 객체 내부에서 인스턴스 멤버임을 명확히 하기 위해 this. 사용

- 매개변수와 필드명이 동일할 때 인스턴스 필드임을 명확히 하기 위해 사용

 

7. 필드의 내용

- 객체의 고유 데이터

- 객체가 가져야 할 부품 객체

- 객체의 현재 상태 데이터

 

8. 필드 선언

- 타입필드 [=초기값];

String company = "현대자동차";

 

9. 필드의 기본 초기값

- 초기값 지정되지 않은 필드 : 객체 생성시 자동으로 기본값으로 초기화

분류 데이터 타입 초기값
기본 타입 정수 타입 byte
char
short
int
long
0
\u0000 (빈 공백)
0
0
0L
실수 타입 float
double
0.0F
0.0
논리 타입 boolean false
참조타입 배열
클래스(String 포함)
인터페이스
null
null
null

 

10. 필드 사용

- 필드 값을 읽고, 변경하는 작업

- 필드 사용 위치

- 객체 내부: "필드이름"으로 바로 접근

- 객체 외부: "변수.필드이름"으로 접근

 

11. 객체 지향 프로그래밍

- OOP: Object Oriented Programming

- 부품 객체를 먼저 만들고 이것들을 하나씩 조립해 완성된 프로그램을 만드는 기법

 

12. 객체(Object)란?

- 물리적으로 존재하는 것 (자동차, 책, 사람)

- 추상적인 것(회사, 날짜) 중에서 자신의 속성과 동작을 가지는 모든 것

- 객체는 필드(속성)과 메소드(동작)으로 구성된 자바 객체로 모델링 가능

 

13. 객체의 상호작용

- 객체들은 서로 간에 기능(동작)을 이용하고 데이터를 주고 받음

 

14. 객체간의 관계

- 객체 지향 프로그램에서는 객체는 다른 객체와 관계를 맺음

- 관계의 종류

* 집합 관계 : 완성품과 부품의 관계

* 사용 관계 : 객체가 다른 객체를 사용하는 관계

* 상속 관계 : 종류 객체와 구체적인 사물 객체 관계

 

15. 객체 지향 프로그래밍의 특징

- 캡슐화

* 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것

* 외부 객체는 객체 내부 구조를 알지 못하며 객체가 노출해 제공하는 필드와 메소드만 이용 가능

* 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록

* 자바 언어는 캡슐화된 멤버를 노출시킬 것인지 숨길 것인지 결정하기 위해 접근 제한자

- 상속

* 상위(부모) 객체의 필드와 메소드를 하위(자식) 객체에게 물려주는 행위

* 하위 객체는 상위 객체를 확장해서 추가적인 필드와 메소드를 가질 수 있음

* 상속대상 : 필드와 메소드

* 상속의 효과

** 상위 객체를 재사용해서 하위 객체를 빨리 개발 가능

** 반복된 코드의 중복을 줄임

** 유지 보수의 편리성 제공

** 객체의 다형성 구현

 

16. 객체를 참조하는 배열

- 기본 타입(byte, char, short, int, long, float, double, boolean) 배열

* 각 항목에 직접 값을 가지고 있음

- 참조 타입(클래스, 인터페이스) 배열 - 각 항목에 객체의 번지 가짐

 

17. 배열 복사

- 배열은 한 번 생성하면 크기 변경 불가

- 더 많은 저장 공간이 필요하다면 보다 큰 배열을 새로 만들고 이전 배열로부터 항목 값들을 복사

 

18. 배열 복사 방법

- for문 이용

- System.arrayCopy() 메소드 이용

- Arrays 클래스 이용

 

19. 향상된 for문

- 배열 및 컬렉션의 항목 요소를 순차적으로 처리

- 인덱스 이용하지 않고 바로 항목 요소 반복

for(②타입 변수 : ①배열) {

③실행문;

}

int[] scores = {95, 71, 84, 93, 87};
int sum = 0;

for(int score : scores) {
	sum = sum + score;
}

 

20. 배열이란?

- 같은 타입의 데이터를 연속된 공간에 저장하는 자료구조

- 각 데이터 저장 위치는 인덱스 부여해 접근

 

21. 배열의 장점

- 중복된 변수 선언 줄이기 위해 사용

- 반복문 이용해 요소들을 쉽게 처리

 

22. 배열 선언

- 배열을 사용하기 위해 우선 배열 변수 선언

* 타입[] 변수;

int[] intArray;
double[] doubleArray;
String[] strArray;

* 타입 변수[];

int intArray[];
double doubleArray[];
String strArray[];

- 배열 변수는 참조 변수 - 배열 생성되기 전 null로 초기화 가능

타입[] 변수 = null;

* 배열 변수가 null값을 가진 상태에서 항목에 접근 불가

** 변수[인덱스] 읽기 못함

** NullPointerException 발생

 

23. 값 목록으로 배열 생서하는 방법

- 변수 선언과 동시에 값 목록 대입

* 데이터타입[] 변수 = {값0, 값1, 값2, 값3, ...};

- 변수 선언 후 값 목록 대입

* 배열 객체 생성 구문(new ~) 필요

데이터타입[] 변수;
변수 = new 타입[] {값0, 값1, 값2, 값3, ...};

 

24. new 연산자로 배열 생성

- 배열 생성시 값 목록을 가지고 있지 않음

- 향후 값들을 저장할 배열을 미리 생성하고 싶을 경우

타입[] 변수 = new 타입[길이];

타입[] 변수 = null;
변수 = new 타입[길이];
int[] intArray = new int[5];

 

25. 타입 별 항목의 기본값

분류 데이터 타입 초기값
기본 타입(정수) byte[]
char[]
short[]
int[]
long[]
0
'₩u0000'
0
0
0L
기본 타입(실수) float[]
double[]
0.0F
0.0
기본 타입(논리) boolean[] false
참조 타입 클래스[]
인터페이스[]
null
null

 

26. 배열의 길이

- 배열에 저장할 수 있는 전체 항목 수

- 코드에서 배열의 길이를 얻는 방법

배열변수.length

int[] intArray = {10, 20, 30};
int len = intArray.length; //3

- 배열의 길이는 읽기 전용

- 배열의 길이는 for문의 조건식에서 주로 사용

 

27. 커맨드 라인 입력

- 배열의 선언과 사용

java 클래스 문자열0 문자열1 문자열2 ... 문자열n-1

 

28. String 타입

- 문자열을 저장하는 클래스 타입

String name;
name = "신용권";
String hobby = "자바";

- 문자열 리터럴 동일하다면 String 객체 공유

String name1 = "신용권";
String name2 = "신용권";

- new 연산자를 이용한 String 객체 생성

* 힙 영역에 새로운 String 객체 생성

* String 객체를 생성한 후 번지 리턴

String name1 = new String("신용권");

String name2 = new String("신용권");

 

29. 데이터 타입 분류

- 기본 타입

* 정수 타입 : byte, char, short, int, long

* 실수 타입 : float, double

* 논리 타입 : boolen

- 참조 타입

* 배열 타입

* 열거 타입

* 클래스

* 인터페이스

 

30. 변수의 메모리 사용

- 기본 타입 변수 - 실제 값을 변수 안에 저장

- 참조 타입 변수 - 주소를 통해 객체 참조

[기본 타입 변수]
int age = 25;
double price = 100.5;

[참조 타입 변수]
String name = "신용권";
String hobby = "독서";

 

31. JVM이 사용하는 메모리 영역

- OS에서 할당받은 메모리영역(Runtime Data Area)을 세 영역으로 구분

 

32. 메소드 영역

- JVM 시작할 때 생성

- 로딩된 클래스 바이트 코드 내용을 분석 후 저장

- 모든 스레드가 공유

 

33. 힙 영역

- JVM 시작할 때 생성

- 객체/배열 저장

- 사용되지 않는 객체는 Garbage Collector가 자동 제거

 

34. JVM 스택

- 스레드 별 생성

- 메소드 호출할 때마다 Frame을 스택에 추가(push)

- 메소드 종료하면 Frame 제거(pop)

 

35. 변수의 값이 같은지 다른지 비교

- 기본 타입 : byte, char, short, int, long, float, double, boolean

* 의미 : 변수의 값이 같은지 다른지 조사

- 참조 타입 : 배열, 열거, 클래스, 인터페이스

* 의미 : 동일한 객체를 참조하는지 다른 객체를 참조하는지 조사

 

36. null(널)

- 변수가 참조하는 객체가 없을 경우 초기값으로 사용 가능

- 참조 타입의 변수에만 저장 가능

- null로 초기화된 참조 변수는 스택 영역 생성

- ==, != 연산 가능

refVal1 == null; //결과: false
refVal2 != null; //결과: true

 

37. NullPointerException의 의미

- 예외(Exception)

* 사용자의 잘못된 조작이나 잘못된 코딩으로 인해 발생하는 프로그램 오류

 

- NullPointerException

* 참조 변수가 null값을 가지고 있을 때

* 객체의 필드나 메소드를 사용하려고 햇을 때 발생

int[] intArray = null;
intArray[0] = 10; //NullPointerException
String str = null;
System.out.println("총 문자수: " + str.length()); //NullPointerException

 

38. 반복문

- 중괄호 블록 내용을 반복적으로 실행할 때 사용

- 종류 : for문, while문, do-while문

 

39. for문

- 반복 횟수를 알고 있을 때 주로 사용

for(①초기화식; ②조건식; ④증감식) {

③실행문;

}

 

40. for문 초기식

- 변수 선언 가능

* for문 블록의 지역변수

* for문 밖에서는 사용 불가

 

41. 반복문의 중첩 가능

 

42. while문

- 조건에 따라 반복을 계속할지 결정할 때 사용

while(①조건식) {

② 실행문;

}

 

43. 키보드로부터 값 읽기

int keyCode = System.in.read();

 

44. do-while문

- 조건 따라 반복 계속할지 결정할 때 사용하는 것은 while문과 동일

- 무조건 중괄호 {} 블록을 한 번 실행한 후, 조건 검사해 반복 결정

 

45. break문

- for문, while문, do-while문 종료 (반복 취소)

- Switch문 종료

- 대개 if문과 같이 사용

* if문 조건식에 따라 for문과 while문 종료할 때 사용

- 반복문이 중첩된 경우

* 반복문이 중첩되어 있을 경우 break; 문은 가장 가까운 반복문만 종료

* 바깥쪽 반복문까지 종료시키려면 반복문에 이름(라벨)을 붙이고, "break 레벨이름"; 사용

 

46. continue문

- for문, while문, do-while문에서 사용

* for문: 증감식으로 이동

* while문, do-while문: 조건식으로 이동

 

47. Math.random() 사용하기

- Math 수학관련 계산 기능을 제공하는 클래스

- random() : 0 ~ 1사이의 랜덤한 소수 리턴(1은 제외)

* 0.0 <= Math.random() < 1.0

 

48. 연산이란?

- 데이터를 처리하여 결과를 산출하는 것

- 연산자(Operations)

* 연산에 사용되는 표시나 기호(+, -,*, /, %, =, ...)

- 피연산자(Operand)

* 연산 대상이 되는 데이터(리터럴, 변수)

- 연산식(Expressions)

* 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것

 

49. 연산자의 종류

연산자 종류 연산자 피연산자 수 산출값 타입 기능 설명
산술 +,-, *, /, % 이항 숫자 사칙연산 및 나머지 계산
부호 +, - 단항 숫자 음수와 양수의 부호
문자열 + 이항 문자열 두 문자열을 연결
대입 =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= 이항 다양 우변의 값을 좌변의 변수에 대입
증감 ++, -- 단항 숫자 1만큼 증가/감소
비교 ==, !=, >, <, >=, <=, instanceof 이항 boolean 값의 비교
논리 !, &, |, &&, || 단항, 이항 boolean 논리적 NOT, AND, OR 연산
조건 (조건식) ? A : B 삼항 다양 조건식에 따라 A 또는 B중 하나를 선택
비트 ~, &, |, ^ 단항, 이항 숫자, boolean 비트 NOT, AND, OR, XOR 연산
쉬프트 >>, <<, >>> 이항 숫자 비트를 좌측/우측으로 밀어서 이동

 

50. 연산의 방향과 우선 순위

- 연산자의 우선 순위에 따라 연산된다.

x > 0 && y < 0

- 동일한 우선 순위의 연산자는 연산의 방향 존재

*, /, %는 같은 우선 순위를 갖고 있다. 이들 연산자는 연산 방향이 왼쪽에서 오른쪽으로 수행된다.

100*2가 제일 먼저 연산되어 200이 산출되고, 그 다음 200/3이 연산되어 66이 산출된다.

그 다음으로 66%5가 연산되어 1이 나온다.

하지만 단항 연산자(++, --, ~, !), 부호 연산자(+, -), 대입 연산자(=, +=, -=, ...)는 오른쪽에서 왼쪽(<-)으로 연산된다.

 

51. 연산의 방향과 우선순위

연산자 연산 방향 우선 순위
증감(++, --), 부호(+, -), 비트(~), 논리(!) 높음



낮음
산술(*, /, %)
산술(+, -)
쉬프트(<<, >>, >>>)
비교(<, >, <=, >=, instanceof)
비교(==,!=)
논리(&)
논리(^)
논리(|)
논리(&&)
논리(||)
조건(?:)
대입(=, +=, -=, *=,/=, %=,&=, ^=, |=, <<=, >>=, >>>=)

- 단항, 이항, 삼항 연산자 순으로 우선순위를 가진다

- 산술, 비교, 논리, 대입 연산자 순으로 우선순위를 가진다

- 단항과 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽이다(→)

- 복잡한 연산식에는 괄호()를 사용해서 우선순위를 정해준다

 

52. 단항연산자란?

- 피연산자가 1개인 연산자

 

53. 단항연산자의 종류

- 부호 연산자 : +, -

* boolean 타입과 char 타입을 제외한 기본 타입에 사용 가능

* 부호 연산자의 산출 타입은 int

- 증감 연산자 : ++, --

* 변수의 값을 1 증가(++) 시키거나 1 감소(--) 시키는 연산자

* 증감 연산자가 변수 뒤에 있으면 다른 연산자 먼저 처리 후 증감 연산자 처리 : ++a; --a; a++; a--;

연산식 설명
++ 피연산자 다른 연산을 수행하기 전에 피연산자의 값을 1 증가시킴
-- 피연산자 다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴
피연산자 ++ 다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴
피연산자 -- 다른 연산을 수행한 후에 피연산자의 값을 1 감소시킴

* ++i; 와 i++; 모두 i = i + 1; 로 동일

* --i; 와 i--; 모두 i = i - 1;로 동일

- 논리 부정 연산자 : !

* Boolean type에만 사용 가능

* 피연산자가 true 이면 false 값을 산출

* 피연산자가 false이면 true 값을 산출

 

54. 비교 연산자 (==, !=, <, >, <=, >=)

- 대소(<, <=, >, >=) 또는 동등(==, !=) 비교해 boolean 타입인 true/false 산출

- 동등 비교 연산자는 모든 타입에 사용

- 크기 비교 연산자는 boolean 타입 제외한 모든 기본 타입에 사용

- 흐름 제어문인 조건문(if), 반복문(for, while)에서 주로 이용

* 실행 흐름을 제어할 때 사용

 

55. 논리 연산자 (&&, ||, &, |, ^, !)

- 논리곱(&&), 논리합(||), 배타적 논리합(^), 논리 부정(!) 연산 수행

- 피연산자는 boolean 타입만 사용 가능

구분 연산식 결과 설명
AND
(논리곱)
true &&
또는
&
true true 피 연산자 모두가
true일 경우에만
연산결과는 true
true false false
false true false
false false false
OR
(논리합)
true ||
또는
|
true true 피 연산자 중
하나만 true이면
연산결과는 true
true false true
false true true
false false false
XOR
(배타적 논리합)
true ^ true false 피 연산자가
하나는 true이고
다른 하나가 false일
경우에만
연산결과는 true
true false true
false true true
false false false
NOT
(논리부정)
  ! true false 피 연산자의
논리값을 바꿈
  false true

 

56. 비트 연산자(&, |, ^, ~, <<, >>, >>>)

- 비트(bit) 단위로 연산하므로 0과 1이 피연산자

* 0과 1로 표현이 가능한 정수 타입만 비트 연산 가능

* 실수 타입인 float과 double은 비트 연산 부가

- 종류

* 비트 논리 연산자(&, |, ^, ~)

* 비트 이동 연산자(<<, >>, >>>)

 

57. 비트 논리 연산자(&, |, ^, ~)

- 피 연산자가 boolean 타입일 경우 일반 논리 연산자

- 피연산자가 정수 ㅌ타입일 경우 비트 논리 연산자로 사용

구분 연산식 결과 설명
AND
(논리곱)
1 & 1 1 두 비트가
모두 1 일 경우에만
연산 결과는 1
1 0 0
0 1 0
0 0 0
OR
(논리합)
1 | 1 1 두 비트 중
하나만 1이면
연산 결과는 1
1 0 1
0 1 1
0 0 0
XOR
(배타적 논리합)
1 ^ 1 0 두 비트 중
하나는 1이고
다른 하나가 0일 경우
연산 결과는 1
1 0 1
0 1 1
0 0 0
NOT
(논리부정)
  ~ 1 0 보수
  0 1

- 비트 연산자는 피연산자를 int 타입으로 자동 타입 변환 후 연산 수행

 

58. 비트 이동 연산자(<<, >>, >>>)

- 정수 데이터의 비트를 좌측 또는 우측으로 밀어 이동시키는 연산 수행

구분 연산식 설명
이동
(쉬프트)
a << b 정수 a의 각 비트를
b만큼 왼쪽으로 이동
(빈자리는 0으로 채워짐)
a >> b 정수 a의 각 비트를
b만큼 오른쪽으로 이동
(빈자리는 정수 a의
최상위 부호 비트(MSB)와
같은 값으로 채워짐)
a >>> b 정수 a의 각 비트를
오른쪽으로 이동
(빈자리는 0으로 채워짐)

 

59. 대입 연산자(=, +=, -=, *=,/=, %=, &=, ^=, |=, <<=, >>=, >>>=)

- 오른쪽 피연산자의 값을 좌측 피연산자인 변수에 저장

result += 10; → result = result + 10;

- 모든 연산자들 중 가장 낮은 연산 순위 -> 제일 마지막에 수행

- 종류

* 단순 대입 연산자

* 복합 대입 연산자 : 정해진 연산을 수행한 후 결과를 변수에 저장

 

60. 대입 연산자의 종류

구분 연산식 설명
단순 대입 연산자 변수 = 피연산자 우측의 피연산자의 값을
변수에 저장
복합 대입 연산자 변수 += 피연산자 우측의 피연산자의 값을
변수의 값과 더한 후에
다시 변수에 저장
(변수=변수+피연산자
와 동일)
변수 -= 피연산자 우측의 피연산자의 값을
변수의 값에서 뺀 후에
다시 변수에 저장
(변수=변수-피연산자
와 동일)
변수 *= 피연산자 우측의 피연산자의 값을
변수의 값과 곱한 후에
다시 변수에 저장
(변수=변수*피연산자
와 동일)
변수 /= 피연산자 우측의 피연산자의 값으로
변수의 값을 나눈 후에
다시 변수에 저장
(변수=변수/피연산자
와 동일)
변수 %= 피연산자 우측의 피연산자의 값으로
변수의 값을 나눈 후에
나머지를 변수에 저장
(변수=변수%피연산자
와 동일)
변수 &= 피연산자 우측의 피연산자의 값을
& 연산 후 결과를
변수에 저장
(변수=변수&피연산자
와 동일)
변수 |= 피연산자 우측의 피연산자의 값을
| 연산 후 결과를
변수에 저장
(변수=변수|피연산자
와 동일)
변수 ^= 피연산자 우측의 피연산자의 값을
^ 연산 후 결과를
변수에 저장
(변수=변수^피연산자
와 동일)
변수 <<= 피연산자 우측의 피연산자의 값을
<< 연산 후 결과를
변수에 저장
(변수=변수<<피연산자
와 동일)
변수 >>= 피연산자 우측의 피연산자의 값을
>> 연산 후 결과를
변수에 저장
(변수=변수>>피연산자
와 동일)
변수 >>>= 피연산자 우측의 피연산자의 값을
>>> 연산 후 결과를
변수에 저장
(변수=변수>>>피연산자
와 동일)

61. 삼항 연산자란?

- 세 개의 피연산자를 필요로 하는 연산자

- 앞의 조건식 결과에 따라 콜론 앞 뒤의 피연산자 선택 -> 조건 연산식

조건식(피연산자 1) ? 값 또는 연산식(피연산자 2) : 값 또는 연산식(피연산자 3)

 

62. 단항 연산자의 종류

- 비트 반전 연산자 : ~

* byte, short, int, long 타입만 피연산자가 될 수 있다.

* 비트값을 반전(0 -> 1, 1-> 0) 시킨다.

* 연산결과를 int 타입을 가짐

 

63. 이항 연산자란?

- 피연산자가 2개인 연산자

- 종류

* 산술 연산자: +, -, *, /, %

* 문자열 연결 연산자 : +

* 대입 연산자 : =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=

* 비교 연산자 : <, <=, >, >=, ==, !=

* 논리 연산자 : &&, ||, &, |, ^, !

* 비트 논리 연산자 : &, |, ^

* 비트 이동 연산자 : <<, >>, >>>

 

64. 산술 연산자

- boolean 타입을 제외한 모든 기본 타입에 사용 가능

- 결과값 산출할 때 Overflow 주의

- 정확한 계산은 정수를 사용

- NaN과 Infinity 연산은 주의할 것

연산식 설명
피연산자 + 피연산자 덧셈 연산
피연산자 - 피연산자 뺄셈 연산
피연산자 * 피연산자 곱셈 연산
피연산자 / 피연산자 좌측 피연산자를 우측 피연산자로
나눗셈 연산
피연산자 % 피연산자 좌측 피연산자를 우측 피연산자로
나눈 나머지를 구하는 연산

 

65. 기본(primitive)타입

- 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입

- 메모리의 최소 기억단위인 bit가 모여 byte 형성

값의 종류 기본타입 메모리 사용 크기 저장되는 값의 범위
정수 byte 1 byte 8 bit 2⁷~2⁷-1 (-128~127)
char 2 byte 16 bit 0~2¹⁶-1
(유니코드:
₩u0000~₩uFFFF,
0~65535)
short 2 byte 16 bit -2¹⁵~2¹⁵-1
(-32,768~32,767)
int 4 byte 32 bit -2³¹~2³¹-1
(-2,147,482,648~
2,147,483,647)
long 8 byte 64 bit -2⁶³~2⁶³-1
실수 float 4 byte 32 bit (+/-)1.4E-45 ~
(+/-)3.4E38
double 8 byte 64 bit (+/-)4.9E-324 ~
(+/-)1.7E08
논리 boolean 1 byte 8 bit true, false

 

66. 실수의 표현

- 부동소수점 방식으로 표현

+(부호) m(가수) x 10ⁿ(n : 지수)

실수 1.2345 -> 0.12345 x  10¹

 

- float : 부호(1bit) + 지수(8bit) + 가수(23bit) = 32bit = 4byte

- double : 부호(1bit) + 지수(11bit) + 가수(52bit) = 64bit = 8byte

 

67. 문자

- 코드(문자셋)

* 문자를 숫자로 매핑한 것

- 종류

* 아스키코드(ASCII)

* 유니코드(Unicode)

- 자바의 문자형

* 유니코드를 저장

* 영문 파트는 ASCII코드와 동일

 

68. 자동 타입 변환

- 프로그램 실행 도중 작은 타입은 큰 타입으로 자동 타입 변환 가능

큰크기타입 = 작은크기타입 -> 자동 타입 변환

byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)

 

69. 타입 변환

- 데이터 타입을 다른 타입으로 변환하는 것

* byte ↔ int, int ↔ double

- 종류

* 자동(묵시적) 타입 변환 : Promotion

* 강제(명시적) 타입 변환 : Casting

 

70. 연산식에서 자동 타입 변환

- 연산은 같은 타입의 피연산자(operand)간에만 수행

* 서로 다른 타입의 피연산자는 같은 타입으로 변환

* 두 피연산자 중 크기가 큰 타입으로 자동 변환

* Ex) int type으로 계산 결과를 얻고 싶다면? -> Double type 변수를 먼저 int 변환 후 계산

- long을 제외한 정수 타입 연산은 int 타입으로 계산됨

- float 타입과 float 타입 연산은 결과도 float

- double 타입이 있다면 double로 결과가 나옴

 

71. 강제 타입 변환

- 큰 타입을 작은 타입 단위로 쪼개기

- 끝의 한 부분만 작은 타입으로 강제적 변환

작은크기타입 = (작은크기타입) 큰크키타입 -> 강제 타입 변환

반응형
LIST

'멀티캠퍼스 > 복습' 카테고리의 다른 글

MiniProject  (0) 2023.10.20
자바3  (0) 2023.08.31
자바2  (0) 2023.08.20
CSS  (0) 2023.08.16
HTML  (0) 2023.08.12