Programing Language/Java 58

[Java] 오브젝트와 클래스(Object & Class)

오브젝트(객체) 객체란 실존하는 물체나, 개념 중 자신만의 영역을 가지고 다른 것과 구분되는 것을 뜻합니다. 객체는 속성과 기능으로 구성됩니다. 속성: 객체의 분류나 특징을 정의한 것으로 필드(field)라고도 합니다. 기능: 객체의 동작이나 행위를 정의한 것으로 메서드(method)라고도 합니다. 클래스 클래스란 객체지향 프로그램에서 객체를 생성할 때 사용하는 일종의 틀(frame) 입니다. 클래스를 활용하여 같은 특징을 가진 객체를 계속 생성할 수 있습니다. 클래스로부터 생성된 객체를 해당 클래스의 인스턴스(instance)라고 합니다. 인스턴스 인스턴스란 클래스를 통해 생성된 객체의 구현체라고 할 수 있습니다. 인스턴스는 해당 클래스의 자료형의 변수에 생성되어 메모리에 할당됩니다. 어떠한 추상적인 ..

[Java] 다차원 배열(Multi-dimensional Arrays)

다차원 배열 배열 안에 또 다른 배열이 대입되는 것을 다차원 배열이라고 합니다. 배열 내부에 대입된 배열이 많아질수록 배열의 차원이 증가하여 n차원 배열으라고 부릅니다. 다차원 배열의 구조 다차원 배열 // 중괄호([])가 붙는 숫자에 따라 배열의 차원을 설정할 수 있음 // 2차원 배열 타입[][] 변수 = { // 1차원 배열의 0번 인덱스의 배열값 {a1, a2, ... an}, // 1차월 배열의 1번 인덱스의 배열값 {b1, b2, ... bn} }; // 3차원 배열 타입[][][] 변수 = { // 1차원 배열의 0번 인덱스 { // 2차원 배열의 0번 인덱스의 배열값 {a1, a2, ... an}, // 2차원 배열의 1번 인덱스의 배열값 {b1, b2, ... bn}}, ... }, ....

[Java] 자바의 배열(Arrays)

배열 배열이란 동일한 자료형을 묶어 저장하는 참조 자료형입니다. 배열을 생성할 때는 반드시 크기를 지정해야하고, 한 번 지정하면 변경할 수 없습니다. 배열을 생성하는 방법 // 자료형[] 변수명 자료형[] 변수명 = new 자료형[생성하고자하는 배열의 크기]; int[] arr1 = new int[3]; // 자료형 변수명[] 자료형 변수명[] = new 자료형[생성하고자 하는 배열의 크기]; double arr2[] = new double[4]; 배열 선언 방법 일반적으로 자료형, 변수의 표현방식의 일관성을 유지하기 위해 변수명에 대괄호([])를 붙이는 방식보다 자료형에 대괄호를 붙이는 방식을 많이 사용합니다. 배열을 선언하면 해당 자료형으로 값을 입력할 수 있는 공간이 배열의 크기 개수만큼 생성됩니다..

[Java] 자바 프로그램 기본 실행 과정(Java Program Basic Runtime)

자바 프로그램 실행 과정 개발자는 자바 프로그래밍 언어를 이용하여 .java 확장자를 가지는 자바 소스 파일을 생성합니다. 컴파일러가 자바 소스 파일을 컴파일 하면 작성한 자바 코드를 바탕으로 확장자가 .class인 바이트코드 파일이 생성됩니다. (바이트코드는 프로그래밍 언어와 기계어의 중간 언어로 자바가 어느 환경에서든 구동되게 하는 중간 번역자 역할을 수행.) 바이트코드 파일은 자바 가상 머신(JVM)에 의해 각 CPU와 OS에 맞는 기계어로 번역되며 프로그램이 최종적으로 실행되게 됩니다. 자바 컴파일 명령어 IDE를 활용할 경우 컴파일 과정을 자동으로 진행해주기 때문에 편리합니다. IDE를 사용하지 않을 경우 CLI를 사용하여 자바 프로그램을 실행할 수 있습니다. javac 명령어: 자바 소스 파일..

