기본 문법 꼼꼼히, 반복 학습
객체지향 ( 앞으로의 과정 내내 객체지향의 내용을 떠올리면서 학습 )
Java
- 공통 실행환경, 클래스, 객체
- 공통 실행환경이 있어서 여러 기기에서 실행 가능하다.
- 여러 기기의 운영 체제에서 실행할 수 있는 언어이다.
- 안전성이 높다
- 대규모 앱 개발이 가능하다
- Java를 배우면 다양한 개발 도구와 라이브러리를 사용할 수 있습니다.
객체
- (object) : 사람, 사물 등 세상에 존재하는 모든 것
- 특징을 가지고 있다. (이름, 나이, 주소, 혈액형 등)
- 행동
이 세상과 비슷한 메커니즘을 가지고 가는 언어인 Java이기 때문에 객체지향언어
JVM(Java Virtual Machine)
- 여러가지 기기 위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 것
.java파일은 .class 파일로 컴파일된다.
그렇기 때문에 기본적으로 클래스라는 키워드로 .java 파일을 만든다.
.java 파일 안에 들어가는 모양은 실제 class라는 키워드로 만든다.
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
- 중괄호로 구분 되는 곳이 하위 요소이다.
- Main 클래스 안에 하위요소는 메서드라고 부른다. (위에서 main 메서드)
- 자바프로젝트는 제일 먼저 클래스의 main 메서드를 실행시킨다. (JVM의 약속)
- public : 제어자 (class를 어떻게 제어 할 것이냐? = 어디까지 접근하게 만들 것이냐, 제어자)
- Main 클래스의 이름은 파일 이름과 일치시켜야 한다.
- static : 이 프로그램이 시작될 때 무조건 실행될 수 있는 상태인 녀석
- Java라는 언어에서는 input에 대한 타입을 제한하고 있다. output도 마찬가지
- void : 메서드의 출력의 데이터타입, 출력이 없다는 뜻. 메서드의 출력값을 정하는 위치
- String[] : 매개변수 자리, input타입
- args : 변수명, 아무거나 써도 상관없다.
- . : 보통 하위요소를 표현
- System 클래스 안에 out이라는 객체 안에 있는 println이라는 행동을 정의하는 메서드
- println : 줄 바꿈 O, ln = line
- // : 주석
- 오류가 표시되는 이유는 Java가 알아들을 수 없는 표현이기 때문
변수
- 저장공간의 선언 : 저장공간타입 저장공간이름;
값의 저장
1) 선언과 동시에 값을 저장 : EX) int num = 10; (초기화)
2) 선언 이후에 값을 저장 : 덮어쓰기 EX) num =10;
변수의 타입
1) 기본형
- 정수형 : byte, short, int, long (표현범위 차이)
- 실수형 : float, double(default)
- char(문자형) : 'A'
- Boolean(논리형) : True, False
2) 참조형 : 복잡한 것, 별도로 저장, 별도의 저장한 값(주소값)을 참조하는 식으로 사용(
주소형변수)
- string(문자열) : 어디가 끝인지 널문자 \0을 넣어 알려줘서 저장
- 객체
- 배열 int[] a = {1,2,3}
그냥 프린트하면 주소값이 나옴. Arrays.toString(a)로 출력한다.
- 리스트 등등
※ 메모리영역
- Stack 영역 (기본형 변수, 참조형 변수의 주소값) 정적으로 할당된 메모리영역
- Heap 영역 (참조형 변수의 원본 값) 동적으로 할당된 메모리영역
래퍼클래스 변수
- 기본형 변수를 클래스로 한 번 랩핑(감싸는) 변수
- Byte, Short, Integer, Character 등등
- 행동(유용한 기능)이 있음
- 박싱, 언박싱 : 감싸고 풀고
형변환
- 변수의 타입 바꾸기
- 실수 -> 정수로 변환하면 소수점 아래는 내림 된다. 명시적
- 암시적 형변환 (자바 내에서 자동으로 타입을 바꿔주는 것)
→변수 타입별 크기를 알아야 한다.
// byte(1) -> short(2) -> int(4) -> long(8) -> float(4) -> double(8)
- 작은 크기의 타입이 큰 크기의 타입과 '계산' 될 때,
자동으로 큰 크기의 타입으로 형 변환이 된다. -> 자동형변환
- 강제형변환 : 큰 타입-> 작은 타입
상수
- 변하지 않는 공간 : final 저장공간타입 저장공간이름;
import
- 외부의 것을 가져와서 쓴다
java.util.Scanner
단어정리
- JVM
- 클래스
- ★객체(object) : 사람, 사물 등 세상에 존재하는 모든 것
- 운영체제
- 앱 : 운영체제 위에서 실행되는 프로그램
- 라이브러리
- ★컴파일러 : 내가 작성한 코드들(.java 파일)을 운영체제가 읽을 수 있는 바이트코드(.class파일)로 변환
- 인터프리터 : 운영체제가 읽은 바이트 코드를 기계가 실행할 수 있는 기계어로 번역
- JIT 컴파일러 : 인터프리터의 효율 ↑ ( 둘이 세트 )
- 메모리 영역 : java 데이터를 저장하는 영역 (운영체제로부터 JVM이 할당받은 메모리 영역)
- 클래스 로더 : 바이트코드(class)를 메모리 영역에 담는 운반기
- 가비지 컬렉터 : 메모리 영역에서 안 쓰는 데이터를 주기적으로 제거
- JRE : 자바 실행 환경 JVM, 하지만 JRE만 있다면 java프로그램을 실행만 할 수 있다.
.class 파일만 실행 가능하다
- JDK : Java Development Kit (자바 개발 키트)
JRE + 컴파일 + 디버깅
- 디버깅 : 버그를 찾아내는 기능, 원하는 줄 숫자 옆에 누르고 Shift + F9
- 아스키코드