자료형, 자료형 진급(Promotion), 형변환 문법(Casting), 연산자, 예외처리, 예외전가, 기본입력
CHAR(Character) : 딱 1글자
String : 문자열
CHAR : 문자를 저장해주는 척 하는 정수형이다?
(문자에 대한 아스키코드상의 숫자가 저장된다는 의미)
아스키코드
65 : A
97 : a
유니코드
EUC-KR (자기국가에서 쓰는 문자코드)
UTF-8 (모든 국가의 문자코드 표현 가능?)
short는 음수영역 표현가능
char는 음수영역 표현X (문자코드를 저장하기 위한 자료형이기 때문에 음수영역 필요없음)
이클립스상 view가 없어졌을 때 찾는 방법
int = 2의 32승 숫자 표현
실수형 : float(4) / double(8)
double형을 많이 씀
실수는 항상 정수형 보다 크다.
**byte수가 중요한게 아니라 자료형이 표현할 수 있는 수의 범위의 대소관계가 중요함.
기본형변수의 특징
-사이즈가 고정되어있다.(불변)
-사이즈가 작다.
참조형변수의 특징
-사이즈가 가변적이다.
-사이즈가 엄청 작을 수도 있지만 엄청 클 수도 있다.
운영체제 : (핵심역할) 시스템의 자원을 관리해주는 소프트웨어. Resource Manager
파일시스템 : 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제
RAM의 영역(분류?)
STACK |
DATA |
HEAP |
TEXT |
기본형 변수는 STACK에 바로 데이터가 보관됨
참조형 변수는 HEAP에 데이터가 보관된다
(STACK에는 데이터가 들어있는 HEAP의 주소값이 저장됨)
===> 그래서 참조 자료형이라고 부르는 것!
STACK은 작고 고정된 데이터를 보관하기에 적합(기본자료형을 저장하기에 적합)
HEAP은 동적메모리라고 불릴만큼 가변적으로 체계가 잡혀있음
String 등 참조 형 변수는 모두 4 byte ⇒ stack에 저장된 참조형 변수 자체는 4 byte, 변수가 참조하는 데이터의 크기는 가변적임.
특수 자료형 void = 無의 영역
Promotion : 진급하다, 승진하다
현상 : 자동으로 발생하는 것
문법 : 우리가 구현해야 하는 것
b = a ;
공간 값
Data type Promotion (현상) 자료형 진급
좁은 범위의 자료 형이 넓은 범위의 자료 형에 대입 될 때의 현상
short = byte / int = short / long = int 등..
Float 또는 Double = 정수형
실수는 항상 정수형 보다 크다.
자동으로 형 변환 된다.
정수 / 정수를 하면 결과값은 정수만 나온다 ex) 10/3=3
실수형으로 Promotion 해서 사용하면 실수값을 받을 수 있다 ex) 10.0 / 3.0 = 3.3333
String이 int보다 큼
sysout(“10”+5)를 하게되면
5가 “5” 문자열이 되어서
“10”+”5”가 되고
결과값이 “105”가 출력된다.
sysout(“결과 : “ + 10 + 5)를 하게 되면
앞이 Sting이기 때문에 “결과 : 10” + 5
다시 프로모션이 일어나서 “결과 : 10” + “5”
결과값이 “결과 : 105”가 된다.
결과값이 15로 나오게 하려면
sysout(“결과 : “ + (10+5))로 연산의 우선순위를
지정해줘야한다.
Data type Casting (문법) 강제 형변환 문법
넓은 범위의 자료 형이 좁은 범위의 자료 형에 대입 될 때
byte = short / short = int / int = long
Char = short 역시 Casting (char 는 unsigned)
Cast 연산자를 이용한다.
좁은 범위 자료형에 넓은 범위의 자료형이 들어가는 것이기 때문에 -> 데이터의 손실 발생할 수 있음
boolean 과 String 은 형 변환이 되지 않는다
boolean에는 true와 false만 들어감
string에는 숫자를 넣을 수 없음. but 덧셈연산은 됨(작은범위의 자료형이 string으로 프로모션됨)
연산자
◎ = ◆
좌항은 공간
우항은 값
우항이 좌항으로 대입된다.
그러므로 좌항은 반드시 변수여야만 한다.
대입연산자
a+=b a=a+b
a-=b a=a-b
a*=b a=a*b
a/=b a=a/b 나누기의 몫을 취함
a%=b a=a%b 나누기의 나머지를 취함
10%=2
10 = 10%2
좌항이 리터럴값이 들어갔기 때문에 대입이 성립안함
(좌항은 반드시 공간이어야함)
A+B 산술연산자 A+=B 대입연산자
두 개는 다른 값이 나옴
A+B는 연산이 되긴 했으나 연산이 저장되도록 지정한 곳이 없음
A+=B는 연산이 된 결과를 좌항인 A에 저장이 됨
증감연산자
A++ A--
++A --A
아래의 연산자와 같다
A=A+1 A=A-1
A+=1 A-=1
A++ A-- 후치형 증감연산자
++A --A 전치형 증감연산자
연산이 수행되는 타이밍이 다르다.
int A=10;
sysout(A++); // sysout이 먼저 실행되고, 그 이후에 증감이 되기 때문에 A가 10으로 출력됨
sysout(A); //위에 증감연산이 실행되었기 때문에 A는11로 출력됨
int A=10;
sysout(++A); // 증감이 먼저 실행되고, sysout이 실행됨 A는 11이 나옴
sysout(A); // A는 11로 출력
이해하기 어려우면/자신없으면 쓰지 않으면 됨
관계연산자
→관계연산자의 연산결과는 boolean값(ture or false)만 나온다
int A=10;
int B=20;
관계연산 |
의미 |
연산결과 |
A==B |
A와 B가 같다 |
false |
A!=B |
A와 B가 같지 않다 |
true |
A<B |
A가 B보다 작다 |
true |
A>B |
A가 B보다 크다 |
false |
A<=B |
A가 B보다 작거나 같다 |
true |
A>=B |
A가 B보다 크거나 같다 |
false |
※ A=<B 라고 쓰면 에러가 난다.
논리연산자
→논리연산자의 연산결과는 boolean값(ture or false)만 나온다
! NOT 부정,반전연산
&& and
|| or
현실 : 10 < x < 20
자바에서는 부등식이 연속으로 나올 수 없다. 하나씩 나누어야 한다.
(이항연산자)
&(Ampersand) AND연산자 그리고
|(Vertical Bar) OR연산자 또는
&& 양쪽의 boolean 값이 true 여야지만 true이다
하나라도 false가 있어도 false이다
좌항 |
우항 |
결과 |
|
T |
&& |
T |
T |
T |
F |
F |
|
F |
T |
F |
|
F |
F |
F |
|| 한쪽의 boolean 값이 true가 있으면 true.
하나라도 true가 있어도 true이다
좌항 |
우항 |
결과 |
|
T |
|| |
T |
T |
T |
F |
T |
|
F |
T |
T |
|
F |
F |
F |
현실 : 10 < x < 20
자바 : 10<x && x<20
논리연산자는 shortcut 연산이 적용된다. shortcut연산 = 지름길 연산
int A=10;
int B=20;
A==B && A!=B
F T
F
(사람의 연산) 우항도 보고 결론 도출
A==B && A!=B
F
AND
F
(컴퓨터의 연산) 좌항의 F를 보고 AND연산을 보고는 F가 있기 때문에 우항을 보지 않고 F를 도출 (우항을 실행조차 안함)
A!=B || A==B
T
||
T
(컴퓨터의 연산) 좌항의 T를 보고 OR연산을 보고는 T가 있기 때문에 우항을 보지 않고 T를 도출
다음 문장에 맞게 조건 식을 만드세요.
int 형 변수 x가 10 보다 크고 20 보다 작다.
AND
char 형 변수 ch 가 알파벳 y 또는 Y와 같다.
OR
int 형 변수 x가 100(포함) ~ 200(포함) 이거나 300과 같다.
10<x && x<20
ch=='y' || ch=='Y' (charcter형이기 때문에 홑따옴표 필수!)
(100<=x && x<=200) || x==300
지금까지 만들었던건 일괄처리형프로그램 batch프로그램
이후부터 만들 것 ⇒ 대화형프로그램
예외 = 사실상 에러를 뜻함
코드를 실행하는 도중 발생하는 내가 생각한 것과 다른 경우의 일이 일어났을 때
그 다른 경우의 일들에 대하여 프로그래머가 대응?하게 됨
예외처리 : 프로그래머가 예외에 대한 정확한 지침을 내리는 것
예외전가 : 예외를 자바 자체에서 처리하도록 전가하는것
예외전가의 필요성
프로그램 안정성을 중시하는 자바언어의 특성 상, 모든 입출력에 대해 발생할 수 있는 예외적인 상황을 대비해야 한다.
지금 까지 사용해왔던 출력 Method 는 모두 내부적으로 예외처리가 되어 있는 함수였지만 대체로 그렇지 않은 것들이 많다.
예외전가 방법
첫 째, 자바에서의 입출력과 관련된 Library를 사용하기 위해 관련 패키지를 import 할 것
import java.io.*;
둘 째, 입/출력이 사용되는 함수 정의 부에 다음을 추가할 것
public static void main(String[] ar) throws IOException
기본입력
System.in.read() – 단일 문자 입력
입력 Buffer로부터 Data를 ASCII 코드 만큼 입력 받음
int 형으로 입력 받으므로 적절한 형 변환이 필요함
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); - 문자열 입력
버퍼에서 Enter 키 까지의 문자열을 입력 받음
String 형으로 입력 받음
하드코딩 : 프로그램의 소스 코드에 데이터를 직접 입력해서 저장한 경우
사용자를 위한, UI(User Interface)를 고려해 만드는것이 필요?
UI가 사용자경험에 적합하지 않은 모습일 때 = UX에 실패했다