자료형, 자료형 진급(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

 

https://kim-dj.tistory.com/6




기본형 변수는 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에 실패했다