[Java] 기초 1

최우형·2023년 2월 19일
1

Java

목록 보기
1/24
post-thumbnail

📌자바란?

자바는 1996년 1월에 나온 객체지향 프로그래밍(Object Oriented Programming, OOP) 언어이다.


📌자바의 특징

  • 운영체제에 독립적
    자바 이전의 언어들은 특정 CPU에서만 작동하거나 특정 OS에 따라 다르게 작성해야하는 (C,C++ 등) 언어들이 대부분이었다. 이 문제를 해결하기위해 JRE(Java Runtime Environment: JVM(자바 가상머신) + 표준 클래스 라이브러리)가 설치되어있는 모든 운영체제에서 실행 가능하도록 만들었다.

  • 객체 지향언제
    자바는 객체지향 프로그래밍(Object Oriented Programming, OOP) 개념을 사용하는 언어이다.
    객체는 쉽게말해 프로그램이 동작하는 부품이다. 여러 부품을 만들고 조립하여 하나의 프로그램을 실행하는 개념이 OOP이다. 객체 지향적으로 설계한 프로그램은 유지보수가 쉽고 확장성이 높다.

  • 함수형 프로그래밍 지원
    자바 8버전부터 함수형 프로그래밍을 지원하는 문법인 람다식과 스트림이 추가되었다. 이를 사용하면 컬렉션의 요소를 필터링, 매핑, 집계 처리하기 쉬워지고 코드가 간결해지는 장점이 있다.

  • 자동 메모리 관리(Garbage Collection)
    C,C++의 경우 메모리의 생성과 소멸을 개발자가 직접 설계해야 했지만, 자바는 가비지 컬렉터(Garbage Collector)를 실행시켜 자동으로 사용하지 않는 메모리를 수거한다. 이를 통해 개발자는 메모리를 관리하는 수고를 덜고 핵심 코드에 집중할 수 있게 되었다.


📌JVM과 JDK란?

💡 JVM(Java Virtual Machine)

자바는 컴파일러를 통해 기계어로 변환되는 언어이다.
*컴파일: 특정 프로그래밍 언어를 기계가 이해할 수 있도록 옮기는 번역과정
여기서 자바 언어를 JVM이 이해할 수 있는 코드를 변환하고, JVM은 운영체제에 맞는 기계어로 변환해준다.

JVM은 자바 코드로 작성한 프로그램을 해석해 실행하는 별도의 프로그램이다. 즉, 프로그램을 실행하는 프로그램이다.

JVM의 경우 JDK나 JRE를 설치하면 자동으로 설치된다. 자바는 JVM을 거치기 때문에 C나 C++에 비해 속도는 느린 편이지만 JVM 내부의 최적화된 JIT 컴파일러를 통해 속도를 크게 개선해나가고 있다.

📌JDK(Java Development Kit)

  • JRE(Java Runtime Environment) : JVM + 표준 클래스 라이브러리
    - "Runtime", 즉 실행과 관련된 무언가이다.
  • JDK(Java Development Kit) : JRE + 개발에 필요한 도구
    - "Development", 즉 개발과 관련된 무언가이다.

📌변수란?

값이 변할 수 있는 데이터를 임시적으로 저장하기 위한 수단

컴퓨터는 메모리에 데이터를 저장한다. 메모리는 1byte 크기의 데이터를 저장할 수 있는 메모리 셀들이 모여서 만들어지며, 각 메모리셀에는 고유 번호가 오름차순으로 매겨져있다. 이처럼 메모리셀에 붙여져 있는 고유 번호를 메모리 주소라고 한다.

메모리는 아파트와 구조적으로 유사하다.

메모리아파트
메모리셀의 집합체집의 집합체
각 메모르셀에 데이터를 저장할 수 있다.각 집에 사람이 들어가 살 수 있다.
각 메모리셀을 가리키는 주소가 있다.각 집을 가리키는 호수가 있다.
예: Oxf38d2a6c예: 1401호

💻 변수 선언

class Main {
	public static void main(String[] args) {
		int num; // 변수 선언
	}
}

num이라는 변수에 정수형의 숫자를 저장할 수 있게 되었다.


💻 값 할당

class Main {
	public static void main(String[] args) {
		int num; // 변수 선언
		num = 1; // 값 할당
	}
}

num에 1을 할당했으며, num을 선언하고 나서 처음으로 값을 할당하는 것을 초기화라고 한다. 그리고, 초기화가 이루어진 후 다시 다른 값을 할당하는 것을 재할당이라고 한다.

class Main {
	public static void main(String[] args) {
		int num; // 변수 선언
		num = 1; // 값 할당(초기화)
		num = 2; // 값 할당(재할당)
	}
}

변수를 선언하는 동시에 초기화할 수도 있다.

class Main {
	public static void main(String[] args) {
		int num = 1; // 선언과 동시에 초기화
	}
}

💻 변수 명명 규칙

변수 이름을 지을 때 지켜야하는 룰이 있다.

자바에서 변수명은 일반적으로 카멜 케이스(camelCase)를 사용한다. 카멜 케이스란 낙타 모양을 닮았다고 해서 붙여진 이름으로, 두 번재 단어부터 대문자로 시작해 구분한다.

int camelCase;

변수명으로 영문자, 숫자, _,$를 사용할 수 있으며, 영문자는 대소문자가 구별되어 인식된다. 즉, aA는 다른 문자로 인식된다.

// 아래의 모든 변수의 변수명은 허용되는 변수명이다. 
int num;
int NUM; // num과 다른 변수입니다. 
int num_1;
int num$1;

숫자로 시작하는 변수명은 사용할 수 없다.

int 10Age; // Error

자바에서 이미 사용 중인 예약어(reserve word)는 변수명으로 사용할 수 없다.

int byte;  // Error
int class; // Error

좋은 코드는 잘 동작할 뿐만 아니라, 사람에게도 잘 읽히는 코드를 의미한다.

📌상수란?

변하지 말아야 할 데이터를 임시적으로 저장하기 위한 수단

간단히 말해, 재할당이 금지된 변수다.

📌상수를 사용하는 이유

  • 프로그램이 실행되면서 값이 변하면 안되는 경우
    - 프로그래머가 실수로 상수에 값을 재할당하고자 하면 에러가 발생하여 실수를 방지할 수 있다.
  • 코드 가독성을 높이고 싶은 경우
    - 상수를 사용하면 값을 저장하고 있는 상수명으로 값을 사용할 수 있기 때문에 코드 가독성이 향상된다.
  • 코드 유지관리를 손쉽게 하고자 하는 경우
    예를 들어 계산기 프로그램을 만들었을 때 원주율이 필요한 곳에 모두 숫자값 3.14를 그대로 사용했다고 가정하자. 만약 계산의 정밀도를 높이기 위해 원주율을 3.14159로 변경해야 한다면, 기존의 3.14가 사용된 모든 코드를 찾아 일일이 수정해야한다. 반면, 상수를 사용하면 상수에 할당된 값만 3.14159로 바꾸어주면 된다.
    // 기존 코드
    final double CALCULATOR_PI  = 3.14; 
    // 변경된 코드
    final double CALCULATOR_PI  = 3.14159;

profile
프로젝트, 오류, CS 공부, 코테 등을 꾸준히 기록하는 저만의 기술 블로그입니다!

0개의 댓글