Language/JAVA 16

[Java] 쇼트 서킷 (Short-Circuit)

📍정의쇼트서킷(Short-Circuit) : 논리 연산에서 불필요한 연산을 건너뛰는 최적화 기법 📍장점성능 향상 : 불필요한 조건 평가를 생략하여, 실행 속도가 빨라진다잠재적 오류 방지 : 인덱스 참조 전, 크기를 확인하는 논리식에서 유용하다.  📄 예시 코드public class CompLogicDemo { public static void main(String[] args) { int x = 0, y = 1; System.out.println((x  📍주의사항모든 조건을 평가해야 하는 경우 적합하지 않기에, 앞선 조건 순으로 실행되고 오류 발생 시 평가가 중지된다는 것을 유의해야 한다.

Language/JAVA 2024.09.27

[Java] var 예약어

📍정의var(variable) : 초깃값을 통하여 데이터 타입을 추론할 수 있는 키워드*예약어 : 특정 기능이나 의미를 가진 단어로, 프로그래밍 언어가 미리 정해둔 키워드  📍장점가독성간결하고 직관적인 코드 📍특징자바 10부터 지원되는 기능한 줄에 하나의 변수 선언만 가능 : 각 변수가 개별적으로 선언되고 초기화되어야 하며, 여러 변수를 한 줄에서 초기화할 수 없다. // var x = 1, y = 3, z = 4;// 오류 발생 : var은 한 줄에 하나의 하나 변수 선언만 지원한다.// var oops;// oops = 1; // 오류 발생 : 두 줄에 걸친 정의 불가.지역 변수에서만 사용 가능 : 메서드 내부의 지역 변수에서만 사용이 가능하며, 필드나 메서드의 매개변수에서는 사용할 수 없다.타..

Language/JAVA 2024.09.27

[JAVA] catch-try문

정의 try-catch문 : 프로그램 실행 중 발생할 수 있는 예외 상황을 처리하기 위한 구문 장점안정성 향상 : 예외 발생 시 프로그램의 비정상 종료가 되지 않아 대처 가능디버깅 용이 : 문제 발생 지점 추적 가능사용자 경험 개선 : 오류 발생 시, 사용자에게 안내를 제공 구조 try { // 예외가 발생할 수 있는 코드} catch (ExceptionType1 e1) { // ExceptionType1 타입을 제외한 다른 타입의 예외를 처리하는 코드} catch (ExceptionType2 e2) { // ExceptionType2 타입을 제외한 다른 타입의 예외를 처리하는 코드} try 블록 : 예외 발생 가능성이 있는 코드 작성. 예외 발생시, 해당 예외를 처리할 수 있는 catc..

Language/JAVA 2024.09.14

[JAVA] BufferedReader

개요 자바를 이용해 푼 백준 문제 풀이를 검색해 보는데, 간단한 문제를 제외하고는 Scanner가 아닌 BufferReader기능을 이용하여 표준입력을 받는 것을 보고 Scanner보다 나은 어떠한 기능이 있는지 알아보기 위해 작성해 본다.  정의 BufferReader : 입력을 읽어주는 기능을 가지고 있는 클래스java.io의 하위에 정의되어 있는 클래스로, "import java.io.*"을 선언해야 사용이 가능하다. 기능 읽기 성능을 향상하기 위해 입력 스트림의 데이터를 버퍼에 임시로 저장해 둔다.  사용 이유 빠른 읽기 속도: 입력을 버퍼에 임시로 저장해 두는 기능이 있기에 파일 / 네트워크 등 큰 데이터를 읽을 때 성능이 좋다.다양한 메서드 : 편리한 메서드가 많이 구현되어 있다.read() ..

Language/JAVA 2024.09.14

[JAVA] throws IOException

개요 스터디 팀원의 코드 중 "public static void main(String[] args) throws IOException" 문장 사용의 이유가 궁금하여 이해해 보고자 글을 작성해 본다. 개념 예외(Exception)란? 프로그램이 실행되는 도중 예상치 못한 상황이 발생했을 때의 오류IOException이란 ? InputOutputException의 약자로, 입출력 작업 중 발생할 수 있는 오류를 뜻한다. 파일 읽기/쓰기, 네트워크 통신 등의 작업에서 발생 가능 사용 이유 간편함 : 예외를 메서드 내부에서 처리하지 않고 메서드를 호출한 곳에서 처리할 수 있다.중복 코드 방지가독성  throws IOException역할 : 메서드 선언부에 붙이는 구문으로, 해당 메서드가 입출력예외를 발생시킬 수..

Language/JAVA 2024.09.13

[JAVA] 캐스팅 (Casting)

📌 캐스팅 (Casting) : 데이터 타입을 다른 데이터 타입으로 변환하는 과정으로, 형변환이라고도 불린다. 캐스팅의 필요성다형성 : 오버라이딩된 함수를 분리해서 활용할 수 있다상속 : 캐스팅을 통해 범용적인 프로그래밍이 가능하다. 캐스팅의 종류업캐스팅(upcasting) : 자식 클래스에서 부모 클래스로 형변환하는 것데이터 손실 없이 수행된다.자동 변환 : 자바 컴파일러가 자동으로 수행한다. 제한된 접근 : 업캐스팅된 객체는 부모 클래스에서 정의된 멤버에만 접근할 수 있음.(자식 클래스에서 추가된 멤버는 사용할 수 없다.)class Animal { public void makeSound() { System.out.println("Animal sound"); }}class Do..

Language/JAVA 2024.09.01

[JAVA] 패키지 (Package)

📌 패키지 : 관련 클래스와 인터페이스를 그룹화한 하나의 단위(바탕화면에 디렉토리를 생성하고, 그 안에 파일들을 정리하는 것과 유사.)패키지 안에 패키지를 생성할 수 있다. ( 계층구조)단, 계층 구조라 해서 상위-하위 관계가 아니라 각각 독립적이다.파일 시스템 구조 : com/example/rest_back패키지 구조 : com.example.rest_back내장 패키지 : 자바에서 기본적으로 제공하는 패키지들 ( java.util, java.lang 등)java.lang : 자바의 기본적인 클래스들을 포함하는 패키지로, 자바 프로그램에서 기본적으로 사용할 수 있는 클래스들 제공 java.util : 유틸리티 클래스들을 포함하는 패키지로, 컬렉션 프레임워크, 날짜와 시간 처리, 래퍼 클래스 등을 제공..

Language/JAVA 2024.08.30

[JAVA] 컬렉션 (Collection)

📌컬렉션(Collection) : 여러 개의 객체를 하나의 단위로 묶어서 관리할 수 있는 구조 - 컬렉션 프레임워크 (Collection Framework) :  데이터의 집합을 다루는 데 필요한 다양한 인터페이스와 클래스구성 요소인터페이스 : 컬렉션의 기본적인 동작을 정의하는 인터페이스- List, Set, Queue, Map 등구현 클래스 : 인터페이스를 구현한 구체적인 클래스- List의 경우 ArrayList, LinkedList 등알고리즘 : 컬렉션을 쉽게 조작할 수 있는 메서드를 제공하는 유틸리티 클래스- Collection 클래스에서 제공하는 정렬, 검색, 비교 등의 알고리즘  제네릭 컬렉션 타입 안정성 보장컴파일 타임에 타입 오류 잡을 수 있음불필요한 형변환(Casting) 방📄 Col..

Language/JAVA 2024.08.29

[JAVA] 제네릭 (Generic)

📌 제네릭 : 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법.Person 클래스를 만들 때 이용하여 전역변수 info의 데이터타입을 T로 일시적으로 지정해 준다. 이후 Person이 인스턴스화할 때 지정한 구체적인 데이터 타입 (여기에서는 string)이 T자리에 들어가 변수 info가타입을 갖게 된다.*특징*1. 제네릭의 이름은 서로 달라야 한다. 보통 T  뒤에 위치한 알파벳을 대문자 형태로 사용한다.2. 제네릭의 자료형은 기본 데이터 타입 (int, char,...) 이 아닌 참조형 데이터 타입만을 취급한다. 제네릭 프로그래밍 (generic programming) : 다양한 종류의 데이터를 처리할 수 있는 클래스와 메서드를 작성하는 기법자료형에 대한 정보가 담겨있는 박스를 제공해 ..

Language/JAVA 2024.08.28

[JAVA] OCP (Open Closed Principle) 개방 폐쇄의 원칙

📌 개방 폐쇄의 원칙 (OCP) ? : 객체 지향 설계 원칙 중 하나로 Open for extention + Closed for modification 즉, 새로운 기능의 추가나 변경 사항이 생겼을 때 기존 코드는 확장할 수 있어야 하지만 기존의 코드는 수정되지 않아야 하는 원칙이다. 확장에는 열려있고 변경에는 닫혀있어야 한다는 의미이다. Open for extention : 확장은 열려있다는 뜻으로, 클라이언트 코드 수정을 제외한 기능 추가 가능을 의미.Closed for modification : 코드 수정은 닫혀있다는 의미로, 클라이언트 코드 수정 금지를 의미.  장점코드의 유지보수성을 높이고 변경으로 인한 오류를 줄일 수 있다.다형성을 활용하고 역할과 구현을 잘 분리하였기에 핵심 코드들을 유지할..

Language/JAVA 2024.08.26