Java 입문 - 변수/연산/제어문
연산자
-
산술연산자
- +, -, *, /, %
-
- 중복연산자
- 숫자+숫자 → 덧셈연산자
- 문자열+문자열, 숫자 + 문자열 → 연결(concat) 연산자
- 숫자 + 숫자 + 문자 형태로 할 경우 덧셈 연산 후에 문자연결이 이루어지는 점 주의!
- 중복연산자
- / 나누기 연산자
- 파이썬과 작동 방식이 다르니 주의!
-
비교연산자
- 값의 크기를 비교, 제어문 조건식
- ==, !=, <, >, <=, >=
-
논리연산자
- 조건식을 비교, 조건식의 결과는 논리형 (boolean)
- & (and) : 제시된 조건이 모두 True ⇒ True
-
(or) : 제시된 조건중에서 하나라도 True ⇒ True
-
단축논리연산자
- &&
-
- 제시된 조건식1을 수행한 결과에 따라서 조건식 2의 수행여부를 결정하는 논리연산
- 예) (5 == 4) && (4 != 3) [False & True]
- 앞의 (5 == 4) 가 False 이기 때문에 뒤의 (4 != 3)은 연산하지 않고 바로 False 반환
- 수행속도가 그냥 &을 쓰는 것보다 빨라진다
-
증감연산자
- ++, –
- +1, -1
- 전치증감연산자: ++변수명
- 후치증감연산자: 변수명++
- 예) int no = 5
- System.out.println(++no); // 6
- System.out.println(no–); // 6
- System.out.println(no); // 5
-
할당(대입) 연산자
- 변수명 = 값;
-
단축 대입연산자
- +=, -=, *=, /=, %=
- 예) no = no + 3; ⇒ no+=3;
-
삼황연산자
-
조건에 따라 값을 할당
-
변수명 = (조건식) ? 참인경우 할당값 : 거짓인경우 할당값;
-
아래 코드와 동일
if (조건식) { 변수명 = 참인경우할당값; } else { 변수명 = 거짓인경우할당값; }
-
할당 연산자 (=)
변수명 = 값;
-
우측에 올 수 있는 종류: 값, 변수명, 수식, 결과값을 반환하는 메서드호출문(), new 클래스이름();
-
할당 처리 순서
- ①[타입] 변수명 = ②값;
- ①타입을 먼저 지정하여 메모리 할당 후, ②수행 결과의 타입이 같을 경우 ③변수에 값을 저장
-
기억공간의 타입과 할당하는 값의 타입이 같으면 자동할당
-
기억공간의 타입이 할당하는 값의 타입보다 크면 자동할당
-
기억공간의 타입이 할당하는 값의 타입이 다르거나, 할당하는 값의 타입이 더 크면 오류발생
-
명시적 형변환을 통해서 값을 할당 가능
⇒ 하지만 기억공간의 크기가 늘어나는 것이 아니기 때문에 경우에 따라서 값의 손실이 발생할 수 있다.
-
형변환 (type casting)
-
기본형, 객체형
-
형식: [타입] 변수명 = (타입) 값;
- ① 값에 타입을 먼저 지정하여 바꿔준 후 ② 할당 처리 진행
-
자바 기본형 자동 타입캐스팅
byte(8bit) => short(16bit)/char(16bit) => int(32bit) => long(64bit) => float(32bit) => double(64bit)
- float이 비트수는 적지만 long타입보다 표현할 수있는 범위가 더 큼
-
형변환 불가 기본형 : boolean (값의 크기를 갖는 것이 아니라 참/거짓)
제어문
조건문
-
if( ) : 조건식 범위 사용 가능, 순차적으로 조건식 비교
if(조건식) { // true 수행 } if(조건식) { // true 수행 } else { // false 수행 } if(조건식1) { // 조건식1 true 수행 } else if(조건식2) { // 조건식2 true 수행 } else if(조건식N) { // 조건식N true 수행 } if(조건식1) { // 조건식1 true 수행 } else if(조건식2) { // 조건식2 true 수행 } else if(조건식N) { // 조건식N true 수행 } else { // 조건식에 부합되지 않는 경우 기본적으로 수행 }
-
switch( )
- 다중 조건식 비교시에 효율적
- 해당 case(조건)으로 바로 이동해서, break 구문을 만날 때까지 위에서 아래로 순차적으로 수행
- 비교 조건식의 결과인 값을 가지고 비교 (범위로 비교 X)
- 비교 시간이 if 구문에 비해서 빠르다
- expression 타입 : int(byte, short, char: 자동형변환 통해 가능), String (JDK 1.7 부터)
- break; 분기문: break 해당 switch 구문을 빠져나옴, or(또는 연산자) 개념으로 활용
switch(expression) { case "값1": // 수행문; [break;] case "값2": // 수행문; [break;] case X: // 수행문; [break;] [default:] // 수행문; [break;] // default는 반드시 가장 아래에 있어야 하는 것은 아니기 때문에 필요에 따라 break; 를 사용할 수 있다. }
반복문
-
for( ) { }
-
JDK 1.5 : 배열, Collection, items (저장된 갯수만큼 반복) 사용가능 (추후 학습 예정)
-
JDK 1.4
for (초기값; 조건식; 증감값) { // 반복수행문.... }
-
초기값: 0 ~ N, [타입] 변수명 = 초기값, 같은 타입인 경우에만 가능
-
조건식: 0, 1. 조건식이 없는 경우 ⇒ 무한반복
-
증감값: 0 ~ N
-
변수선언: 한 줄에 하나의 변수를 선언하는 것을 권장 (표준)
int no1 = 5; int no2 = 10;
-
-
-
do ~ while( ) { }
- 수행문을 우선 1번 수행하고 난 뒤에 조건식을 비교해서 반복 여부 결정
- 조건식 맨 뒤에 종료를 위한 ;(세미콜론)을 반드시 표기해야 함
- 반복문 수행전에 초기값 선언
- 반복문에서 증감값 처리해주는 로직 수행
do { // 반복 수행문 } while(조건식);
-
while( ) { }
- 조건식을 먼저 비교한 후에 반복 여부를 결정
- 조건식에 부합하지 않으면 한번도 수행되지 않음
- 반복문 수행전에 초기값 선언
- 반복문에서 증감값 처리해주는 로직 수행
while(조건식) { // 반복 수행문 }
변수의 종류
- 변수의 범위 (scope) : Brace 구문 안 { . . . }
- 멤버변수
- 선언위치: class 내부 (멤버)
- 지역변수 / 매개변수
- 선언위치: 메서드 내부, 생성자 내부, 제어문 내부
- 변수의 범위: 메서드 내부, 생성자 내부, 제어문 내부에서만 사용 가능
댓글남기기