[Java] 변수, 연산자, 조건문
변수
1. 변수
- 변수 (Variable) : 값을 저장할 수 있는 메모리의 특정 번지에 붙여진 이름
- 변수 선언
int a;
- 변수 선언 : 변수를 만드는 것
- 변수 a에는 숫자 정수를 보관할 수 있다.
- 변수를 선언하면 컴퓨터의 메모리 공간을 확보해서 그곳에 데이터를 저장한다. 변수의 이름을 통해서 해당 메모리 공간에 접근한다.
int c,d;
- 한 번에 여러 변수를 선언할 수 있다.
- 변수에 값 대입
a = 10;
- 숫자에 보관할 수 있는 데이터 저장소인 변수 a에 값 10을 저장한다.
- 변수 초기화 : 선언한 변수에 처음으로 값을 대입해서 저장하는 것
int b = 2;
- 변수 선언과 초기화를 한번에 할 수 있다.- 변수를 초기화하지 않고 사용하면 컴파일 에러가 발생한다.
- 변수 값 읽기
System.out.println(a);
- 변수 a의 값을 읽음- 실행 시점에 변수의 값을 읽는다.
- 변수의 값은 반복해서 읽을 수 있다.
- 변수 값 변경
a = 10; // 변수 a에 10을 저장한다. System.out.println(a); // 10 출력 a = 50; // 변수 a의 값을 50으로 변경한다. System.out.println(a); // 50 출력
- 변수의 값을 변경하면 변수에 들어있던 기존 값은 삭제된다.
- 변수의 값을 변경하면 변수에 들어있던 기존 값은 삭제된다.
2. 변수 타입
- 변수 타입의 예
int
: 정수를 다룬다. 예) 1, 100, 1000int i = 2147483647; // -2,147,483,648 ~ 2,147,483,647 (약 20억)
double
: 실수를 다룬다. 예) 0.2, 1.5, 100.121boolean
: true, false 값만 사용할 수 있다.char
: 문자 하나를 다룬다. 작은따옴표(‘)를 사용한다. 예) ‘A’, ‘가’String
: 문자열을 다룬다. 큰따옴표(“)를 사용한다. 예) “hello java”- 자신의 타입에 맞는 데이터 사용
- 각 변수는 지정한 타입에 맞는 값을 사용해야 한다.
- 각 변수는 지정한 타입에 맞는 값을 사용해야 한다.
3. 다양한 변수 타입
- 정수형
byte
: -128 ~ 127 (1byte, 28)short
: -32,768 ~ 32,767 (2byte, 216)int
: -2,147,483,648 ~ 2,147,483,647 (약 20억) (4byte, 232)- 정수에 기본으로
int
를 사용한다. 20억이 넘을 것 같으면long
을 쓰면 된다.
- 정수에 기본으로
long
: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (8byte, 264)
- 실수형
float
: 대략 -3.4E38 ~ 3.4E38, 7자리 정밀도 (4byte, 232)- float형 사용 시,
f
를 붙여서float
형으로 지정해야 한다.
- float형 사용 시,
double
: 대략 -1.7E308 ~ 1.7E308, 15자리 정밀도 (8byte, 264)
- 기타
boolean
: true, false (1byte)char
: 문자 하나 (2byte)String
: 문자열을 포함한다. 메모리 사용량은 문자 길이에 따라 동적으로 달라진다.
4. 변수 명명 규칙
- 규칙
- 변수 이름은 숫자로 시작할 수 없지만, 숫자를 이름에 포함할 수 있다.
- 예 : 1num(X), 1st(X), myVar1(O), num1(O)
- 이름에는 공백이 들어갈 수 없다.
- 자바의 예약어를 변수 이름으로 사용할 수 없다. (예: int, class, public)
- 영문자, 숫자, $, _만 사용할 수 있다.
- 변수 이름은 숫자로 시작할 수 없지만, 숫자를 이름에 포함할 수 있다.
- 관례
- 변수 이름은 의미있고, 그 용도를 명확하게 설명해야 한다.
- 변수 이름은 소문자로 시작하는 낙타 표기법 (camel case)을 사용한다.
- 예 : orderDetail, myAccount
- 클래스 이름만 대문자로 시작한다. 나머지는 모두 소문자로 시작한다.
- 클래스 예: Person, OrderDetail
- 상수는 모두 대문자를 사용하고 언더바로 구분한다.
- 예 : USER_LIMIT
- 패키지는 모두 소문자를 사용한다.
- 예 : org.spring.boot
- 예 : org.spring.boot
연산자
1. 산술 연산자
- 연산자 종류
- 산술 연산자 : +, -, *, /, %(나머지 연산자)
- 10 / 0과 같이 숫자는 0으로 나눌 수 없다. 이 경우 프로그램에 오류 발생
- 증감 연산자 : ++, –
- 비교 연산자 : == , !=, >, <, >=, <=
- 논리 연산자 :
&&
(AND),||
(OR),!
(NOT) - 대입 연산자 : = , += , -=, *=, /=, %=
- 삼항 연산자 : ? :
- 산술 연산자 : +, -, *, /, %(나머지 연산자)
2. 문자열 더하기
- 자바에서는 문자열에 + 연산자를 사용하여 두 문자를 연결할 수 있다.
String result1 = "hello " + "world"; System.out.println(result1); // hello world
- 자바에서는 문자와 숫자를 더하면 숫자를 문자열로 변경한 다음에 서로 더한다.
String result2 = "a + b = " + 10; System.out.println(result2); // a + b = 10
3. 연산자 우선순위
- ()를 사용한 곳이 먼저 계산된다.
- 연산자 우선순위가 애매하거나 복잡하다면 괄호를 고려해야 한다.
4. 증감 연산자
- ++ (증가),
--
(감소) - 전위, 후위 증감연산자
- ++a : 전위 증감 연산자. 증감 연산이 먼저 수행된 후 나머지 연산이 수행된다.
int a = 1; int b = 0; b = ++a // a의 값을 먼저 증가시키고, 그 결과를 b에 대입 System.out.println("a = " + a + ", b = " + b); // 결과 : a = 2, b = 2
- a++ : 후위 증감 연산자. 다른 연산이 먼저 수행된 후 증감 연산이 수행된다.
int a = 1; int b = 0; b = a++; // a의 현재 값을 b에 먼저 대입하고, 그 후 a의 값을 증가시킨다. System.out.println("a = " + a + ", b = " + b); // 결과 : a = 2, b = 1
- 증감 연산자를 단독으로 사용하는 경우, 다른 연산이 없기 때문에 본인의 값만 증가하며, 전위와 후위 둘다 결과가 같다.
++a
,a++
- ++a : 전위 증감 연산자. 증감 연산이 먼저 수행된 후 나머지 연산이 수행된다.
5. 문자열 비교
.equals()
문자열이 같은 지를 비교할 때 사용한다.
String str1 = "문자열1"; String str2 = "문자열2"; boolean result1 = "hello".equals("hello"); //리터럴 비교 boolean result2 = str1.equals("문자열1");//문자열 변수, 리터럴 비교 boolean result3 = str1.equals(str2);//문자열 변수 비교
6. 논리 연산자
- && (그리고) : 두 피연산자가 모두 참이면 참을 반환, 둘 중 하나라도 거짓이면 거짓을 반환
||
(또는) : 두 피연산자 중 하나라도 참이면 참을 반환, 둘다 거짓이면 거짓을 반환- ! (부정) : 참이면 거짓, 거짓이면 참을 반환
7. 대입 연산자
=
: 값을 변수에 할당하는 연산자- 축약 대입 연산자 :
+=
,-=
,*=
,/=
,%=
8. 비트 연산자
- 비트 연산자:
&
,|
,^
,~
,<<
,>>
,>>>
- 실무에서 거의 사용할 일이 없으니, 필요할 때 찾아볼 것
김영한의 자바 입문을 참고하였습니다