[Java 필수 문법] 6. 입출력
·
Java
1️⃣ 입력1. Scanner 클래스📌 특징java.util.Scanner를 사용하여 편리하게 입력을 받을 수 있음공백과 개행을 기준으로 값을 쉽게 분리 가능System.in을 사용하므로 입력 속도가 느림 (큰 입력에는 비효율적)📌 장단점장점사용법이 간단함정수, 실수, 문자열 등 다양한 타입 지원단점입력 속도가 느림nextLine() 사용 시 개행 문제 발생 가능📌 주요 메서드메서드설명nextInt()정수 입력nextLong()long 입력nextDouble()실수 입력next()공백 기준으로 문자열 입력nextLine()한 줄 입력hasNext()입력이 남아 있는지 확인📌 예제import java.util.Scanner;public class Main { public static void ..
[Java 필수 문법] 5. 문자열
·
Java
1️⃣ StringString의 특징불변(Immutable): 한 번 생성된 문자열은 변경 불가능.새로운 문자열을 생성해야 변경이 가능하여, 성능적으로 비효율적일 수 있음.String Pool 사용: 동일한 문자열을 재사용하여 메모리 절약 가능. String 선언 및 초기화// 리터럴 방식 (String Pool 사용, 같은 값이면 재사용)String str1 = "Hello";// new 키워드 사용 (Heap 메모리에 새로운 객체 생성)String str2 = new String("Hello");💡 리터럴 방식과 new 키워드 방식의 차이리터럴 방식("Hello")은 String Pool에 저장되어 동일한 문자열이 있으면 재사용됩니다.new String("Hello")는 Heap 메모리에 새로운 객..
[Java 필수 문법] 4. 배열(Array)과 리스트(List)
·
Java
Java에서 데이터를 저장하는 방법 중 대표적인 두 가지는 배열(Array)과 리스트(List)이다.배열은 고정된 크기의 연속된 메모리 공간, 리스트는 크기가 동적으로 변할 수 있는 컬렉션이다. 1️⃣ 배열(Array)배열은 같은 타입의 여러 개의 데이터를 저장하는 자료구조다. 배열 선언 및 초기화📌 1차원 배열 선언 및 초기화// 배열 선언int[] arr1; // 일반적인 선언 방식int arr2[]; // C 스타일의 선언 방식 (비추천)// 배열 선언 + 크기 지정 (초기값: 0)int[] arr3 = new int[5]; // [0, 0, 0, 0, 0]// 배열 선언 + 초기화int[] arr4 = {1, 2, 3, 4, 5}; // 크기는 자동 설정int[] arr5 ..
[Java 필수 문법] 3. Java에서 데이터 비교 (== vs equals())
·
Java
Java에서 데이터를 비교할 때 == 연산자와 equals() 메서드를 유의해서 사용해야 하는 이유는 Primitive Type과 Reference Type의 동작 방식이 다르기 때문이다. 1️⃣ == 연산자와 equals()의 차이비교 방법비교 대상비교 내용예제==Primitive Type값을 직접 비교int a = 10; int b = 10; a == b → ✅ true==Reference Type객체의 주소(참조값)를 비교String s1 = "hello"; String s2 = new String("hello"); s1 == s2 → ❌ falseequals()기본적으로 Reference Type객체가 의미적으로 같은지를 비교 (Override 가능)String s1 = "hello"; Strin..
[Java 필수 문법] 2. Primitive Type vs. Reference Type
·
Java
1️⃣ Primitive Type (기본형 타입)Primitive Type은 Java에서 가장 기본적인 데이터 타입으로, 값 자체를 저장하는 타입이다.Primitive Type은 스택(Stack) 메모리에 저장되며, 객체가 아니기 때문에 메서드를 가질 수 없고, null을 가질 수도 없다. Java의 Primitive Type 8가지타입크기기본값설명byte1 byte0정수형 (범위: -128 ~ 127)short2 byte0정수형 (범위: -32,768 ~ 32,767)int4 byte0정수형 (범위: -2^31 ~ 2^31-1)long8 byte0L정수형 (범위: -2^63 ~ 2^63-1)float4 byte0.0f실수형 (단정도 부동소수점)double8 byte0.0실수형 (배정도 부동소수점)boo..
[Java 필수 문법] 1. 정수형, 부동소수형 데이터 타입
·
Java
1️⃣ 정수형정수형 데이터 타입 종류Java에서 정수를 저장할 수 있는 기본 타입(primitive type)에는 byte, short, ing, long이 있다.각 타입은 저장 크기와 표현 가능한 값의 범위가 다르며, 메모리 효율과 성능을 고려하여 선택해야 한다.데이터 타입크기 (비트)저장 가능한 값의 범위기본 값 (초기화 시)사용 예byte8비트-128 ~ 1270메모리 절약이 중요한 경우, 파일 I/O, 네트워크 데이터 처리short16비트-32,768 ~ 32,7670메모리 절약이 필요한 경우 (ex. 대량의 데이터 처리)int32비트-2,147,483,648 ~ 2,147,483,6470기본적인 정수 연산 (일반적인 숫자 연산)long64비트-9,223,372,036,854,775,808 ~ 9..
[Java] SOLID란?
·
Java
SRP 단일 책임 원칙(Single responsibility principle) 한 클래스는 하나의 책임만 가져야 한다는 원칙이다. OCP 개방-폐쇄 원칙(Open/closed principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다는 원칙이다. 다형성을 활용해야 한다. LSP 리스코프 치환 원칙(Liskov substitution principle) 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야하는 원칙으로 상위 타입을 상속해서 재정의 했을 때 프로그램이 깨지지 않아야 함을 의미한다. ISP 인터페이스 분리 원칙(Interface segregation principle) 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터..
[Java] 객체지향이란?
·
Java
객체지향이란? 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 실제 세상에 가깝게 모델링하는 컴퓨터 프로그래밍 패러다임 중 하나로, 실제 세계의 데이터를 추상화 시켜 프로그래밍에서 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용으로 구성하는 프로그래밍 방법이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. OOP의 4가지 특징 추상화 구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 것이다. 즉 객첵들의 공통적인 특징(속성, 기능)을 모아 하..
[Java] GC란?
·
Java
GC(Carbage Collection)란? 가비지 컬렉션(Garbage Collection) 가비지 컬렉션(Garbage Collection)은 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 탐지하여 자동으로 해제하는 기능이다. 가비지 컬렉션은 자바만의 기능이 아니다. 개발자가 힙을 사용할 수 있는 만큼 자유롭게 사용하고, 더 이상 사용되지 않는 객체들은 가비지 컬렉션을 담당하는 프로세스가 자동으로 메모리에서 제거하도록 하는 것이 가비지 컬렉션의 기본 개념이다. 가비지 컬렉터(Garbage Collector) 가비지 컬렉터(Garbage Collector)는 가비지 컬렉션을 수행하는 담당자이다. JVM에는 가비지 컬렉션 알고리즘을 수행하는 가비지 컬렉터가 있다. 힙 메모리에 객..