Java 문법 기초(1)

2024. 7. 23. 18:05·DEV/Java & Spring

 

Chapter 1: 개발 언어 (Java)

  1. Java 란? 
    • 어디서나 마시는 커피처럼 어디서나 동작 가능한, 자바 커피에서 이름을 따서 만든 Java언어
    • 발표년대 : 1990'
    • 핵심기능 : C언어 기능 + 공통 실행환경, 클래스, 객체 바구니 
    • C 언어 기능에 여러 기기에서 실행가능하도록 도와주는 실행환경, 그리고 데이터와 메서드를 담는 클래스를 통해 객체를 만들 수 있는 언어
    • ※ C언어 핵심 기능 : A(입/출력, 문맥) + B(기계식 데이터 타입, 연산기능, 메서드) + 자료형 데이터 타입 + 자료 구조
  2. Java를 배우는 이유 
    • 발전해온 언어 중 가장 많이 쓰이는 개발언어
    • 플랫폼 독립성: 한 번 작성하면 어디서든 실행 가능(Write Once, Run Anywhere).
    • 객체 지향 언어: 유지보수가 용이하고, 코드 재사용성이 높다.
    • 안정성과 보안성: 강력한 메모리 관리와 보안 기능 제공.  
    • 대규모 앱 개발이 가능함 
    • 풍부한 라이브러리와 API: 다양한 기능을 쉽게 구현할 수 있도록 지원.
  3. JVM (Java Virtual Machine) 
    • 자바 가상 머신이라는 뜻을 가지고 있으며 가상의 기기를 만들어 주는 것을 의미함 
    • 즉, 여러가지의 기기위해 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어 주는 것을 의미함. 
    • JVM 구성
      • 바이트 코드 : Java 프로그램 변환 코드 (작성한 .Java코드를 운영체제가 읽을 수 있는 .class 파일로 변환)
      • 인터프리터 : Java, class 코드 해석기 (운영체제가 읽은 바이트 코드를 기계가 실행할 수 있는 기계어로 변역)
      • JIT 컴파일러 : 빠른 Java,Class 코드 해석기 (인터프리터의 효율을 높여주는 서포터 해석기)
      • 메모리 영역 : Java데이터를 저장하는 영역 (운영체제로 부터 JVM이 할당받은 메모리 영역)
      • 클래스 로더 : Java .class 바이트 코드를 메모리 영역에 담는 운반기 (JVM으로 class를 불러와 메모리에 저장)
      • 가비지 컬렉터 : Java 쓰레기 청소기 (메모리 영역에서 안쓰는 데이터를 주기적으로 흡수해가는 청소기)
  4. Java 개발 환경 구성 방법 
    • JRE(Java Runtime Environment)
      • JVM을 설치하는 방법은 JRE를 설치하는 것으로 JRE는 자바 실행 환경의 뜻을 가지고 있음
      • 하지만 JRE(JVM)만 있다면 Java 프로그램을 실행'만' 시킬 수 있음
        • JDK가 Javac 명령을 통해 .Java 파일을 실행가능한 .class 파일로 변환함JRE는 .class  파일만 실행 가능함
    • JDK(Java Development Kit) 
      • 자발 개발 키트라는 뜻을 가지고 있으며, Java 프로그램을 개발하기 위해 필요함 
      • JDK는 JRE의 기능을 포함하고 있으며 .Java 파일을 .class 파일로 변환해주는 Java Compiler(Javac) 기능이 있음. 
      • JDK는 코드를 디버깅하는 jdb 등의 기능이 있음
        • JDK 디버깅 기능 : JDK의 Jdb기능을 통해 실행중인 프로그램의 코드 실행을 따라다니며 볼 수 있음
        • Java 프로그램을 실행한다는 것은 Java 코드를 한줄씩 실행하며 명령을 수행하는 것을 의미
        • 개발한 코드를 한줄씩 객체와 메소드를 수행하면서 변수가 변하는 과정을 볼 수 있도록 디버깅기능을 제공함
  5. JAVA로 프로그램 만들기