[Java] 자바 개발 환경(Java Development Environment)

JDK 설치하기 자바 프로그램 개발을 위한 개발 도구로 Oracle JDK, Open JDK 등 여러 JDK가 있습니다. 자바는 오픈 소스이지만 오라클에서 라이센스를 가지고 있기 때문에, 상용으로 사용하기에는 제약이 있습니다. 때문에 여러 단체나 사람들이 JDK를 오픈 소스로 제작하여 배포하고 있습니다. 주요 JDK Oracle JDK: 오라클에서 제공하는 공식 JDK로 개발/학습 용도로는 무료로 이용가능하며, 상업적 이용은 유료입니다. Open JDK: 오픈소스로 만들어진 JDK로 별도의 이용료 없이 무료로 이용 가능합니다. Azul Zulu: Azul Systems에서 제작한 JDK로 무료로 이용이 가능하며 몇몇 기능이 강화된 JDK를 유료로 이용할 수 있습니다. Eclipse Adoptium: IB..

[Java] 자바의 반복문(Iterate Statement)

for문 for문은 특정 조건에 따라 일정 횟수만큼 실행문을 반복하는 기능을 제공합니다. for문의 기본 구조 for( 초기화식; 조건식; 증감식 ) { 조건식이 참일 경우 실행할 명령 코드 블럭; (반복 실행되는 영역) } for문의 동작 방식 초기화식이 가장 먼저 실행되며, 조건식을 평가하여 true일 경우 실행문을 실행합니다. 실행문이 실행되면 증감식이 실행되고, 다시 조건식을 평가하여 반복 실행 여부를 평가합니다. 만약 증감식 실행 결과로 조건식이 false가 될 경우 for문을 종료하고 블록을 건너뜁니다. (처음부터 조건식이 false일 경우 for문은 실행되지 않음) for문 사용 예시1 // 1부터 100까지 반복하여 더하는 프로그램 // "1부터 100까지의 합은 5,050입니다." 출력 ..

[Java] 자바의 조건문(Conditional Statements)

if문 if문은 조건식의 결과에 따라 실행 여부가 결정됩니다. if문의 구조 if( 조건식 ) { 조건식이 참일 경우 실행할 명령 코드 블럭; } if문 사용 방식 조건식에는 참 혹은 거짓을 반환하는 연산식이나 boolean 타입의 변수를 넣을 수 있습니다. 조건식이 참일 경우 중괄호({ ... }) 안의 실행문이 실행됩니다. (중괄호 내의 실행문이 하나만 있을 경우 중괄호를 생략할 수 있음) 조건식이 거짓일 경우 실행문을 건너뛰고 if문을 빠져나가게 됩니다. if문의 사용 예시 // score의 값이 91이므로 "A등급 입니다." 출력 public class IfExample { public static void main(String[] args) { int score = 91; if(score >= ..

[Java] 자바의 제어문(Control Statement)

제어문 제어문이란 프로그램의 실행을 제어할 수 있는 실행문을 뜻합니다. 제어문의 종류는 조건문, 반복문, 분기문 이렇게 3가지로 구분됩니다. 조건문 조건문은 특정 조건이 참인지, 거짓인지에 따라 결과가 나뉘어지는 실행문입니다. 조건문의 종류 if문: 참과 거짓을 반환하는 조건식의 결과에 따라 블록의 실행 여부가 결정되는 조건문입니다. if-else문: 조건식이 거짓일 때 처리되는 또 다른 조건식을 붙일 수 있는 조건문입니다. switch문: 특정 변수를 반환하는 조건식의 결과값에 따라 설정한 코드를 실행하게 하는 조건문입니다. 반복문 반복문은 특정 조건이 충족될 때까지 반복적으로 명령을 수행하는 실행문입니다. 반복문의 종류 for문: 초기화식이 특정 조건을 만족하게 될 때까지 특정 명령을 반복적으로 수행..

[Java] 비트 연산자(Bitwise Operators)

