기본 용어 정리
- 데이터 : 컴퓨터가 정보를 담는 자료값
- 데이터 타입(자료형) : 데이터의 유형 ex. 정수 / 문자 / 부동소수(소숫점)
- 자료구조 : 데이터 여러 개를 분류해서 담을 수 있는 분류통
- 문맥 : 개발 언어로 표현한 프로그램의 동작 흐름. 가구 조립 설명서, 요리 레시피에 문맥이 있듯이 프로그램도 문맥을 가지고 있다.
- 메서드(~하다, 동사) : 데이터와 문맥의 묶음. // 물 2L(데이터)와 설탕 500g(데이터)을 섞는다(문맥).
- 공통 실행환경 : 여러 기기의 운영환경에서 실행할 수 있도록 판을 깔아주는 실행환경.
- 운영 체제 : 기기가 프로그램을 실행시키는 운영환경 (ex. Window, Android, iOS, Linux …)
Java
- Java : 자바는 'a언어, b언어, c언어'의 기능을 포함하며, java 고유의 기능을 가지고 있는 언어. 여러 기기에서 실행 가능하도록 도와주는 공통 실행환경, 그리고 데이터와 메서드를 담는 클래스(바구니 틀)를 통해 객체(바구니)를 만들 수 있는 언어.
자바의 특징
1. 공통 실행환경이 있어서 여러 기기에서 실행 가능하다.
2. 이해하기 쉽고 유지 보수가 쉽다.
3. 안정성이 높아서 프로그래밍 오류를 방지하고 보안상 안전하다.
4. 대규모 앱 개발이 가능하다.
5. Java를 배우면 다양한 개발 도구와 라이브러리를 사용할 수 있다. // 많은 사람들이 사용하는 언어이므로 - JVM(Java Virtual Machine, 자바 가상 머신) : 여러 가지의 기기 위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 것. 객체 지향 언어.
- 객체 : 모든 '것', 특징(속성, 변수)과 행동(메서드)을 가지고 있다.
- Java 컴파일러(compiler) : 'java -> class' Java 코드들(.java 파일)을 운영체제가 읽을 수 있는 바이트(byte) 코드(.class 파일)로 변환하는 장치.
- 인터프리터 : 운영체제가 읽은 바이트 코드를 기기(기계)가 실행할 수 있는 기계어로 번역하는 해석기
- JIT 컴파일러 : 인터프리터의 효율을 높여주는 서포터 해석기
- 메모리 영역 : Java 데이터를 저장하는 영역, 운영체제로부터 JVM이 할당받은 메모리 영역.
- 클래스 로더 : Java .class 바이트 코드를 메모리 영역에 담는 운반기
- 가비지 컬렉터 : Java 쓰레기 청소기
- JDK(Java Development Kit) : 자바 개발 키드. java를 class로 변환할 뿐만 아니라 JRE기능-class파일을 실행하는 기능 또한 가지고 있다. 또한 코드를 디버깅하는 jdb 등의 기능도 있다.
- Java 프로그램(앱)은 제일 먼저 클래스의 main 메서드를 실행시킨다.
public class Main {
public static void main(String[] args) {
System.out.println("Our first project :)");
}
}
위치에 따른 역할. '의미'
public : (접근)제어자의 위치. '모두 접근 가능'
static : 메서드 표기(?). '이 프로그램이 시작될 때 무조건 실행이 된다'
void : 메서드의 출력값(아웃풋)의 데이터 타입. '아무 것도 없다'
String[] args : 매개 변수의 자리. '인풋의 타입과 변수명(args, 임의의 변수명 가능)을 나타냈다'
public class Main {
public static void main(String[] args) {
System.out.println("Our first project :)");
System.out.print("Our first");
System.out.print("project :)");
}
}
// 주석 달기, 유령 코드 `ctrl + /` 또는 `ctrl + shift + /` 를 통해 선택 범위 주석처리 가능
결과

print : 줄 바꿈 x
println : 줄 바꿈 o
ln : line
public class Main {
public static void main(String[] args) {
System.out.println(7);
System.out.println("3.14");
System.out.println("JAVA");
}
}

