이번엔 Java 언어의 기본적인 개념을 정리해볼 것이다.

빠르게 복습하기 위한 목적이으로 학습을 시작하거나 학습한 것을 다시 정리할 때 도움이 될 것이다.

 

 

먼저, Java는 고급 언어에 속하는 프로그래밍 언어이다. 

저급 언어(Low level language)
  • 컴퓨터 친화적
  • 기계어 : 컴퓨터가 직접 이해할 수 있는 유일한 언어 (0과 1로 표현)

어셈블리어 : 복잡한 기계어를 간략하게 기호화

  • 하드웨어 직접 제어하는 능력이 뛰어남, 빠른 실행 속도
  • 가독성과 이식성이 낮다.
 
고급 언어(High level language)
  • 사람 친화적 : 하드웨어의 세부적인 작동방식을 몰라도 코딩 가능
  • 추상화, 높은 생산성/가독성
  • 이식성 높음 → 대부분의 운영체네나 하드웨어에서 실행됨
  • C, C++, Java
 

 

자바는 1995년 썬 마이크로시스템즈(현재 오라클에서 인수)에서 개발됨
 

자바 언어의 특징

플랫폼 독립적

(CPU나 운영체제에 상관없이 실행)
(WORA : Write Once, Run Anywhere)
JVM(Java virtual Machine)의 역할: 자바 소스 코드(.java)는 컴파일러(javac)에 의해 플랫폼에 독립적인 바이트코드(.class)로 변환된다. 이 바이트코드는 운영체제에 상관없이 JVM이 설치된 모든 시스템에서 실행될 수 있다.

 

 

자바 애플리케이션 실행 구조

플랫폼 독립적인 자바

 

 

객체지향 언어

(OOP : Object-Oriented Programming)
캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism) 이용
객체 단위로 코드를 모듈화하여 재사용성 높이고 유지보수, 확장을 용이하게 함
 
현실 세계의 모든 현상은 객체간의 상호작용으로 이루어진다.
사람은 계산기의 더하기 기능을 이용, 계산기는 결과를 리턴하여 상호작용한다.
 
https://www.hanbit.co.kr/channel/view.html?cmscode=CMS2574231088

 

 

객체지향 프로그래밍에선 메소드를 이용하여 객체끼리 상호작용한다.

객체가 다른 객체 이용하기 위해 메소드 사용.

https://www.hanbit.co.kr/channel/view.html?cmscode=CMS2574231088
 

 

https://www.hanbit.co.kr/channel/view.html?cmscode=CMS2574231088

 
 
 
캡슐화는 접근제한자를 사용해서 객체의 데이터(필드), 동작(메소드)을 내부에 감추고 노출된 일부만 다른 객체가 사용할 수 있는 것을 말한다.
정보 은닉과 상관있다.
https://www.hanbit.co.kr/channel/view.html?cmscode=CMS2574231088

 

 

자동 메모리 관리 

가비지 컬렉터(Garbage Collector) : 자바는 개발자가 직접 메모리를 할당하거나 해제할 필요 없이, 더 이상 사용되지 않는 객체를 자동으로 감지하여 메모리에서 제거
 
 

멀티스레드 지원 

동시성 처리 : 여러 작업을 동시에 처리할 수 있는 멀티스레딩 기능 내장
멀티스레드로 사용자와 상호작용이 끊김 없이 원할하게 이루어지거나, 대량의 데이터를 효율적으로 처리할 수 있음
API 제공 : 운영체제별로 다른 멀티스레딩 API를 사용할 필요 없이 자바 자체의 API 사용

 

 

 

강력하고 안전

컴팡일 시점에 강력한 타입 체크 : 잠재적 오류 방지
포인터 없음 : C/C++에서 발생할 수 있는 포인터로 인한 메모리 직접 접근 오류를 원천적으로 방지
예외 처리 메커니즘을 통해 오류에 유연하게 대처
보안 기능 : 네트워크 보안, 클래스 로딩 보안 등 다양한 보안 기능을 내장
 
 

동적 로딩 

런타임 시 로딩 : 실행 중에 필요한 클래스만 메모리에 로딩하여 사용
시스템 자원을 효율적으로 사용
 
 

풍부한 라이브러리

API 제공 : 광범위하고 잘 정리된 API(Application Programming Interface) 제공하여 파일 입출력, 네트워크 통신, 데이터베이스 연동 등 다양한 기능을 쉽게 구현
오픈소스 생태계 : 수많은 오픈소스 라이브러리와 프레임워크(Spring, Hibernate)
 
 

 


자바 개발 환경

 