비트 연산자 비트 연산자는 비트(bit) 단위로 논리 연산을 할 때 사용하는 연산자입니다. 컴퓨터는 기본적으로 2진수 기반으로 계산을 하는데 이를 이용해 논리 연산이나 이동 연산을 수행합니다. 비트 연산은 비트 단위의 조작을 통해 할 수 있는 몇몇 유용한 연산을 빠르게 수행하기 위해 사용됩니다. 비트 논리 연산자 비트 논리 연산자는 두 개의 피연산자를 대상으로 비트 단위의 논리 연산을 수행하는 연산자입니다. 때문에 비트 논리 연산은 0과 1로 저장되는 정수 타입만 피연산자가 될 수 있고, 부동 소수점 방식으로 저장되는 실수 타입은 피연산자가 될 수 없습니다. 비트 논리 연산자의 종류 AND(&): 두 비트가 모두 1일 경우에만 1을 반환 OR(|): 두 비트 중 하나만 1이어도 1을 반환 XOR(^): ..

[Java] 산술 연산자(Arithmetic Operators)

연산자(Operator) 연산자는 메모리에 저장된 여러 값을 목적에 맞게 연산하는 기능을 제공하고 있습니다. 연산자는 필요에 맞게 산술 연산, 논리 연산, 비트 연산 등 다양한 기능을 제공하고 있습니다. 부호 연산자 부호 연산자는 피연산자 앞에 붙어 변수의 부호를 유지하거나 변경하는데 사용됩니다. 연산자 종류는 +와 - 두 가지를 지원합니다. +[피연산자] : 피연산자의 부호를 현재 상태로 유지합니다. -[피연산자] : 피연산자의 부호를 현재의 반대 상태로 변경합니다. 증감 연산자 피연산자의 값을 증가시키거나 감소시키는데 사용합니다. ++[피연산자] : 다른 연산 수행한 후에 피연산자의 값을 1 증가시킵니다.. [파연산자]++ : 다른 연산 수행 전에 피연산자의 값을 1 증가시킵니다. -- [파연산자] ..

[Java] 자바의 패키지(Package)

패키지 패키지란 클래스의 묶음으로 파일 디렉토리와 비슷하다고 할 수 있습니다. 패키지는 하위에 또 다른 패키지를 둘 수 있으며, 도트(.) 연산자를 활용하여 하위 패키지에 접근할 수 있습니다. 클래스의 이름이 동일해도 속한 패키지가 다르다면 서로 클래스로 인식됩니다. 클래스의 전체 이름 구성 상위패키지.하위패키지.클래스 패키지 경로(이름) 예시 // 아래 두 예시의 최종 클래스 이름은 동일하지만 소속이 다르기 때문에 다른 클래스로 인식 // vip학교 패키지의 1학년 패키지의 학생1 vipschool.firstgrade.Student // vip학교 패키지의 2학년 패키지의 학생1 vipschool.secondgrade.Student package 예약어 package 예약어는 클래스의 구성 항목 중 하..

[Java] 기본 자료형(Primitive Data Type)

기본 자료형 변수는 선언될 때 자료형에 따라 저장할 수 있는 값의 종류와 범위가 달라집니다. 자바에서는 정수, 실수, 논리, 문자로 분류되는 총 8개의 기본 자료형을 제공하고 있습니다. 정수 타입: byte, short, int, long 실수 타입: float, double 논리 타입: boolean 문자 타입: char 리터럴 프로그래머가 코드에 수치로 입력하는 것을 리터럴(Literal)이라고 합니다. 일반적으로 수를 입력할 때는 10진수의 정수 리터럴을 사용하지만 상황에 따라 다른 진법의 수도 입력할 수 있습니다. 2진수: 리터럴을 0b / 0B 로 시작하고 0, 1로만 수치를 입력 8진수: 리터럴을 0으로 시작하고 0~7까지의 숫자로만 수치를 입력 10진수: 별도의 입력 조건 없이 0~9까지의 ..

[Java] 변수와 자료형(Variable & Data Type)

