본문 바로가기

Programming languages/JAVA

자바 기초

728x90
반응형

1장)

기계어: 0,1 이진수로 구성된 언어, CPU는 기계어만 처리 가능하다.

어셈블리어: 기계어 명령을 ADD, SUB, MOVE 등으로 표현하기 쉬운 상징적 단어인 니모닉 기호로 일대일 대응시킨 언어.

고급언어: 사람이 이해할 수 있고 복잡한 작업, 자료구조, 알고리즘을 표현하기 위해 고안된 언어.

소스: 프로그래밍 언어로 작성된 텍스트 파일.

컴파일: 소스 파일을 컴퓨터가 이해 가능한 기계어로 변환하는 과정.

. java ->. class

. c ->. obj ->. exe

. cpp ->. obj ->. exe

WORA: Write Once Run Anywhere, 플랫폼 종속성 극복, JVM에 의해 해석되고 실행되기 때문에 OS, HW에 상관없이 실행 가능

바이트 코드: JVM에서 실행 가능한 바이너리 코드, 인터프리터 방식

JVM: 다른 플랫폼에서 동일한 자바 실행 환경 제공, JVM이. class 파일의 바이트 코드를 실행한다.

디어셈블: 클래스 파일에 들어 있는 바이트 코드를 텍스트로 볼 수 있게 변환, javap.exe 사

C계열 언어: 컴파일 -> 링킹

JAVA: 컴파일만 있고 링킹이 없다. JVM이 필요할 때 클래스 로더에 의해 클래스 파일 로딩, 메모리 효율이 좋다.

JDK: JAVA Development Kit, 자바 응용 개발 환경, 개발에 필요한 도구 포함

JRE: JAVA Runtime Environment, 자바 실행 환경, JVM포함

JAVA의 버전: SE(표준 배포판), ME(마이크로 배포판, PDA 같은 리소스 제한 HW), EE(기업용 응용 프로그램 개발용)

JAVA의 창시자: 제임스 고슬링

JAVA API: JDK에 포함된 클래스 라이브러리

JAVA 패키지: 서로 관련된 클래스들을 분류하여 묶어놓음, 계층 구조, 자바 API는 JDK에 패키지 형태로 제공

모듈화: 자바 패키지들과 이미지, XML 파일 등의 자원을 묶는 단위, 필수는 아님.

실행: JAVA는 하나 이상의 클래스를 가지고 main 메서드부터 시작한다, 하나의 클래스에는 하나의 main 메서드만 존재해야 한다. 각 클래스 파일에는 main 메서드가 존재해도 된다.

멀티스레드: 자바는 운영체제의 도움 없이 자체적으로 멀티스레드 지원

가비지 컬렉션: 자바는 메모리 할당(new)만 가능하고 메모리 반환은 가비지 컬렉터가 자동으로 진행.

실시간 응용 시스템에 부적합: 가비지 컬렉션의 실행 시점 예측 불가능, deadline이 있는 실시간 시스템에는 부적합

자바 프로그램의 안전성: 타입 체크 엄격, 포인터 존재 x

JIT 컴파일링: Just In Time, 실행 도중 바이트 코드를 해당 CPU의 기계어 코드로 컴파일, 해당 CPU가 기계어를 실행

 

2장)

1. 변수 타입과 이름 선언

2. 문장 끝에는 ; 필수

3. 클래스, 변수, 상수, 메서드 등에 붙이는 이름을 식별자 라고 한다.

4. 특수문자(@,#,!) 혹은 공백, 탭은 식별자로 사용 불가능하다. 한글은 사용 가능하다. 자바 언어 키워드는 사용 불가, 대소문자 구분, 첫 번째 문자로 숫자 불가, Boolean Null은 사용할 수 없다, 길이 제한 없다, 낙타 표기법(헝가리안) Ans_Studnet

5. 상수 이름은 대문자로

6. 기본타입(int, char, byte, short, double, long, float), 레퍼런스 타입(arry, class, interface)

7. 리터럴을 사용하면 프로그램에서 값을 직접 표현할 수 있다.

8. 자바는 참, 거짓으로 1,0을 사용하지 않는다. true와 false만 사용

9. null은 레퍼런스 타입에 사용할 수 없다.

10. 문자열은 " " 으로 묶어서 표현 

11. 숫자 리터럴에는 _ 를 삽입해도 컴파일러가 빼고 처리한다. ex int p = 21_100, long height = 0x7 fff_ffff, 그러나 리터럴 끝, 소수점 앞뒤 에는 사용 불가

12. var를 사용하면 변수 타입 생략 가능, 그러나 반드시 초깃값을 지정해줘야 한다.

13. 상수 선언: final 키워드 사용, 선언 시 초기값 지정, 실해중 값 변경 불가 final double PI = 3.1415952;

14. 큰 타입에서 작은 타입은 자동으로 형변환이 이루어진다. ex) double -> int

15. 강제 타입변환은 () 안에 변환할 타입을 지정해 준다, 데이터 손실 우려

16. System.in은 키보드로 부터 직접 읽는 자바의 표준 입력 스트림, 키 값을 바이트로 리턴, 응용프로그램이 문자로 변환해야 한다.

17. Scanner 클래스를 써서 System.in으로 읽어 들인 바이트 값을 문자, 정수, 실수 등 타입에 맞게 반환한다.

18. next() - 문자열, nextInt()- 정수형, nextDouble() - 실수형, nextLine()- '\n'을 포함하여 읽고 '\n'을 버리고 반환

19. if, if else, else 문으로 조건문 구성

20. switch(식), case 값, case 값 형태로 구성, 마지막엔 default, case마다 break를 해줘야 한다.

 

3장)

1. 반복문은 for, while 사용

2. do-while은 무조건 1회 실행 후 작업문 실행

3. continue를 사용하면 반복문을 나가지 않고 계속 진행한다.

4. 배열: 인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료구조, 한 번에 많은 메모리 공간 할당 가능, 인덱스는 상대 위치

5. 배열선언 int [] arr = new int [배열크기];

6. 배열의 인덱스를 벗어나거나, 선언되지 않은 배열은 사용할 수 없다.

7. 배열의 크기는 arr.length로 반환받고, 문자열의 크기는 s.length()로 반환받는다.

8. 자바에서 배열은 객체이다. 따라서 new로 선언되면 배열 자체는 메모리의 heap영역에 저장되고 배열을 가리키는 메모리 주소가 stack 영역에 저장된다.

9. main 메서드는 psvm을 기억하면 좋다. public static void main(String [] args){}

10. 예외처리는 try cath finally로 구현한다.

11. Integer.parseInt(s)는 s 문자열을 정수형으로 변환한다.

12. string.charAt(인덱스번호)를 하면 해당 인덱스의 문자 하나면 char로 리턴한다.

728x90
반응형