데이터를 저장하고 참조하기 위한 메모리 공간.
변수는 데이터의 값을 변경하거나 읽는 데 사용.
데이터 타입(Data Type)
: Java 변수는 데이터 타입을 가지며, 이는 변수가 어떤 종류의 데이터를 저장하는지를 나타냅니다.
기본형 타입
타입 | 할당되는 메모리 크기 | 기본값 | 데이터의 표현 범위 | |
---|---|---|---|---|
논리형 | boolean | 1 byte | false | true, false |
정수형 | byte | 1 byte | 0 | -128 ~ 127 |
정수형 | short | 2 byte | 0 | -32,768 ~ 32,767 |
정수형 | int(기본) | 4 byte | 0 | -2,147,483,648 ~ 2,147,483,647 |
정수형 | long | 8 byte | 0 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
실수형 | float | 4 byte | 0.0F | (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값 |
실수형 | double(기본) | 8 byte | 0.0 | (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값 |
문자형 | char | 2 byte (유니코드) | '\u0000' | 0 ~ 65,535 |
참조형 타입
타입 | 예시 | 기본값 | 할당되는 메모리 크기 |
---|---|---|---|
배열(Array) | int[] arr = new int[5]; | null | 4 byte (객체의 주소값) |
열거 | public enum Day { SUNDAY, MONDAY, } | null | 4 byte (객체의 주소값) |
클래스 | String str = "test"; Student sujin = new Student(); | null | 4 byte (객체의 주소값) |
인터페이스 | List list = new ArrayList<>(); | null | 4 byte (객체의 주소값) |
2진수(Binary)
int bNum = 0B1010; -- 10출력
8진수(Octal)
int oNum = 012; -- 10출력
16진수(Hexadecimal)
int hNum = 0xA; -- 10출력
System.out.println()
: 텍스트를 출력하고 개행(줄바꿈) 문자를 추가
System.out.print()
: 텍스트를 출력하지만 개행(줄바꿈) 문자를 추가하지 않고 출력
System.out.printf()
: 형식화된 문자열을 출력
String name = "John";
int age = 25;
System.out.printf("이름: %s, 나이: %d%n", name, age);
System.out.format()
: 형식화된 문자열을 출력
String name = "John";
int age = 25;
System.out.format("이름: %s, 나이: %d%n", name, age);
출력서식
%[-][0][n][.m]지시자
지시자
지시자 | 설명 |
---|---|
%b | boolean 형식으로 출력 |
%d | 정수 형식으로 출력 |
%o | 8진수 정수의 형식으로 출력 |
%x 또는 %X | 16진수 정수의 형식으로 출력 |
%f | 소수점 형식으로 출력 |
%c | 문자형식으로 출력 |
%s | 문자열 형식으로 출력 |
%n | 줄바꿈 기능 |
%e 또는 %E | 지수 표현식의 형식으로 출력 |
[예시]
int age = 10;
String addr = "경기도";
System.out.printf("나이는 %d살, %s에 살고 있습니다.%n",age,addr);
-- 나이는 10살, 경기도에 살고 있습니다.
System.out.printf("소수점 자리수 미지정 : %f%n",f); // 1.234500
System.out.printf("소수점 자리수 지정 : %.3f%n",f); // 1.235
최우선 연산자(Primary)
- 괄호 (): 연산자 우선순위를 결정하거나, 표현식의 일부를 그룹화
int result = (5 + 3) * 2; // 16
단항 연산자(Unary)
+, -, ++, --, ~ : 피연산자를 하나만 갖는 연산자
y = x++
int x= 10,y;
y=~x; // 비트부정 -(원래값 +1) ==> 결과 // -11
산술 연산자(Arithmetic)
+, -, *, /, % : 기본적인 사칙 연산을 수행
int a = 7, b = 3;
int sum = a + b; // 10
int product = a * b; // 21
int nam = a % b; // 1
쉬프트 연산자(Shift)
<< , >> , >>>: 이진수를 좌우로 비트 이동
int x = 8, result, result1;
result = x <<2; //left shift
// 8비트자리에 8을 표시하면 00001000 인데 2비트를 왼쪽으로 밀어서 00100000 32로 바뀜
result1 = x >> 3; // right shift
// 8비트자리에 8을 표시하면 00001000 인데 3비트를 오른쪽으로 밀어서 00000001 1로 바뀜
관계 연산자(Relational)
==, < , >, >=, <= , != : 두 피연산자 간의 관계를 평가 >
0, 0.0, null 를 제외한 모든 값은 '참'
int x = 5, y = 10;
boolean isEqual = (x == y); // 결과: false
boolean isNotEqual = (x != y); // 결과: true
논리 연산자(Logical)
&&, ||, !: 논리 AND, OR, NOT 연산을 수행
int x=4,y=7; //논리연산자 : &(and), |(or), ^(xor) 2진 논리 ==> 결과 : 값
System.out.println(x&y); // 4는 0100 이고 7은 0111 이기에 and 연산자하면 0100이기에 4출력
System.out.println(x|y); // 4는 0100 이고 7은 0111 이기에 or 연산자하면 0111이기에 7출력
System.out.println(x^y); // 4는 0100 이고 7은 0111 이기에 xor 연산자하면 0011이기에 3출력
boolean co1 = true, co2 = false; //논리연산자 : &&(and), ||(or), ! (not) 10진 논리 ==> 결과 : 참or거짓
boolean resultAND = co1 && co2; // 결과: false
boolean resultOR = co1 || co2; // 결과: true
boolean resultNOT = !co1; // 결과: false
삼항 연산자(Ternary)
(조건) ? 참 : 거짓; : 조건 연산자로, 조건에 따라 다른 값을 반환
int x = 20, y = 10;
String msg = null; //msg = ""
msg = (x != y) ? "not same" : "same";
System.out.println(msg); // not same
int a = 10, b = 20, c=30, result;
result = (a > b)? a: (b>c) ? b: c;
System.out.println(result); // 30
대입 연산자(Assignment)
=, +=, -=, *=, /=, >>=, <<=, %=....
x = x*y; // x+=y 로 치환가능
x = x*y; // x*=y
x = x+1; // x +=1; , x ++; 셋 다 같은말.
콤마(순차) 연산자
콤마 연산자는 여러 문장을 순차적으로 실행할 때 사용
int a = 5, b = 10, c = 15; // 콤마로 변수를 선언 및 초기화
int sum = a + b, diff = a - b, product = a * b; // 콤마로 여러 문장을 한 줄에 작성