코드스테이츠_국비교육/[Section1]

08_Java의 기초.part(java, 변수, 타입, 문자열, 연산자, 콘솔 입출력)_22.08.30

생각없이 해도 생각보다 좋다. 2022. 8. 30. 22:00

자바의 특성

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언어의 기계어 변환 과정

그림 01. 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

>논리 타입
>문자 타입
>타입 변환

 

연산자

>산술 연산자
>비교 연산자
>논리 연산자
>연산자 우선순위

 

그림 02. 연산자 우선순위


콘솔 입출력

>콘솔 출력

  • 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( );