public class Main {
	public static void main(String[] args) {
		System.out.println("Hello world!");
	}
}
  • Main 메서드 : Java 프로그램의 시작점으로 실행되면 제일 먼저 클래스의 main 메서드를 실행하는 것이 JVM의 약속
  • public class (
    • 클래스 정의
    • public 클래스 경로 외부에서 실행시킬 수 있다고 표시해주는 접근 제어자
    • class 객체를 만드는 클래스라고 선언
    • Main 클래스 명
      • 파일명과 일치시켜야 함. Java 컴파일러가 바이트코드 변환했을때의 파일 확장명(.class)와 일치됨
  • public static void main(
    • main 메서드 정의
    • public : 외부에서 실행시킬 수 있다고 표시해주는 접근제어자 
    • static : Java 컴파일러가 바이트 코드로 변환할때 미리 정의되는 메서드 표기
      • 앱 실행시 한번만 정의되며 static 메서드 또는 변수끼리만 호출할 수 있음
    • void : 메서드의 응답값을 정의하는 곳으로 void는 응답할 값이 없다는 정의임 
      • int는 정수, char는 문자, string은 문자열 등 
  • (String[] args)
    • 메서드가 시작될때 넘겨받을 데이터들(변수들)
    • String[] : 문자열 여러개 데이터 타입
    • args : 문자열 여러개 데이터의 이름 (사용자가 정의한값)

Chapter 2: 변수

  • 변수와 상수의 차이점
    • 변수: 값이 변경될 수 있는 저장공간. ex) int number = 10;
    • 상수: 값이 변경되지 않는 저장공간. ex) final int number = 10;
  • 변수 타입
    • 기본 데이터 타입:
      • 정수형: byte, short, int, long
        • 정수형 숫자값을 저장함 (0,1,2,10) 
        • byteNumber = 127; // byte 는 -128 ~ 127 범위의 숫자만 저장 가능
        • shortNumber = 32767; // short 는 -32,768~32,767 범위의 숫자만 저장 가능
        • intNumber = 2147483647; // int 는 -21억~21억 범위의 숫자만 저장 가능
        • longNumber = 2147483647L; // long 은 숫자뒤에 알파벳 L 을 붙여서 표기하며 매우 큰수를 저장 가능
      • 실수형: float, double
        • 소수점 실수값을 저장함 (0.123, 0.9999)
        • float (4byte) : 3.4 * -10^38 ~ 3.4 * 10^38 (long 보다 큼)범위의 숫자 저장이 가능
        • double (8byte) : 1.7 * -10^308 ~ 1.7 * 10^308 (long 보다 큼)범위의 숫자 저장이 가능
      • 문자형: char
        • ‘A’, ‘1’ 와 같은 문자 하나만 저장함
      • 논리형: boolean
        • True/False 값만 저장함
    • 참조 데이터 타입: String, 배열, 객체 등
      • 문자열 변수 : String “Apple”, “텍스트” 와 같은 문장을 저장
      • Object, Array, List … : 객체, 배열, 리스트와 같은 단일 저장공간에 담을 수 없는 값을 저장
    • 래퍼 클래스(Wrapper Class) 변수
      • 기본형 변수를 클래스로 감싼 것.
      • 박싱 (Boxing): 기본형 타입을 래퍼 클래스로 변환하는 과정.
        • 예: int number = 21; → Integer num = new Integer(number);
      • 언박싱 (Unboxing): 래퍼 클래스를 기본형 타입으로 변환하는 과정.
        • 예: int n = num.intValue();
      • 클래스 기능을 활용하기 위해 사용함 (객체지향 프로그래밍).
    • 변수 타입 간 형변환(Casting) 방법
      • 정수 ↔ 실수: (원하는 타입) 사용.
        • 예: doubleNumber = (double) intNumber;
      • 자동 형변환: 작은 타입에서 큰 타입으로 변환 (값 손실 없음).
        • 예: intNumber = byteNumber;
      • 강제 형변환: 큰 타입에서 작은 타입으로 변환 (값 손실 가능).
        • 예: intNumber = (int) doubleNumber;
'DEV/Java & Spring' 카테고리의 다른 글
  • QueryDSL을 활용한 동적 쿼리와 검색 최적화
  • QueryDSL Qclass 생성 오류 해결
  • MVC 패턴
  • Java 문법 기초(2)
fargoe
fargoe
    fargoe
    fargoewave
    fargoe
    GitHub
    전체
    오늘
    어제
    • 분류 전체보기 (166)
      • TIL 🔖 (140)
        • TIL (69)
        • 코딩테스트 (71)
      • DEV (14)
        • Java & Spring (7)
        • MySQL (3)
        • Git&Github (4)
      • 개발지식 (10)
        • 알고리즘 (2)
        • 자료구조 (8)
        • CS (0)
      • 3D (1)
        • Unity (1)
      • ETC (0)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
fargoe
Java 문법 기초(1)
상단으로

티스토리툴바