[스터디]Java의 정석 1일차

Kristopher·2021년 12월 27일
3

Java 스터디

목록 보기
1/31

(CH1)1. 자바 ~ (CH2)2.2 상수와 리터럴

이 글은 자바의 정석을 공부하며 복습 차원 및 후에 찾아보기 위한 목적으로 남긴다.
현재 산업공학과에 재학중이며 Python 이외의 언어 습득의 필요성을 느껴 자바를 공부하기 시작한다. 매일 조금이라도 Java를 접하며 방학동안 조금이라도 Java에 친숙해지는 것을 목표로 삼았다.

Inflearn에서 김영한님의 Spring 강의를 수강하면서 Spring이라는 프레임워크 자체는 이해가 되지만 Java의 문법을 몰라 Java를 공부하기로 마음먹었다.

자바란?

자바의 가장 대표적인 객체지향 프로그래밍 언어이다. 가장 중요한 특징으로 운영체제(OS)에 관계없이 실행이 가능하다는 점인데, 이는 JVM을 사용하기 때문이다.

자바언어의 특징

  1. 운영체제에 상관없이 실행된다.
  • 이는 자바가 JVM(자바가상머신)하고만 통신하기 때문에 가능한 일이다.
  • JVM은 운영체제위에서 실행되기 때문에 운영체제에 종속적이다.
  1. 객체지향언어이다.
  2. C++의 기본 구문과 small talk의 장점만을 가져와 구현한 객체지향언어이기에 배우기가 쉽다.
  3. 자동 메모리 관리
  • Garbage Collector가 자동으로 메모리를 관리해주기 때문에 보다 프로그래밍에 집중할 수 있다.
  1. 대규모 분산환경을 고려하였기에 네트워크 라이브러리를 통해 쉽게 개발할 수 있다.
  2. 멀티쓰레드를 지원한다.
  • 아직 쓰레드 개념을 정확히 이해하지 못했기 때문에 후에 쓰레드 개념이 언급되면 다시 번 공부할 예정이다.
  1. 실행 시에 필요한 클래스만을 로딩하기 때문에 일부 클래스를 수정하여도 전체 애플리케이션을 다시 컴파일할 필요가 없다.

JVM(Java Virtual Machine)

JVM은 자바를 실행하기 위한 가상 컴퓨터의 역할을 수행하며 OS와 통신한다. 일반적인 애플리케이션은 OS와 바로 통신하지만 Java애플리케이션의 경우 실행시에 interpret되어야 하기 때문에 상대적으로 속도가 느리다. 하지만 JIT 컴파일러의 향상과, 최적화 기술의 적용으로 속도가 대폭 개선되었다.

자바로 프로그램 작성하기

Class 클래스명 {
	public static void main (String[] args) {
    //실행하고 싶은 기능 작성
    }
}

Java 어플리케이션은 main method를 포함한 클래스가 반드시 한개 이상 존재해야 한다. 하나의 소스파일에는 하나의 클래스만을 정의하는 것이 일반적이지만 둘 이상의 클래스를 정의하는 것도 가능하다. 다만 이 경우에 소스파일의 이름과 public class의 이름이 일치하여야 한다.

변수(variable)란?

변수랑 단 하나의 값을 저장할 수 있는 메모리상의 공간을 의미힌다. 새로운 값을 저장하면 기존의 값은 지워진다.

int year; // 변수타입 변수이름 (year라는 이름의 변수를 선언 )
int a,b; // 두가지 변수를 동시에 선언할 수도 있다.

변수의 타입

기본형 : 실제 값을 저장하는 변수. 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double)까지 모두 8가지가 있다.
참조형 : 어떤 값이 저장되어 있는 주소를 저장하는 변수. 기본형 8가지를 제외한 나머지 모든 경우를 의미한다.

기본형의 크기는 아래 표와 같다. 정수형의 경우 int를 기준으로 short, long의 이름이 붙여졌고, 실수형의 경우 float을 기준으로 double이라는 이름이 붙여졌다.

종류/크기1byte2byte3byte4 byte
논리형boolean
문자형char
정수형byteshortintlong
실수형floatdouble

상수와 리터럴(constant & literal)

상수란 변수와 같이 값을 저장할 수 있는 공간이지만, 변수와 달리 한번 값으로 저장하면 다른 값으로 변하지 않는다. 상수의 경우 변수 타입 앞에 "final"을 붙여 사용한다.

final int MAX_SPEED = 100; // 상수의 경우 모두 대문자로 명명한다.

리터럴이란 일반적으로 수학에서 사용하는 상수의 의미이다. 프로그래밍에서는 상수를 값을 한번 저장하면 바꿀 수 없는 공간으로 정의하였기에 이와 구분하기 위해 리터럴이라는 단어를 만들었다.

문자 리터럴과 문자열 리터럴

문자 리터럴의 경우 문자 하나를 감싼 것이고, 문자열 리터럴의 경우에는 두 문자 이상을 감싼 것으로 둘은 작은따옴표/큰따옴표를 사용한다는 차이가 있다.

char ch = 'J'; // 문자 리터럴의 예시
String name = "Java" // 문자열 리터럴의 예시

Reference

Java의 정석
남궁성의 정석코딩

profile
개발자 지망생입니다.

3개의 댓글

comment-user-thumbnail
2021년 12월 27일

덕분에 도움이 되었어요! ^^

1개의 답글