Literal
Literal의 종류 (종류에 따라 사용할 수 있는 연산자가 다르다.)
숫자 | 문자 | 문자열 | 논리 |
정수-21, 실수-3.14 | 'a' | "안녕하세요" | true, false |
주석
// 한줄주석 /*(이 사이에 쓰면서 Enter를 치면 여러줄 주석 가능)*/
public static void main(String[] args) {
// 한줄 주석
/* 여러줄 주석
* 하나
* 둘
* 셋
* 넷
* */
숫자 형태의 값
정수 형태의 값 출력
System.out.println(123);
실수 형태의 값 출력
System.out.println(1.23);
문장 형태의 값
문자 형태의 값은 홑따옴표(single-quotation)으로 감싸주어야 한다.
System.out.println('a');
두 개 이상은 문자열이기 때문에 에러가 발생한다.
//System.out.println('ab');
아무 문자도 기록되지 않은 경우도 에러가 발생한다.
//System.out.println('');
숫자 이지만 홑따옴표로 감싸져 있는 경우 문자 '1'이라고 판단한다.
System.out.println('1');
문자열 형태의 값 출력
문자열은 문자 여러 개가 나열된 형태를 말하며 쌍따옴표(double-quotation)으로 감싸주어야 한다.
System.out.println("안녕");
정수이지만 쌍따옴표로 감싸져있기 때문에 문자열로 보아야 한다.
System.out.println("123");
아무 값도 없는 빈 쌍따옴표도 문자열로 취급한다.
System.out.println("");
한 개의 문자로 쌍따옴표로 감싸면 문자열이다. (출력값은 같더라도 문자 a와는 다르다.)
System.out.println("a");
논리 형태의 값 출력
true혹은 false 값을 논리형이라고 한다.
System.out.println(true);
System.out.println(false);
연산
값의 형태에 따라 사용할 수 있는 연산자의 종류와 연산의 결과가 달라진다.
숫자와 숫자의 연산
-정수와 정수의 연산
수학적으로 사용하는 사칙연산에 추가로 나머지를 구하는 mod를 사용할 수 있다.
System.out.println(123 + 456);
System.out.println(123 - 23);
System.out.println(123 * 10);
System.out.println(123 / 10);
System.out.println(123 % 10);
-실수와 실수의 연산
실수끼리의 연산도 수학에서 사용하는 사칙연산에 나머지를 구하는 mod를 사용할 수 있다.
System.out.println(1.23 + 1.23);
System.out.println(1.23 - 0.23);
System.out.println(12.3 * 10.0);
System.out.println(1.23 / 10.0);
System.out.println(1.23 % 1.0);
-정수와 실수의 연산
정수와 실수의 연산도 사칙 연산에 나머지를 구하는 mod를 사용할 수 있다.
정수와 실수 연산의 결과는 항상 실수가 나온다.
문자의 연산
-문자와 문자의 연산
문자끼리의 연산도 사칙연산에 mod 연산까지 가능하다.
이 때 출력값이 ab 일거라고 생각했지만, a, b자체 고유의 숫자를 가지고 있어 계산되어 나왔다.
System.out.println('a' + 'b'); //195
System.out.println('a' - 'b'); //-1
System.out.println('a' * 'b'); //9506
System.out.println('a' / 'b'); //0
System.out.println('a' % 'b'); //97
-문자와 정수의 연산
문자에 정수를 연산하는 것도 가능하다.
문자 'a'와 숫자 1과 계산된 결과 문자 'a'는 숫자 97이라는 것을 알게된다.
컴퓨터는 문자를 인식하지 못하고 숫자로만 인식할 수 있기 때문에, 모든 문자에 대응되는 숫자들이 매칭이 되어 있다.
(아스키코드 표 참조)
System.out.println('a' + 1); //98
System.out.println('a' - 1); //96
System.out.println('a' * 1); //97
System.out.println('a' / 1); //97
System.out.println('a' % 1); //0
-문자와 실수의 연산
실수도 숫자이기 때문에 정수의 연산처럼 모든 연산이 가능하다.
System.out.println('a' + 1.0); //98.0
System.out.println('a' - 1.0); //96.0
System.out.println('a' * 2.0); //194.0
System.out.println('a' / 2.0); //48.5
System.out.println('a' % 2.0); //1.0
결론 : 문자는 내부적으로 숫자로 취급된다.
문자열의 연산
-문자열과 문자열의 연산
문자열과 문자열의 '+' 연산 결과는 문자열 합치기(이어 붙이기)가 된다.
문자열은 '+' 연산 외에 다른 연산을 사용하지 못한다.
System.out.println("hello" + "world");
//System.out.println("hello" - "world");
//System.out.println("hello" * "world");
//System.out.println("hello" / "world");
//System.out.println("hello" % "world");
-문자열과 다른 형태의 값 연산
문자열과의 연산은 '+' 연산만 가능하다.
연산 결과는 다른 형태의 값들도 문자열로 취급하여 문자열 합치기(이어 붙이기) 결과가 나오게 된다.
-문자열과 정수의 연산
System.out.println("helloworld" + 123); //helloworld123
-문자열과 실수의 연산
System.out.println("helloworld" + 123.456); //helloworld123.456
-문자열과 문자의 연산
System.out.println("hellworld" + 'a'); //helloworlda
-문자열과 논리값의 연산
System.out.println("helloworld" + true); //helloworldtrue
논리값 연산
-논리값과 논리값 연산
논리값끼리의 연산은 모든 연산자 사용이 불가능하다.
//System.out.println(true + false);
//System.out.println(true - false);
//System.out.println(true * false);
//System.out.println(true / false);
//System.out.println(true % false);
논리값과 정수의 연산은 모든 연산자 사용이 불가능하다.
//System.out.println(true + 1);
//System.out.println(true - 1);
//System.out.println(true * 1);
//System.out.println(true / 1);
//System.out.println(true % 1);
-논리값과 실수의 연산
논리값과 실수의 연산은 모든 연산자 사용이 불가능하다.
-논리값과 문자의 연산
논리값과 문자의 연산은 모든 연산자 사용이 불가능하다.
이유는, 문자는 내부적으로 숫자 취급을 하기 때문에 결국 논리값과 숫자의 연산과 동일한 의미이다.
-논리값과 문자열의 연산
논리값과 문자열의 연산은 '+' 연산자만 사용 가능하다.
이유는, 위에서 테스트 해 본 문자열 합치기가 되는 원리와 동일하다.
System.out.println(true + "a"); //truea
문자열 합치기
-두 개의 문자열 합치기
System.out.println(9 + 9); //18
System.out.println("9" + 9); //99
System.out.println(9 + "9"); //99
System.out.println("9" + "9"); //99
-세 개의 문자열 합치기
연산의 방향은 왼쪽에서 오른쪽이다. (숫자부터 합쳐짐)
왼쪽의 연산부터 수행하고 수행결과를 오른쪽과 연산함
System.out.println(9 + 9 +"9"); //189
System.out.println(9 + "9" + 9); //999
System.out.println("9" + 9 + 9); //999
마지막 줄 결과가 918이 나오게 하고 싶으면, "9" + (9 + 9)로 괄호 안의 것을 먼저 연산하게 해줘야 한다.
'TIL > Java' 카테고리의 다른 글
[Java] 연산자(Operator) (0) | 2021.12.20 |
---|---|
[Java] 변수 규칙, 상수(Constant), 오버플로우, 언더플로우, 데이터 형변환(Type Casting) (0) | 2021.12.20 |
[Java] 변수(Variable), 자료형(Type) (0) | 2021.12.20 |
[Java] 이클립스에서 Hello World! 출력 / 이클립스 Export, Import 방법 / Encoding Type 설정 (0) | 2021.12.18 |
[Java] JDK 설치 후 환경변수 테스트 / HelloWorld 출력 (0) | 2021.12.18 |