변수(Variable)란? 변수는 특정 값을 저장할 수 있는 메모리 공간을 뜻합니다. 컴퓨터의 메모리는 여러 데이터 주소들로 이루어진 데이터 저장 공간으로 이루어져있는데, 프로그램이 실행되면 해당 메모리에 데이터를 저장하고 읽는 과정을 반복하게 됩니다. 이러한 데이터를 저장하고 읽는 작업을 효율적으로 수행하기 위해 변수를 사용합니다. 자료형(Data Type)이란? 자료형은 데이터의 종류를 구분해놓은 여러 유형을 뜻합니다. 자료형은 메모리에 저장되는 데이터를 효과적으로 관리하기 위해 사용됩니다. 변수를 선언하기 위해서는 자료형을 명시해야 하며, 변수에 들어가는 데이터의 유형과 크기는 자료형에서 정의한 범위를 벗어날 수 없습니다. 자바에서 자료형은 크게 기본 자료형과 참조 자료형으로 구분됩니다. 변수의 선..

[Java] 자바 프로그램 메모리 구조(Java Program Memory Structure)

자바 프로그램 실행 구조 메모리의 구분 프로그램이 작동하기 위해서는 메모리(RAM)에 프로그램이 적재되어야 합니다. 또한 프로그램 실행 중에 메모리에 데이터가 오르고 내리는 과정을 반복하게 됩니다. 이러한 작업을 효율적으로 활용하기 위해 내부를 물리적, 논리적으로 구분하여 사용합니다. 자바 프로그램에서는 JVM을 통해 위 그림과 같이 메모리의 영역을 구분하여 사용합니다. 클래스 영역 / 힙 영역 / 스택 영역 / 네이티브 메서드 영역 / PC 레지스터 영역 클래스 영역(= 메소드 영역 = 스태틱 영역) JVM이 읽어들인 클래스의 상수(final), 클래스 변수(= 스태틱 변수), 인스턴스 변수(= 멤버 변수), 메소드 등을 저장하는 영역입니다. Runtime Constant Pool 클래스 파일 Cont..

[Java] 자바 객체지향 개념 기초(Basic Java Object Oriented Programing)

객체지향의 개념 세상에 존재하는 모든 사물을 객체로 보고, 세상에 벌어지는 모든 사건들은 객체들간의 상호작용을 통해 발생한다는 전제로 출발합니다. 명령어의 나열을 통해 프로그램 실행하는 절자지향적 프로그램과 달리, 객체지향적 프로그램은 프로그램에 필요한 데이터를 모아 추상화하여 객체로 만들고, 객체간의 상호작용 방식을 기술하는 방식으로 프로그램 실행합니다. 실제 사물의 속성(state)과 기능(behavior)을 분석한 후에 이를 프로그래밍의 변수와 함수로 정의하여 실제 세계를 프로그래밍에 최대한 반영합니다. 객체지향 설계의 장점 코드 재활용성 증가: 객체지향 방식의 설계로 코드 중복을 최소화하고, 재활용성을 증진합니다. 유지보수 간편화: 기능이 모듈화되어 유지 보수가 필요한 부분만 수정할 수 있습니다...

[Java] 자바 언어 기초(Java Language Basic)

자바(Java)란? 썬마이크로시스템즈에서 1995년 개발된 객체지향 프로그래밍 언어입니다. 다양한 환경의 하드웨어에서 동작하는 프로그램을 만들기 위해 탄생했습니다. (당시 많이 사용되던 언어인 'C++'의 장점과 확장성이 부족하다는 단점을 보완) 현재는 다양한 운영체제가 공존하는 웹 환경에서 적합한 언어로 인기를 끌고 있습니다. (국내에서는 전자 정부 프레임워크에 사용되면서 특히 백엔드 분야에서는 가장 보편적으로 사용) 슬로건: 'Write Once, Run Anywhere' 자바의 주요 특징 독립성(Independence) 자바 이전의 언어들은 특정 CPU에서만 작동하거나, OS에 따라 다르게 작성해야 했는데, 자바는 자바 가상 머신(Java Virtual Machine)에 의해 해당 OS나 CPU에 ..