오버로딩은 Java에서 많이 쓰입니다. System.out.println()은 오버로딩의 대표적인 예입니다. println(int), println(String), println(double) 등 다양한 타입을 처리할 수 있습니다. 오늘은 오버로딩에 대해 자세히 알아보겠습니다! 오버로딩이란?같은 이름의 메서드를 매개변수의 개수, 타입, 순서를 다르게 해서 여러 번 정의하는 것을 말합니다. 즉, 메서드 이름은 같지만, 인자(매개변수)의 구성만 다르면 자바는 각각을 다른 메서드로 인식합니다. 오버로딩을 사용하는 이유 기능은 유사하지만 처리 방식이 다양한 경우, 같은 이름의 메서드로 묶으면 더 직관적이고 관리가 쉬워집니다.코드를 간결하고 직관적으로 사용할 수 있습니다. 사용 예시예를 들어, print()..
전체 글
개발 여행에 대한 기록저희는 저번 시간에 메서드에 대해 배웠습니다.보통은 A 메서드에서 B 메서드를 호출해서 기능을 분리하거나 재사용하곤 했죠.그렇다면 이런 궁금증이 생길 수 있습니다. A 메서드가 자기 자신인 A 메서드를 다시 호출할 수 있을까? 정답은..✅ 가능합니다! 이렇게 메서드가 자기 자신을 호출하는 방식을 재귀 호출이라고 합니다.하지만 여기서 주의할 점이 하나 있어요. 종료조건이 없다면? A → A → A → A ...계속해서 끝나지 않고 호출되기 때문에❗ 프로그램이 무한 루프에 빠지고❗ 결국 StackOverflowError(스택 오버플로우) 라는 오류가 발생합니다.그래서 재귀호출에는 반드시 종료 조건이 있어야 합니다. 이번 글에서 재귀호출에 대해 더 자세히 알아보겠습니다! 재귀호출이란?재귀호출이란 메서드..
자바(Java)에서 메서드를 만들다 보면 static 키워드를 붙이는 메서드와 그렇지 않은 메서드가 존재합니다. 어떤 메서드는 객체 없이 클래스명으로 호출하고, 어떤 메서드는 꼭 객체를 만들어야 사용할 수 있습니다. 그 차이가 바로 클래스 메서드(static 메서드)와 인스턴스 메서드의 차이입니다. 클래스 메서드클래스 메서드는 static 키워드가 붙은 메서드로, 객체를 생성하지 않고도 호출할 수 있는 메서드입니다. 클래스 메서드는 아래와 같은 특징을 가지고 있습니다. 클래스가 메모리에 올라갈 때 함께 생성됨클래스 이름을 통해 직접 호출할 수 있음인스턴스 변수나 인스턴스 메서드에는 접근 불가능주로 공통 기능, 유틸리티 메서드 등에 사용 사용 예시 실습 예제MathUtil 클래스public class..
메서드란?프로그래밍을 하다 보면 같은 코드를 반복해서 작성하게 되는 경우가 많습니다. 하지만 반복되는 코드를 매번 작성하기보다는, 하나의 코드로 정의해두고 여러 곳에서 재사용하는 것이 훨씬 효율적이고 관리하기 쉽습니다. 이럴 때 사용하는 것이 바로 메서드(Method) 입니다. 메서드는 반복되는 코드를 하나로 묶어 재사용할 수 있게 해주는 프로그래밍의 핵심 도구입니다. 메서드는 특정 작업을 수행하는 코드 블록으로 아래와 같이 정리할 수 있습니다.어떤 기능을 하나로 묶은 코드 덩어리입니다.반복적으로 사용되는 코드를 한 번만 정의하고, 필요할 때마다 호출해서 사용할 수 있습니다.Java에서는 메서드가 클래스 안에 정의됩니다. 메서드의 필요성코드의 재사용성 같은 코드를 여러 번 쓰지 않고 한 번 정의해서 ..
클래스 변수란?클래스 변수는 해당 클래스를 통해 생성된 모든 인스턴스가 공유하는 변수입니다. 즉, 인스턴스가 100개든 1000개든, 모두 같은 값을 공유하고 있습니다. 클래스 변수의 선언class MyClass { static int count = 0; // 클래스 변수}클래스 변수는 static 키워드를 붙여 선언합니다. 해당 코드는 int형 변수인 count를 클래스 변수로 선언한 코드입니다. 클래스 변수의 특징클래스 로딩 시 메모리에 올라갑니다.객체를 생성하지 않아도 MyClass.count처럼 클래스명으로 직접 접근할 수 있습니다.모든 인스턴스가 동일한 값을 공유합니다. 인스턴스 변수란?인스턴스 변수란, 클래스 내부에서 선언되고, 각각의 객체가 독립적으로 가지는 변수입니다. 즉..
캡슐화란?객체의 속성(데이터)과 메서드(동작)를 하나로 묶고, 외부에서 직접 접근하지 못하도록 감추는 것을 말합니다. 즉, 데이터를 보호하고, 의도하지 않은 결과가 일어나지 않게, 통제 가능한 방식으로만 다루게 하는 것입니다. 예를 들어 은행 계좌를 생각해보겠습니다.우리는 계좌에 대한 입금, 출금, 잔액 조회는 반드시 은행 창구나 앱을 통해서만 할 수 있습니다. 이 창구나 앱이 바로 공개된 메서드(public method)이고, 잔액(balance) 같은 정보는 외부에서 직접 접근할 수 없는 숨겨진(private) 정보입니다. 우리가 잔액을 직접 변경 할 수는 없습니다. 만약 직접 접근이 가능하게되면 잔액을 우리의 임의대로 변경이 가능하니, 위험한 상황 또는 의도치 않은 일이 발생할 수 있습니다. 따라..
클래스클래스는 일종의 설계도입니다. 자동차 공장에서 자동차를 만들기 위해 먼저 설계도를 그리듯, 클래스는 객체를 만들기 위한 틀입니다. class Car { String brand; int speed; void drive() { System.out.println(brand + " is driving at " + speed + "km/h"); }}여기서 Car 클래스로 선언되었으며, 자동차 설계도에 해당합니다."브랜드"와 "속도"라는 속성, "drive()"라는 동작이 정의되어 있습니다. 아직 아무것도 만들어지지 않았습니다.이건 마치 설계도일 뿐입니다. 객체객체는 클래스를 기반으로 실제로 만들어낸 구체적인 존재입니다. 설계도를 바탕으로 실제 자동차를 만든 것처럼 객체도..
안녕하세요🖐️ 이번시간에는 정렬 알고리즘 중 하나인 삽입 정렬에 대해 간단히 알아보는 시간을 갖겠습니다~ 삽입 정렬 (Insertion Sort)삽입 정렬은 선택 정렬과 버블 정렬처럼 기본적이면서 이해하기 쉬운 정렬 알고리즘 중 하나입니다. 이 알고리즘은 각 단계에서 배열의 요소를 이미 정렬된 부분과 비교하여, 각 요소가 올바른 위치에 삽입될 수 있도록 합니다. 즉, 하나의 요소를 적절한 위치에 삽입하는 과정을 배열의 모든 요소에 대해 반복하여 전체 배열을 정렬합니다. 삽입 정렬의 작동 방식은 다음과 같은 순서로 진행됩니다. (오름차순 기준)배열의 두 번째 요소부터 처리를 시작하며, 이 요소를 "현재 요소"로 간주합니다.현재 요소를 그 이전의 정렬된 배열 부분과 비교합니다. 현재 요소가 이전 요소..
절차 지향 프로그래밍절차 지향 프로그래밍은 간단히 설명하자면, 이름 그대로 절차에 맞게 프로그래밍을 하는 방식입니다. 즉, 프로그램을 순차적으로 동작시킵니다. 실습 예제프로그램을 순차적으로 동작시키는게 어떤 내용인지 예제와 함께 확인해보겠습니다. TV 조작하기 를 절차 지향적으로 프로그래밍을 실습해보겠습니다! 1대의 TV 조작하기- 실습 예제 -public class ObjectOriented1 { static boolean powerOn = false; static int channel = 1; public static void turnOnTV() { powerOn = true; System.out.println("TV를 켭니다."); } publi..
안녕하세요🖐️ 이번시간에는 정렬 알고리즘 중 하나인 선택 정렬에 대해 간단히 알아보는 시간을 갖겠습니다~ 선택 정렬 (Selection Sort) 선택 정렬은 버블 정렬처럼 간단하고 이해하기 쉬운 정렬 알고리즘 중 하나입니다. 주어진 배열을 처리할 때, 이 알고리즘은 전체 배열을 차례대로 탐색하면서 각 단계마다 남아 있는 요소 중 최솟값을 찾습니다(오름차순 정렬 시). 찾은 최솟값을 현재 위치의 값과 바꿔치기하며, 이러한 절차를 배열이 전부 정렬될 때까지 지속적으로 수행합니다. 선택 정렬의 작동방식을 순서대로 나열하면 아래와 같은 과정을 진행합니다. (오름차순) 배열의 첫 번째 위치를 최소값의 위치로 가정합니다. 현재 위치 이후의 배열에서 실제 최소값의 위치를 찾습니다. 현재 위치의 값과 찾은 최솟값의 ..