JDK는 자바 응용프로그램을 개발하고 실행하는데 필요한 총체적인 환경을 말한다.

구성
  • 컴파일러 : 자바 응용프로그램을 개발하는데 필요한 도구
  • 자바 가상 기계 : 자바 응용프로그램이 실행되는 환경
  • JRE (Java Run-time Environment) : 자바 실행 환경, 표준 클래스 파일 포함

JDK 구성 요소와 기능

JDK(Java Development Kit)는 크게 자바 개발 도구
자바 실행 환경을 제공하는 JRE(Java Runtime Environment)로 나뉜다.

 

JRE는 크게 API(Application Programming Interface)
 JVM(Java Vertual Machine)으로 나뉜다.
 
 
 
API : 많이 사용하는 기능을 미리 만들어서 제공하는 라이브러리 (부품)
JVM : 자바는 java.exe를 실행하면 먼저 JVM이라는 해석기를 실행한 후 파일의 바이트코드를 읽어 들여 운영체제(CPU)가 인식할 수 있게 전달하여 실행
 
운영체제별로 미리 JDK를 설치해 놓으면 자바 소스를 한 번만 작성하면 어떤 운영체제에서도 동일하게 실행
 
즉, 원소스 멀티유즈(one source, multi use)
 

 

+) 이클립스 (Eclipse): 자바 통합 개발 환경 (IDE :Integrated Development Environment)
 
 

자바의 중요 개발 도구들 

  • JDK의 bin 디렉터리에 exe 파일로 포함되어 있음
  • javac : 자바 소스를 바이트 코드로 변환하는 컴파일러
                (.java 파일 -> .class 파일(바이트 코드) )
  • java : 자바 응용프로그램 실행
  • javadoc : HTML 형태의 API 도큐먼트 생성
  • jar : 자바 클래스 파일을 압축한 JAR  파일 생성 관리
  • jdb : 실행 중 오류를 찾는데 사용하는 디버거
 

JDK 배포 판

  • Java SE (Standard Edition) : 자바 표준 배포 판
  • Java ME(Micro Edition) : 모바일용 배포 판, SE의 축소판
  • Java EE(Enterprise Edition) : 기업용 배포 판, SE + 인터넷 기반의 서버사이드 컴퓨팅 관련 API 추가
 
 

 


자바 프로그래밍

 

프로그래밍 : 입력된 데이터를 처리하는 과정 (입력 → 처리 → 출력)
변수(variable) 란? : 특정 메모리 영역에 할당한 이름⁠⁠
변수 선언 : 데이터타입 변수명
  • 데이터 타입 : 변수의 데이터 타입과 메모리 크기 지정
  • 변수명 : 메모리 영영의 이름

 

주석

한 줄 : //
여러 줄 : /* */

블록 주석 설정 : Ctrl +Shift + /
블록 주석 해제 : Ctrl + Shift + \
 
 

 

 

변수 (Variable) 

프로그램 실행 중에 값을 저장하기 위한 메모리 내의 임시 기억장소(메모리 공간)
 
http://www.tcpschool.com/cpp/cpp_datatype_variable
 

명명 규칙

  • 대소문자 구분, 길이에 제한 없다     (True랑 true 다름)
  • 예약어(Reserved word) 사용 불가능     (true 사용 불가)
  • 숫자로 시작하면 안됨     → int seven11;(o)   int 7eleven;(x)
  • 특수문자는 ‘_’와 ‘$’만 허용
  • 변수 이름 사이에 공백 포함 안 됨(띄어쓰기 불가능)
  • 한글 사용 가능하지만 한글 사용하지 않는다.
 
(권장)
  • 클래스 이름의 첫 글자는 항상 대문자     → Test
  • 변수와 메소드 이름의 첫 글자는 소문자     → name, add()
  • 여러 단어 이름은 단어의 첫 글자를 대문자(카멜 표기법)     → firstName
  • 상수의 이름은 대문자, _로 구분(스네이크 표기법)     → PI, MAX_NUMBER
  • 사용 용도에 맞는 의미가 있는 이름     → int score;(o)   int s;(x)
 

+참고) 자바 예약어

클래스명, 메소드명, 변수명으로 사용 불가능하다.

abstract continue for new switch
assert default goto package synchronized
boolean do if private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int static try
char final interface strictfp void
class finally long super volatile
const float native short while

 
 

변수 사용

 

선언

대입 연산자 (=) 이용
변수는 선언 후 반드시 초기화를 해야한다.
  • int num = 12;
  • String name = “홍길동”;
 

사용

실행문(변수명); ← 변수에 저장된 값을 가지고 온다.
  • System.out.println(num); ←  num에 저장된 12를 가지고 온다.
 
