본문 바로가기
Software Tech/Spring (feat.JAVA)

[Java] 자바 기초 학습 내용 정리

by SuperDev 2024. 10. 9.

자바는 1995년 썬 마이크로시스템즈에서 발표한 객체지향 언어입니다.

현재는 오라클에 인수되어 JDK를 오라클에서 다운로드 받고 있습니다.

 

자바는 JVM을 통해 윈도우, 리눅스, 맥등의 운영체제에서 실행이 가능합니다. (장점)

그리고 C와 다르게 메모리 관리를 자동으로 해주기 때문에 C 대비 비교적 쉬운 언어에 속합니다. (이것도 장점)

 

현장에서는 에디터로 Intellij IDEA를 주로 사용하는 것 같습니다.

이클립스에 비해 자동완성이나 단축키, 디버깅, 최적화 같은 기능들이 비교적 편리한 것 같네요...ㅎ

 

 

[자바 프로그램 실행구조 및 메모리 영역구조]

모든 자바 프로그램은 자바 바이트 코드 파일(*.class)로 변환된 후 JVM을 통해서 운영체제에서 실행되므로, JVM은 운영체제로부터 프로그램을 실행할 수 있는 메모리를 할당받습니다. 이렇게 할당받은 메모리 공간을 효율적으로 사용하기 위해 용도에 따라 여러 영역을 구분합니다. 각 영역별 메모리의 역할을 아는 것은 매우 중요하지만 내용이 너무 길어지기에 추후에 다루도록 하겠습니다. 여기서 다루지 않더라도 반드시 공부하시면 좋겠습니다.

 

 

 

 

[자바 코드 관련]

변수의 선언이나 초기화, 연산자, 식별자 명명 규칙과 같은 너무 기초적인 부분은 다루지 않고, 제가 공부하면서 부족하거나 새롭게 깨달은 개념들을 채워가는 형태로 내용을 정리하였으므로, 참고 부탁드립니다.

 

 

1. 상수

상수는 수익에서 변하지 않는 값을 의미합니다. 자바에서 상수 타입인 final 키워드를 사용하여 변수를 선언하면 해당 변수는 재선언할 수 없는 변수가 됩니다. 주로 변하면 안되는 값에 상수를 사용합니다.

(상수는 대문자로만 구성된 명사로 명명하는 것이 관례이고, 여러 단어로 구성된 이름은 '_'을 사용합니다.)

final int JAVA_STATIC_NUM = 3;

 

 

2. 형변환

형변환에는 크기가 작은 타입을 큰 타입으로 바꾸는 묵시적 형변환이 있습니다. 다만 큰 타입을 작은 타입으로 변환할 때, 묵시적 형변환을 사용하면 컴파일 오류가 발생합니다. 그래서 큰 타입을 작은 타입으로 강제로 바꾸는 명시적 형변환이 있습니다.

// 묵시적 형변환
int x = 50000;
long y = x;

// 명시적 형변환
long x = 50000;
int y = x;        // 컴파일 오류 발생
int y = (int) x;  // (타입)을 사용해 강제로 형변환

 

 

3. 삼항연산자

조건문의 연산을 [조건식 ? 피연산자1 : 피연산자2]와 같이 3항으로 표현하는 연산자를 말합니다.

// 5 > 4의 연산결과가 true이면 50을 반환하고, false이면 40을 반환합니다.
int b1 = (5 > 4) ? 50 : 40;

 

 

4. switch문

switch문에서 사용하는 키워드는 switch, case, default, break 이다.

  • switch는 조건식의 시작부분에 사용합니다. 변수나 표현식을 () 안에 넣어 코드를 결정합니다.
  • case 안에서 조건을 비교할 값과 일치할 때 실행할 코드를 결정합니다.
  • default는 조건문의 else와 비슷한 역할을 합니다. case문이 모두 불일치 하면 마지막에 실행할 코드를 결정합니다.
  • break는 switch문을 빠져나갈 때 사용합니다. 보통 각 case 블록 끝에 사용합니다.
int num = 2;

switch(num) {
    case 1:
        printf("Number is 1");
        break;
    case 2:
        printf("Number is 2");
        break;
    default:
        printf("Number is not 1 or 2");
}

 

 

5. enum

열거형은 JDK5에서 추가되었는데, 이전에는 상수를 열거형 대신 사용하였습니다.

상수를 사용하게 되면 값이 원하지 않는 다른 값으로 바뀔 수 있기 때문에 이를 해결하기 위해 열거형을 사용합니다.

public class EnumExam {
	public static final String MALE = "male";
    public static final String FRMALE = "female";
    
    public static void main(String[] args) {
    	String gender1;
        
        // 상수가 아닌 열거형 enum을 사용해서 변수를 호출
        // enum 생성 (enum은 변수 타입으로 사용)
        enum Gender {MALE, FEMALE}
        
        Gender gender2;
        
        // Gender 타입의 변수에는 MALE이나 FEMALE만 대입 가능.
        // 다른 값은 저장할 수 없음.
        gender2 = Gender.MALE;
        gender2 = Gender.FEMALE;
	}
}

 

 

6. 추상클래스

추상 클래스란, 구체적이지 않은 클래스를 의미하기도 하고, 구현이 되지 않은, 미완성된 메소드를 의미합니다.

그리고 추상클래스는 인스턴스를 생성할 수 없습니다. 추상 클래스는 클래스 앞에 abstract 키워드를 이용해서 정의합니다.

 

추상 클래스를 상속받은 클래스는 추상 클래스가 갖고 있는 추상 메소드를 반드시 구현해야 합니다.

추상 메소드를 구현하지 않으면 해당 클래스도 추상 클래스가 됩니다.

// 추상 클래스 생성
public abstract class Bird {
	public abstract void sing();
}

// 추상 클래스를 상속받는 클래스 생성
public class Duck extends Bird {
	public void sing() {
    	System.out.println("꽥꽥!!");
    }
}
728x90