-
JAVA - 변수 , 연산자JAVA 2023. 12. 14. 21:06728x90
변수
변수 선언
int a;
int b;
이런 식으로 하나씩 선언도 가능하고,
int c,d;
한 번에 여러 변수도 선언 가능하다.
초기화란?(내가 알던 초기화와는 좀 다른 뜻이어서 처음에 생소한 단어였다..)
- 선언한 변수에 처음으로 값을 저장하는 것을 말한다.
//1. 변수 선언, 초기화 각각 따로
int a;
a = 1;int b = 2; //2. 변수 선언과 초기화를 한 번에
int c = 3, d = 4; //3. 여러 변수 선언과 초기화를 한 번에
초기화하지 않은 변수를 읽으면
java: variable a might not have been initialized
와 같은 오류가 발생하므로 꼭 초기화를 하고 실행을 시키자.
예외 처리는 예외 처리 부분 때 다뤄보는 걸로.변수의 타입
`int` : 정수를 다룬다. 예) `1` , `100` , `1000`
`double` : 실수를 다룬다. 예) `0.2` , `1.5` , `100.121`
`boolean` : 불리언 타입이라 한다. `true` , `false` 값만 사용할 수 있다. 주로 참과 거짓을 판단하는 곳에서 사용한다.
`char` : 문자 하나를 다룰 때 사용한다. 작은따옴표( `'` )를 사용해서 감싸야한다.. 예) `'A'` , `'가'` `String` : 문자열을 다룬다. 큰따옴표를 사용해야 한다. 예) `"hello java"`리터럴(단어의 어원은 문자 또는 글자를 의미한다)
코드에서 개발자가 직접 적은 `100` , `10.5` , `true` , `'A'` , `"Hello Java"` 와 같은 고정된 값을 프로그래밍 용어로 리터럴(literal)이라 한다.
```java
int a = 100; //정수 리터럴
double b = 10.5; //실수 리터럴
boolean c = true; //불리언 리터럴
char d = 'A'; //문자 하나 리터럴
String e = "Hello Java"; //문자열 리터럴
변수의 값은 변할 수 있지만 리터럴은 개발자가 직접 입력한 고정된 값이다. 따라서 리터럴 자체는 변하지 않는다.
숫자 타입
- 정수형
`byte` : -128 ~ 127 (1byte, 28)
`short` : -32,768 ~ 32,767 (2byte, 216)
`int` : -2,147,483,648 ~ 2,147,483,647 (약 20억) (4byte, 232)
`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)
`double` : 대략 -1.7E308 ~ 1.7E308, 15자리 정밀도 (8byte, 264)
- 기타
`boolean` : `true` , `false` (1byte)
`char` : 문자 하나(2byte)
`String` : 문자열을 표현한다. 메모리 사용량은 문자 길이에 따라 동적으로 달라진다. (특별한 타입이다. 자세한 내용은 뒤에서 학습한다)>> 실무에선 보통 int(단위가 크다면 long)와 double, boolean, String을 사용한다고 한다. 나머지는 참고만 하고 넘어가자.
변수명명규칙
규칙
- 변수 이름은 숫자로 시작할 수 없다. (예: `1num` , `1st` )
- 그러나 숫자를 이름에 포함하는 것은 가능하다 (예: `myVar1` , `num1` ).
- 이름에는 공백이 들어갈 수 없다.
- 자바의 예약어를 변수 이름으로 사용할 수 없다. (예: `int` , `class` , `public` )
- 변수 이름에는 영문자(`a-z` , `A-Z` ), 숫자(`0-9` ), 달러 기호(`$` ) 또는 밑줄(`_` )만 사용할 수 있다.관례
**클래스는 대문자로 시작, 나머지는 소문자로 시작**
자바에서 클래스 이름의 첫 글자는 대문자로 시작한다. 그리고 나머지는 모두 첫 글자를 소문자로 시작한다. 여기 에 낙타 표기법을 적용하면 된다.. 이렇게 하면 모든 자바 관례를 다 외울 수 있다!
예시: 클래스는 첫 글자 대문자, 나머지는 모두 첫 글자 소문자로 시작 + 낙타 표기법클래스: `Person` , `OrderDetail`
변수를 포함한 나머지: `firstName` , `userAccount` 여기에 예외가 딱 2개 있다.
상수는 모두 대문자를 사용하고 언더바로 구분한다. (상수는 뒤에서 학습) ex) `USER_LIMIT`
패키지는 모두 소문자를 사용한다. (패키지는 뒤에서 학습) ex) `org.spring.boot`
연산자
산술연산자
`+` , `-` , `*` , `/`. 와 같이 계산을 수행하는 기호를 연산자라 한다. 자바에는 다음과 같은 다양한 연산자가 있다. 실무에서 주로 다루는 연산자 위주로 알아보자.
연산자 종류
산술연산자: `+` , `-` , `*` , `/` , `%` (나머지연산자)
증감(증가 및 감소) 연산자: `++` , `--`
비교연산자: `==` , `!=` , `>` , `<` , `>=` , `<=`
논리 연산자: `&&` (AND), `||` (OR), `!` (NOT)대입연산자: `=` , `+=` , `-=` , `*=` , `/=` , `%=`
삼항 연산자: `? :`문자열 더하기
문자열과 문자열을 더하면 당연히 두 문자열이 같이 나열되지만, 문자열과 숫자를 더해도 같이 나열되서 나온다.
//문자열과 숫자 더하기 1 String result3 = "a + b = " + 10; // a + b = 10 System.out.println(result3); //문자열과 숫자 더하기 2 int num = 20; String str = "a + b = "; String result4 = str + num; // a + b = 20 System.out.println(result4);
연산자 우선순위
- **괄호 ()**
- **단항 연산자** (예: `++` , `--` , `!` , `~` , `new` , `(type)` )
- **산술 연산자** (`*` , `/` , `%` 우선,그다음에 `+` , `-` )
- **Shift 연산자** ( `<<` , `>>` , `>>>` )
- **비교 연산자** ( `<` , `<=` , `>` , `>=` , `instanceof` )
- **등식 연산자** (`==` , `!=` )
- **비트 연산자** (`&` ,`^` ,`|` )
- **논리 연산자** (`&&` , `||` )
- **삼항 연산자** (`?:` )
- **대입 연산자** (`=` , `+=` , `-=` , `*=` , `/=` , `%=` 등등)
사실 외워야 할 필요는 없으며, 연산자 우선순위는 딱 2가지만 기억하면 된다.
>> 상식선에서 우선순위를 사용하자.
>> 애매하면 괄호()를 사용하자.
증감 연산자
- 증가 및 감소 연산자를 줄여서 증감 연산자라 한다.
- ++, --로 표현되며 증가시키거나 감소시킨다.
//증감 연산자 int a = 0; a = a + 1; System.out.println("a = " + a); a = a + 1; System.out.println("a = " + a); ++a; // a = a + 1 System.out.println("a = " + a); ++a; // a = a + 1 System.out.println("a = " + a); --a; System.out.println("a = " + a);
전위, 후위 증감 연산자
- 증감 연산자는 피연산자 앞에 두거나 뒤에 둘 수 있으며, 연산자의 위치에 따라 연산이 수행되는 시점이 달라진다.
-`++a` : 증감 연산자를 피연산자 앞에 둘 수 있다. 이것을 앞에 있다고 해서 전위(Prefix) 증감 연산자라 한다.
-`a++` : 증감 연산자를 피연산자 뒤에 둘 수 있다. 이것을 뒤에 있다고 해서 후위(Postfix) 증감 연산자라 한다.
//전위, 후위 증감연산자 int a = 1; int b = 0; b = ++a; // a의 값을 먼저 증가시키고, 그 결과를 b에 대입 System.out.println("a = " + a + " , b = " + b); //후위 증감 연산자 a = 1; // a 값을 다시 1로 지정 b = 0; // b 값을 다시 0으로 지정 b = a++; System.out.println("a = " + a + ", b = " + b);
비교 연산자
// 비교 연산자 int a = 2; int b = 3; System.out.println(a == b); System.out.println(a != b); System.out.println(a > b); System.out.println(a >= b); //결과를 boolean 변수에 담음 boolean result = a == b; System.out.println("result = " + result);
문자열 비교
// 문자열 비교 String str1 = "문자열1"; String str2 = "문자열2"; boolean result1 = "hello".equals("hello"); // 리터럴 비교 boolean result2 = str1.equals("hello"); // 문자열 변수, 리터럴 비교 boolean result3 = str1.equals(str2); // 문자열 변수 비교 System.out.println(result1); System.out.println(result2); System.out.println(result3);
논리 연산자
//논리 연산자 System.out.println("&&: AND 연산"); System.out.println(true && true); //true System.out.println(true && false);//false System.out.println(false && false);//false System.out.println("||: OR 연산"); System.out.println(true || true); //true System.out.println(true || false);//true System.out.println(false || false);//false System.out.println("! 연산"); System.out.println(!true); //false System.out.println(!false); //true System.out.println("변수 활용"); boolean a = true; boolean b = false; System.out.println(a && b); // false System.out.println(a || b); // true System.out.println(!a); // false System.out.println(!b); // true
논리 연산자 활용
//논리 연산자 활용 int a = 15; //a는 10보다 크고 20보다 작다 boolean result = a > 10 && a < 20; //(a > 10) && (a < 20) System.out.println("result = " + result);
대입 연산자
- 대입 연산자( `=` )는 값을 변수에 할당하는 연산자다. 이 연산자를 사용하면 변수에 값을 할당할 수 있다. 예를들어, `int a = 1` 는 `a` 라는변수에 `1` 이라는 값을 할당한다.
축약(복합) 대입 연산자
- 산술 연산자와 대입 연산자를 한번에 축약해서 사용할 수 있는데, 이것을 축약(복합) 대입 연산자라 한다.
- 연산자 종류: `+=` , `-=` , `*=` , `/=` , `%=`
// 대입 연산자 int a = 5; //5 a += 3; //8 ( 5 + 3) : a = a + 3 a -= 2; //6 ( 8 - 2 ) : a = a - 2 a *= 4; //24 ( 6 * 4 ) : a = a * 4 a /= 3; //8 ( 24 / 3 ) : a = a / 3 a %= 5; //3 ( 8 % 5 ) : a = a % 5 System.out.println(a);
'JAVA' 카테고리의 다른 글
JAVA - 배열 (0) 2023.12.28 JAVA - Scanner사용 및 훈련 (1) 2023.12.27 JAVA - 스코프(Scope), 형변환 (0) 2023.12.18 JAVA - 반복문 (1) 2023.12.18 JAVA - 조건문 (0) 2023.12.17