7 // 숫자
3.14 // 문자
JAVA // 문자
- java 프로그램에서 값을 다루기 위해서는 값을 저장하는 저장 공간의 선언이 필요하다.
- 저장 공간의 타입과 이름을 명시한다.
int number; // int(숫자)타입, number 라는 이름의 저장공간을 선언
String name; // String(문자열)타입, name 이라는 이름의 저장공간을 선언 - Java 프로그램에서 저장 공간에 값을 저장(할당)하는 방법은 2가지
1. 초기화 : 선언과 동시에 저장. ( int number = 10; )
2. 덮어쓰기 : 선언 이후 저장. ( int number; number = 11; ) - 변수 : 변하는 저장 공간
- 상수 : 변하지 않는 저장 공간, 저장을 해놓으면 변하지 않음.
final int number = 1; // 상수로 선언 (데이터 타입 앞에 final을 붙이면 된다.)
number = 2; // 변수의 값을 바꾸려고하면 에러가 난다.
변수
1. 기본형 변수.
소문자로 시작하고, 값 자체를 저장.
- 논리형 변수 : boolean
boolean flag = true; // 1. 논리형 변수 boolean 으로 선언 및 True 값으로 초기화
flag = false; // 2. False 값으로도 저장할 수 있다.
// true(false)대신 1(0)이나 "true"("false")를 쓰면 안된다. - 문자형 변수 : char
char alphabet = 'A'; // '3', 'c' 등과 같이 문자 하나를 저장. 1byte만 사용하는 하나의 문자 뿐이므로 문자 뒤에 \0(널문자)가 없다. - 정수형 변수 : byte, short, int, long
- byte : -128 ~ 127 범위의 숫자만 저장 가능.
- short (2byte)는 -32,768~32,767 범위의 숫자만 저장 가능.
- int (4byte)는 -21억~21억 범위의 숫자만 저장 가능.
- long (8byte)은 9백경 정도의 매우 큰 수를 저장 가능.
long longNumber = 2147483647L; // long은 숫자뒤에 알파벳 L을 붙여서 표기하며 저장
- 실수형 변수 : float, double
- float (4byte) : 3.4 * -10^38 ~ 3.4 * 10^38(long 보다 큼) 범위의 숫자 저장이 가능.
- double (8byte) : 1.7 * -10^308 ~ 1.7 * 10^308(long 보다 큼) 범위의 숫자 저장이 가능.
float floatNumber = 0.123f; // float 는 4byte 로 3.4 * 10^38 범위를 표현하는 실수값
double doubleNumber = 0.123123123; // double 은 8byte 로 1.7 * 10^308 범위를 표현하는 실수값
2. 참조형 변수(주소형 변수) : 값을 단일 공간에 저장할 수 없어서 별도의 공간에 저장하고, 그 주소값을 저장하는 변수. 대문자로 시작함.
- 문자열 변수 : String
String message = "Hello"; // 문자열을 저장, 몇 btye를 사용해야할지 특정할 수 없으므로 문장의 끝에 \0(널문자)가 함께 저장. - 그 외 : Object, Array, List …
List<int> alphabet = [0,1,2,3]; // 기본형 변수 여러개를 저장
3. 래퍼 클래스 변수 : 기본형 변수를 감싸는 변수, Wrapper Class / 해당 메서드를 이용할 수 있다.
기본형 변수 | 래퍼 클래스 변수 |
byte
|
Byte
|
short
|
Short
|
int
|
Integer
|
long
|
Long
|
float
|
Float
|
double
|
Double
|
char
|
Character
|
boolean
|
Boolean
|
- 아스키 코드 : Java가 문자를 저장하는 방식으로서 일종의 1대1 맵핑.
- 메모리 영역 : stack영역과 heap영역으로 나뉨
stack 영역 : 기본형 변수(원본값) + 참조형 변수(주소값) , 정적으로 할당됨.
heap 영역 : 참조형 변수(원본값) , 동적으로 할당됨. - 형변환 : 변수의 타입을 바꾸는 방법. 정수 ↔ 실수 ↔ 문자
float floatNumber = 10.101f;
int intNumber;
intNumber = (int)floatNumber;
마지막 줄에 주목. int intNumber을 통해 변수 intNumber가 정수 타입임을 선언. 그후 intNumber의 값을 ()에 변환될 타입을 넣고 floatNumber을 통해 저장. 이를 강제 형변환이라고 한다.
*자동 형변환 : 작은 크기의 타입 -> 큰 크기의 타입으로 형변환이 이루어질 때, () 변환될 타입을 넣지 않아도 자동으로 형변환이 이뤄진다. 또한 작은 크기의 타입이 큰 크기의 타입과 계산될 때 자동 형변환이 이루어진다.
byte, char (1) -> short (2) -> int (4) -> long(8) -> float (4) -> double(8)
public class Main {
public static void main(String[] args){
long longNumber = 100123456789L;
float floatNumber = longNumber;
System.out.println(floatNumber);
}
}
결과값 : 1.0012346E11
E는 10의 지수를 나타냄. 따라서 1.0012346E11 = 1.00123456*10^11 .
'Java > Java 문법' 카테고리의 다른 글
Java 문법6 (클래스) (0) | 2024.09.05 |
---|---|
Java 문법 5(배열, 복사, 컬렉션) (0) | 2024.09.04 |
Java 문법 4(반복문) (0) | 2024.09.03 |
Java 문법 3 (조건문) (1) | 2024.09.03 |
Java 문법 2 (연산자) (0) | 2024.09.03 |