var1부터 var4까지 + 연산을 수행해서 int 타입 result 변수에 9가 저장되도록 [ ] 에 들어갈 코드를 작성해보세요.
long var1 = 2L;
float var2 = 1.8f;
double var3 = 2.5;
String var4 = "3.9";
int result = [ ];
System.out.println(result);
CODE 1
int result = (int)(var1 + var2 + (int)var3 + Double.parseDouble(var4));;
(int)var3 = 2
Double.parseDouble(var4) = 3.9
2 + 1.8 + 2 + 3.9 = 9.7
(int)9.7 = 9
CODE 2
int result = (int)var1 + (int)var2 + (int)(var3 + Double.parseDouble(var4));
(int)var1 = 2
(int)var2 = 1
var3 + 3.9 = 6.4 → (int)6.4 = 6
2 + 1 + 6 = 9
컴퓨터에서 실행하는 프로그램은 특정 목적을 수행하도록 프로그래밍 언어로 작성된 소스를 기계어로 컴파일 한 것
기계어(Machine Language)
컴퓨터가 이해할 수 있는 언어로, 0과 1로 이루어진 이진 코드를 사용
소스 파일(Source File)
프로그래밍 언어로 작성한 파일로, 컴퓨터가 바로 이해할 수 없으므로 컴파일(Compile) 과정을 통해 0과 1로 이루어진 기계어 파일로 번역한 후에 컴퓨터에서 사용
프로그래밍 언어
값을 저장할 수 있는 메모리의 특정 번지에 붙이는 이름
변수 선언
변수를 사용하기 위해서는 먼저 변수를 선언
변수에 어떤 타입의 데이터를 저장할 것인지, 변수 이름이 무엇인지 결정
int x;
int y;
// 콤마를 이용해서 한꺼번에 선언
int x, y;
변수 이름 규칙
첫 번째 글자는 문자이거나 '$', '_' 이어야 하고 숫자로 시작할 수 없으며, 특수 문자가 포함되면 안됨
영어 대소문자를 구분
첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 함
자바 예약어는 사용 불가능
분류 | 예약어 |
---|---|
기본 타입 | boolean, byte, char, short, int, long, float, double |
접근 제한자 | private, protected, public |
클래스와 관련된 것 | class, abstract, interface, extends, implements, enum |
객체와 관련된 것 | new, instanceof, this, super, null |
메소드와 관련된 것 | void, return |
제어문과 관련된 것 | if, else, switch, case, default, for, do, while, break, continue |
논리값 | true, false |
예외 처리와 관련된 것 | try, catch, finally, throw, throws |
기타 | package, import, synchronized, final, static |
값 저장
변수에 값을 저장할 때에는 대입 연산자(=) 사용
int score; // 변수 선언
score = 90; // 값 저장
// 선언과 동시에 초기값 제공
int score = 90;
변수 사용 범위
자바의 모든 변수는 중괄호 블록 내에서 선언되고 사용
public class VariableExample {
public static void main(String[] args) {
int value = 10;
int sum = value + 20;
System.out.println(sum);
}
}
기본 타입
정수, 실수, 논리값을 저장할 수 있는 타입
정수 타입
타입 | 메모리 사용 크기 | 저장되는 값의 허용 범위 |
---|---|---|
byte | 1byte(8bit) | -2^7 ~ (2^7 - 1), ~128 ~ 127 |
short | 2byte(16bit) | -2^15 ~ (2^15 - 1), -32,768 ~ 32,767 |
char | 2byte(16bit) | 0 ~ 65535(유니코드) |
int | 4byte(32bit) | -2^31 ~ (2^31 - 1), -2,147,483,648 ~ 2,147,483,647 |
long | 8byte(bit) | -2^63 ~ (2^63 - 1), -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
정수 리터럴
2진수 : 0b / 0B로 시작하고, 0과 1로 구성
0b1011 -> 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2 ^ 0 -> 11
0b10100 -> 1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2 ^ 0 -> 20
8진수 : 0으로 시작하고 0 ~ 7 숫자로 구성
013 -> 1 * 8^1 + 3 * 8^0 -> 11
0206 -> 2 * 8^2 + 0 * 8^1 + 6 * 8^0 -> 134
10진수 : 소수점이 없는 0 ~ 9 숫자로 구성
12
365
16진수 : 0x / 0X로 시작하고, 0 ~ 9 사이의 숫자와 A, B, C, D, E, F 또는 a, b, c, d, e, f로 구성
0xB3 -> 11 * 16^1 + 3 * 16^0 -> 179
0x2A0F -> 2 * 16^3 + 10 * 16^2 + 0 * 16^1 + 15 * 16^0 -> 10767
char 타입
하나의 문자를 작은따옴표로 감산 것을 문자 리터럴이라고 하며, 유니코드로 변환되어 저장
char var1 = 'A'; // unicode: 65
char var2 = 'B'; // unicode: 66
char var3 = '가'; // unicode: 44032
char var4 = '각'; // unicode: 44033
String 타입
큰따옴표로 감싼 문자들
String var1 = "A";
String var2 = "홍길동";
이스케이프 문자
\t
: 탭만큼 띄움\n
: 줄 바꿈(라인 피드)\r
: 캐리지리턴\"
: " 출력\'
: ' 출력\\
: \ 출력\u16진수
: 16진수 유니코드에 해당하는 문자 출력
실수 타입
소수점이 있는 실수 리터럴 저장
타입 | 메모리 사용 크기 | 저장되는 값의 허용 범위(양수 기준) | 정밀도(소수점 이하 자리) |
---|---|---|---|
float | 4byte(32bit) | (1.4 10^-45) ~ (3.4 10^38) | 7자리 |
double | 8byte(64bit) | (4.9 10^-324) ~ (1.8 10^308) | 15자리 |
논리 타입
참과 거짓을 의미하는 논리 리터럴로 true와 false를 사용
boolean stop = true;
boolean state = false;
연산자 종류 | 연산자 | 피연산자 수 | 산출값 | 기능 |
---|---|---|---|---|
산술 | +, -, *, /, % | 이항 | 숫자 | 사칙연산 및 나머지 계산 |
부호 | +, - | 단항 | 숫자 | 음수와 양수의 부호 |
문자열 | + | 이항 | 문자열 | 두 문자열을 연결 |
대입 | =, +=, -=, *=, /=, %= | 이항 | 다양 | 우변의 값을 좌변의 변수에 대입 |
증감 | ++, -- | 단항 | 숫자 | 1만큼 증가/감소 |
비교 | ==, !=, >, <, >=, <=, instanceof | 이항 | boolean | 값의 비교 |
논리 | !, &, \|, &&, \|\| | 단항, 이항 | boolean | 논리 부정, 논리곱, 논리합 |
조건 | (조건식) ? A : B | 삼항 | 다양 | 조건식에 따라 A 또는 B 중 하나를 선택 |
피연산자가 단 하나뿐인 연산자
부호 연산자(+, -)
양수 및 음수를 표시(boolean, char 타입을 제외한 나머지 기본 타입에 사용 가능)
+(피연산자)
: 피연산자의 부호 유지-(피연산자)
: 피연산자의 부호 변경
증감 연산자(++, --)
변수의 값을 1 증가(++)시키거나 1 감소(--)시키는 연산자(boolean 타입을 제외한 모든 기본 타입의 피연산자에 사용 가능)
++(피연산자)
: 다른 연산을 수행하기 전에 피연산자의 값을 1 증가시킴--(피연산자)
: 다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴(피연산자)++
: 다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴(피연산자)--
: 다른 연산을 수행한 후에 피연산자의 값을 1 감소시킴int x = 1;
int y = 1;
int result1 = ++x + 10; // 12
int result2 = y++ + 10; // 11
논리 부정 연산자(!)
true를 false로, false를 true로 변경하기 때문에 boolean 타입에만 사용 가능
!(피연산자)
: 피연산자가 true(false)이면 false(true) 값을 산출
피연산자가 2개인 연산자
산술 연산자(+, -, *, /, %)
boolean 타입을 제외한 모든 기본 타입에 사용 가능
(피연산자) + (피연산자)
: 덧셈 연산(피연산자) - (피연산자)
: 뺄셈 연산(피연산자) \* (피연산자)
: 곱셈 연산(피연산자) / (피연잔사)
: 왼쪽 연산자를 오른쪽 피연산자로 나눗셈 연산(피연산자) % (피연산자)
: 왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 구하는 연산
문자열 결합 연산자(+)
피연산자 중 한 쪽이 문자열이면 + 연산자는 문자열 결합 연산자로 사용되어, 다른 피연산자를 문자열로 변환하고 서로 결합
String str1 = "JDK" + 6.0; // JDK6.0
String str2 = str1 + " 특징"; // JDK6.0 특징
비교 연산자(<, <=, >, >=, ==, !=)
피연산자는 대소(<, <=, >, >=) 또는 동등(==, !=)을 비교해서 true/false를 산출(대소 연산자는 boolean을 제외한 기본 타입에 사용할 수 있고, 동등 연산자는 모든 타입에 사용 가능)
흐름 제어문인 조건문(if), 반복문(for, while)에서 주로 이용되어 실행 흐름을 제어할 때 사용
(피연산자1) == (피연산자2)
: 두 피연산자의 값이 같은지를 검사(피연산자1) != (피연산자2)
: 두 피연산자의 값이 다른지를 검사(피연산자1) > (피연산자2)
: 피연산자1이 큰지를 검사(피연산자1) >= (피연산자2)
: 피연산자1이 크거나 같은지를 검사(피연산자1) < (피연산자2)
: 피연산자1이 작은지를 검사(피연산자1) <= (피연산자2)
:피연산자1이 작거나 같은지를 검사
논리 연산자(&&, ||, &, |, ^, !)
boolean 타입만 사용 가능
AND(논리곱) : 피연산자 모두가 true일 경우에만 연산 결과가 true
true && / & true -> true
true && / & false -> false
false && / & true -> false
false && / & false -> false
OR(논리합) : 피연산자 중 하나만 true이면 연산 결과는 true
true || / | true -> true
true || / | false -> true
false || / | true -> true
false || / | false -> false
XOR(배타적 논리합) : 피연산자가 하나는 true이고 다른 하나가 false일 경우에만 연산 결과가 true
true ^ true -> false
true ^ false -> true
false ^ true -> true
false ^ false -> false
NOT(논리 부정) : 피연산자의 논리값을 바꿈
!true -> false
!false -> true
대입 연산자(=, +=, -=, *=, /=, %=)
오른쪽 피연산자의 값을 왼쪽 피연산자인 변수에 저장 (오른쪽 피연산자는 리터럴 및 변수, 다른 연산식이 올 수 있음)
3개의 피연산자를 필요로 하는 연산자(? 앞의 조건식에 따라 : 앞뒤의 피연산자가 선택됨)
조건식(피연산자1) ? 값 또는 연산식(피연산자2) : 값 또는 연산식(피연산자3)
// 삼항 연산자
int score = 95;
char grade = (score > 90) ? 'A' : 'B';
// if문
int score = 95;
char grade;
if (score > 90) {
grade = 'A';
} else {
grade = 'B';
}