자바의 특성
1. 운영체제에 독립적
: JRE(Java Runtime Environment)의 존재 덕분
: JRE(JVM+표준 클래스 라이브러리)가 설치된 모든 곳에서 실행 가능
2. 객체 지향 언어(OOP, Object Oriented Programming)
: 모든 기능을 객체로 만들어 사용하는 특징
: 즉, 모든 기능을 다 개별의 부품으로 만들어 조립하여 하나의 프로그램을 실행하는 개념
3. 함수형 프로그래밍 지원
: 람다식과 스트림의 추가
4. 자동 메모리 관리(Garbage Colletion)
: C, C++보다 개선된 점
: 가비지 컬렉터가 자동으로 메모리를 수거함
JVM의 기능과 필요성
>JVM이란
: Java Virtual Machine
: 자바 프로그램을 실행시키는 도구
>JVM의 기능
: 개발자의 소스 코드를 각 운영체제에 맞는 기계어로 변환시켜
>JVM의 필요성
: Java언어를 운영체제로부터 독립적인 언어로 만들어줌.
>JVM의 단점
: 컴파일 과정이 한 단계 더 늘어난 것이므로 속도가 느린 편. (C, C++에 비해)
>Java언어의 기계어 변환 과정
>JDK와 JRE
- JRE(Java Runtime Environment) = JVM + 표준 클래스 라이브러리
- JDK(Java Development Kit) = JRE + 개발에 필요한 도구
main method
>main code
public class Main {
public static void main(String[] args) {...}
}
>main 메서드
: 자바 소스 코드 파일이 실행될 때, 가장 먼저 실행되는 메서드. 즉, 시작점
: '진입점 함수'라고도 함.
>해부
- public class Main{...}
-public : 접근 허용 범위
-class Main : Main이라는 class - public static void main(String[] args) {...}
-void : 반환 타입
-main : 메서드 이름
-(String[] args) : (매개변수_타입 매개변수_이름)
-public static void main(String[] args) : 메서드 시그니처
>pseudo code, 의사 코드
: 프로그래밍 언어 코드 작성 전에 사람의 언어로 미리 작성하는 계획
변수와 타입
>변수
>상수
>타입
1. 기본 타입
: 정수 타입(byte, short, int, long), 실수 타입(float, double), 문자 타입(char), 논리 타입(boolean)
2. 참조 타입
: 기본 타입 외의 모든 타입
: 8자리 16진수(주소)를 담을 메모리 공간과 크기가 주어짐
: 가리키는 데이터가 저장된 주소값이 할당됨.
// 예시.
String str = "hello!"
: "hello!"는 임의의 빈 메모리 공간(주소)에 저장됨.
: str에는 주소를 담을 메모리 공간과 크기가 주어짐.
: str에 주어진 공간에 담겨진 값은 문자열 "hello!"가 저장된 주소값임.
>리터럴
float형 리터럴
: float 타입의 변수에 실수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 f를 붙여준다.
long형 리터럴
: long 타입의 변수에 정수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 L을 붙여준다. (l은 헷갈리니 L로 붙이는게 관례)
>정수 타입
: 타입별로 메모리 크기와 표현 범위 알기
: 맨 앞 비트는 부호 비트로 사용하므로, 나머지 비트로 표현 범위 결정
: 숫자가 길면 언더바로 구분해도 된다.
정수형의 오버플로우&언더플로우
: 타입별로 표현할 수 있는 범위를 넘거나(오버플로우), 범위 아래인 경우(언더플로우)를 의미
// 최대 표현 값+1 == 최소 표현 값 (오버플로우)
// 최소 표현 값-1 == 최대 표현 값 (언더플로우)
>실수 타입
실수형의 오버플로우&언더플로우
// 최대 표현 값+a == infinity
// 최소 표현 값-1 == 0
>논리 타입
>문자 타입
>타입 변환
연산자
>산술 연산자
>비교 연산자
>논리 연산자
>연산자 우선순위
콘솔 입출력
>콘솔 출력
- System.out.print()
- System.out.println()
- System.out.printf()
//지시자
%d : 10진수 정수 형태의 출력
%o : 8진수
%x : 16진수
%f : 실수의 출력
%e : e 표기법 기반의 실수 출력 (지수 방식)
%s : 문자열 출력
%c : 문자 하나 출력
%g : 출력의 대상에 따라서 %e 또는 %f 형태로 출력 (자동), 소수점 이하 자리에 기준을 두고 기준에 맞추어 자동 변환
//Escape sequeces
: 유니코드 문자 중 키보드로 입력하기 어려운 문자
\b : 백스페이스 문자
\t : 탭 문자
\n : 개 행 문자
\r : 캐리지 리턴 문자
\u : 원하는 특수문자를 사용하는 문자. 뒤에 특수문자의 유니코드를 입력한다.
\\, \', \" : \, ', "와 같은 표현을 출력하고 싶을 때 앞에 \를 붙인다.
>콘솔 입력
Scanner scanner = new Scanner(System.in);
// System.in : InputStream source를 의미하는 듯 함. 즉, 외부(키보드)에서 받는 인자.
Scanner 클래스의 메소드
int nextInt( );
byte nextByte( );
String nextLine( );
double nextDouble( );
boolean nextBoolean( );
'코드스테이츠_국비교육 > [Section1]' 카테고리의 다른 글
10_배열_22.09.01 (0) | 2022.09.02 |
---|---|
09_제어문(조건문, 반복문)_22.08.31 (0) | 2022.09.02 |
07_Git의 기초_22.08.29 (0) | 2022.08.30 |
06_Linux의 기초_22.08.26 (0) | 2022.08.28 |
05_Mock-up(첫 페어 프로그래밍)_22.08.25 (0) | 2022.08.25 |