본문 바로가기
개발자로 가는 길(국비지원과정)/1. Java

[210413화] 자바 연산자 + 연습문제

by 레아Leah 2021. 4. 13.
반응형

소스코드: 사람이 만들었을 때 읽을 수 있는 코드 

 

·일반적인 프로그래밍 언어의 경우

소스가 컴파일이라는 과정을 통해 변형되어 확장명이 exe(실행가능) 

소스코드 --> 컴파일 --> .exe

 

·자바의 경우 

소스코드 --> javac --> Byte --> 인터프리터로 .exe라는 확장명의 파일을 만들지 않고 실행 가능하게 함

 

일반적인 프로그래밍 언어는 파일명.exe가 없으면 실행되지 않는다.

자바는 컴파일 후 인터프리터의 도움을 받아 실행을 한다. 확장명이class, class는 인터프리터로 실행이 된다. 

 

[요약] Java

souece code --(compiler)--> class(byte code) -- (interpreter) --> 실행 

 

[복습]

*자료형 : 용량과 함께 반드시 기억할 것 

1) 기본 자료형 

-정수: byte(1), short(2), int(4), long(8) 

-문자형: char(2) 

-실수: float, double 

-불린: boolean 

 

2) 참조 자료형 (reference) 

- 배열 (Array)

- 클래스 Class :

   String(문자열, 가장 많이 사용하는 클래스) : " " 안에 들어있는 0개 이상의 문자들의 집합 

- Enum

 

*값(리터럴), 상수 

-정수형 : 1, 2, 10 ... 

-문자형 : ' '

-실수형 

-불린형 

어긋날 경우, 오류가 난다. 

 

 자바의 기본
: 클래스, 자바는 클래스로 이루어져 있다. 

 

 

소수점은 무조건 큰 데이터 타입을 사용하자! 

float(4), double(8)

 

 

 

 float형에 F를 삽입하면서 데이터 타입을 맞춰줌 

 

★연산의 기본 타입 : int와 double★

 

char는 문자 1개만 나타낼 때 사용하는 자료형 

 

 

 Class String 문자열  

 

자바의 주석: /**/(여러줄 주석) or //(한 줄 주석)  

문서주석: /**

/**

  * 설명을 위한 주석(문서주석)

  */

메소드 혹은 클래스 위에 설명을 위해 사용 

 

 

[이스케이스 시퀀스]

\t 수평 탭
\n 개행 
\' '
\" "
\\ 원 표시

 

\t

 

 

 

\n

 

 

 

문자열 안에서도 사용 가능하다.

" "를 나타낼 때도 사용. 그러나 지저분해서 사용을 추천하지는 않는다. 

 

 

 

 

[식별자]: 변수의 이름 

1, 변수의 이름을 붙인다. 

2. 변수의 형을 지정한다. 

 

-변수명은 소문자로 시작. 

-변수명은 무조건 영어만 사용한다. 

 

 

[변수에 값 대입하기] 

값을 대입 

변수 이름 = 식(expression) ;

name = "저팔계"

"=" 의 왼쪽은 무조건 변수명이 와야한다. 

"=" 의 오른쪽은 값이 와도 되고, 문자열이 와도 된다. 

 

int a,b,c;

a = b = c = 10;

오른쪽 값인 c->b->a 순으로 값 10을 대입함(순서) 

 

a = b = c = 10; 과 

 

a = 0;

b = 0;

c = 0; 는 결국 같은 표현 

 

 

 

[문제1]

 

 

내가 실수한 부분

int kor = 90;

int eng = 80;

이렇게 작성함 

 
데이터타입과 함께 변수를 선언하면 대입할 때, 따로 데이터타입을 넣을 필요가 없다. 

 

 

 

[연산자]

1) 피연산자의 개수로,, 

 

·단항 연산자 :피연산자가 하나.  - + 

int a = 10;

a = -a;  //연산자가 2개인 셈.  

 -a로만 사용하면 안된다. 

 

·이항 연산자 : - + * / % 

·삼항 연산자 :

 

 

문자열1 + 숫자 ===> 하나의 문자열로 만듬  "값" + 10 ==> "값 10"

숫자 + 문자열1 ===> 하나의 문자열로 만듬   10 + "살" ==> "10살"

문자열1 + 문자열2 => "이름" + " " + "홍길동" ==> "이름 홍길동"  

 

 

 

 

2) 연산자는 우선순위가 있다. 그리고! 결합순서가 있다. 

일반적) 좌 -> 우 

 

 

 

"-" 때문에 오류가 나는 중 

"-"는 문자열에서는 연산이 불가능하다.

 

-위에서는 "+"가 더하기 연산자가 아닌 문자를 붙이는 방법으로 사용되었다.

-우선순위를 ( )를 이용해 연산 후 계산된 값으로 출력된다.

 

 

 

3) 연산자는 내부적으로 타입을 맞춘 후 연산을 실시 

    자동으로 작은 타입이 큰 타입으로 맞춰짐! (타입 변환) 

    연산의 기본 타입: 정수(int),  실수(double) 

 

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

 

사람은 값을 확인하지만 컴파일러는 타입을 확인!

10 + 30 ==>  (int) + (int) ==> (int) 

10 + 3.5 ==> (int) + (double) ==> (double) + (double) ==> (double) 

5 / 10 ==>  (int)/(int) ==>  (int)

int/int의 값으로 double이 나올 수 없다. 

 

 

변수 하나의 타입을 큰 데이터타입으로 변경해준다. 

ex) int/int = double형으로 값이 나올 수 없음!
그럴땐, int/double이나 double/int로 하나의 변수의 타입을 큰 데이터타입으로 변경하면 데이터타입이 큰 double형으로 값을 얻을 수 있다.

 

 int kor, eng, mat, total; //모두 int형
double avg; //

avg = total / 3;
avg = total / 3.0;
위의 두 값은 다른 값이 나온다.

 

 

"+" 가 단항/이항에서 사용될 경우 

단항 : 부호 유지 (잘 사용하지 않음) 

이항 : 산술연산(더하기) 

          문자열 결합 

 

= 연산자 

 

산술연산 

+ - * / %

 

 

[오늘의 문제]

 

 

 

 

 

[오후 리뷰 시간]

[문제1]

 

 

선언 후 초기화해야 한다는 점 주의 

컴퓨터는 위에서부터 아래로 차례대로 읽는다는 것 잊지 말기! 

 

f = c * (9/5)+32; 에서 (9/5)의 값은 실수이기 때문에 하나의 값이 double이 되도록 만들어 주기 

 

 

 

 

 

[문제2]

 

 

(내 기준) 변수 선언 부분에서 헷갈려함. 

하나의 메소드 안에서 같은 이름의 변수를 2번 선언할 수 없다. 

 

 

데이터타입이 다르면 연산이 되지 않으므로 데이터타입이 큰 데이터타입으로 바뀌어 연산된다. 

 

[문제3]

 

 

실수한 부분  : int가 아닌 double을 사용한 것.

값이 정수로 떨어지게끔 하기위해 int형을 사용해야했음. 

 

 

[문제5]

 

 

 

 

 

단축키 sysout + ctrl + space Key 

 

문법오류(syntax)은 찾기 쉽지만, 

실행오류(runtime)는 찾기 어려운 편. 

반응형