동시에 여러 개 변수 선언이 가능하다.
int num1, num2, num3;
num1 = 1;
num2 = 2;
num3 = 3;
int num1 = 1, num2 = 2, num3 = 3;
 
 변수는 선언된 블록({}) 내에서만 접근이 가능하다.
 
 
 
 
 

상수(Constant)

한 번 저장하면 변경할 수 없는 메모리 공간

 

final 데이터타입 상수명=값(리터럴);
final int SAFE_SPEED = 60;
리터럴? : 구체적인 값이나 문자열
 
상수 이름 짓기
  • 상수는 모든 문자를 대문자로 표현
  • 하나 이상의 단어가 합쳐지는 경우 ‘_’로 연결 → SERVER_IP_ADRESS
  • 의미있는 명사형으로 표현
 
 
 

데이터 타입

데이터 타입에는 기본 타입 데이터와 참조 타입 데이터가 있다. 

 

기본 타입 데이터(Primitive Type)

기본 타입 데이터는 말 그대로 실제 값 자체를 저장

수치 타입
  • byte, short, int, long
  • float, double
  • char
논리 타입
  • boolean

 

참조 타입 데이터(Reference Type) 

참조 타입 데이터는 값이 저장된 메모리 주소를 저장한다.

 

: 문자열, 배열, 클래스 인스턴스, ...

 
논리 타입 : ture, false ← 1byte가 할당되나 그 중 1bit만 사용된다.
문자 타입 : 유니코드로 변환되어 2byte에 저장
정수 타입 : byte, short, int, long
타입 키워드 메모리크기 기본값 표현범위
논리형 boolean 1bit false true, false
문자형 char 2byte 0 0~65535(유니코드)
정수형 byte 1byte 0 -128~127
short 2byte 0 -32768~32767
int 4byte 0 -2147483648
~2147483647
long 8byte 0 -9223372036854775808
~9223372036854775807
실수형 float 4byte 0.0 -3.4E38~3.4E38
double 8byte 0.0 -1.7E308~1.79E308
 
 
 
참고
  • 7L : long 타입 정수
  • 21_47_83_647 : 긴 길이의 정수는 ‘_’를 사용하면 편리
  • byte : 데이터 전송의 기본이 되는 정수 타입으로 많이 쓰인다
  • short : 사물인터넷이나 전자기기의 제어에 사용, 다른 언어의 2바이트 메모리 체계의 int 타입과 호환성 유지
  • float은 f나 F를 꼭 붙여줘야한다. 안붙인 실수는 double 타입
  • 자바의 기본 정수는 int 타입 (빠르게 처리된다)
  • 2진수는 숫자 앞에 ‘0b’가 붙는다. (int bin = 0b11011011;)
  • 8진수는 숫자 앞에 ‘0’ (int oct = 0110;)
  • 16진수는 숫자 앞에 ‘0x’ (int hex 0x13FC;)
  • 자바의 Integer 클래스는 정수를 다른 진수의 값으로 변환하는 기능 제공
    Integer.toBinaryString(num1); → 2진수로 출력
    Integer.toOctalString(bin); → 8진수로 출력
    Integer.toHexString(oct); → 16진수로 출력
  • 오버플로우/언더플로우 : 최댓값에서 더 커지면 최솟값에서 다시 시작, 언더플로우는 그 반대
 

 

 

문자타입 (char)

‘a’, ‘A’, ‘가’...
각각의 문자에 대한 고유값을 유니코드 (2byte)
char ch1 = ‘a’;
System.out.println(ch1 + “의 유니코드 = “ + (int)ch1);
→ int를 이용해 ‘a’를 정수로 변환 후 ‘a’에 대한 유니코드 출력
 
 

'A'의 유니코드(ASCII 코드) 값은 65이고, 'a'는 97...

 

 

이스케이프(Escape)문자

\t : 탭
\n : 개행 문자 (LINE FEED)
\r : 열 복귀(다음 줄 맨 앞으로 이동) (CARRIAGE RETURN)
\” : 이중 인용 부호
\’ : 단일 인용 부호
\\ : 백슬래시 \
\u16진수 : 16진수 유니코드에 해당되는 문자 출력
 

'멀티캠퍼스-JAVA 풀스택 > JAVA' 카테고리의 다른 글

Java 기초(6)- 객체지향(2)  (0) 2025.11.18
Java 기초(5) - 객체 지향  (0) 2025.11.12
Java 기초(4) - 배열  (0) 2025.11.12
Java 기초(3)  (0) 2025.10.28
JAVA 기초(2)  (1) 2025.10.23

+ Recent posts