Java & Kotlin

[자바/Java] 오버로딩(Overloading)

🏃 0. 들어가면서 자바의 가장 큰 무기 중 하나는 다형성(polymorphism)입니다. 다형성을 풀어서 설명해보면 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작할 수 있는 것을 의미한다고 볼 수 있습니다. 이번 글에서는 '다형성을 어떻게 확보할 수 있는가'에 대한 방법으로 오버로딩(Overloading)에 대한 공부를 해보겠습니다. 📃 1. 오버로딩(Overloading)이란? If a class has multiple methods having same name but different in parameters, it is known as Method Overloading 하나의 클래스 안에 같은 이름을 갖지만 다른 파라미터를 가지는 여러 개의 메서드가 존재하면, 이를 메서드 오버..

2021.08.02 게시됨

Java & Kotlin

[JAVA] 기본형 매개변수와 참조형 매개변수

1. 들어가면서 이번 시간에는 자바의 기본형 매개변수와 참조형 매개변수에 대해 알아보려고 합니다. 변수의 타입에 대해 공부했을 때 기본형(Primitive)와 참조형(Reference) 변수에 대해 살펴봤는데, 각각의 변수 타입이 매개변수로 입력될 때 어떻게 다른지 구체적으로 살펴보겠습니다. 2. 개념 자바에서는 메서드를 호출할 때 매개변수로 지정한 값을 메서드의 매개변수에 복사해서 넘겨줍니다. 매개변수의 타입이 기본형(Primitive type)일 때는 기본형 값이 복사되겠지만, 참조형(reference type)이면 인스턴스의 주소가 복사되죠. 따라서, 메서드의 매개변수를 기본형으로 선언하면 단순히 저장된 값만 얻지만 참조형으로 선언하면 값이 저장된 곳의 주소를 알 수 있기 때문에 값을 읽어 오는 것..

2021.07.11 게시됨

Java & Kotlin

[JAVA] public static void main?

자바의 메인 메서드는 public static void main(String[] args)로 시작하는데요. public, static, void라는 각각의 키워드에 대한 이해가 있으신 분들은 왜 메인 함수가 위와 같은 형태를 가져야하는지 짐작하실 수 있을겁니다. 하지만 자바를 처음 공부하시거나 한 번도 이 메인 함수의 구조에 대해 생각을 안해보신 분이라면 약간 당황(?)스러운 질문일 것 같아 오늘은 이 메인 함수 구조에 대한 해석을 한 번 해보려고 합니다. 1. public public, private, protected 같은 키워드는 접근 지정자 또는 접근 제한자라고 부릅니다. 이 중에서 public은 제한없이 어디에서나 사용이 가능하다는 뜻이죠. 반면, protected는 동일한 패키지 내에서나 상속..

2021.06.20 게시됨

Java & Kotlin

[JAVA] 가비지 컬렉션(Garbage Collection, GC)에 대한 이해

0. 들어가기 전에 자바 가비지 컬렉터(GC)에 대해 설명하기 전에 스택과 힙 영역에 대해 잠깐 짚고 넘어가려고 하는데요. 이 부분을 모른 채로 GC를 이해하는 것이 좀 어려울 것 같다고 생각합니다. 1) 스택(Stack) 영역 이전에 JVM에 대한 글을 썼을 때, JVM은 스택 기반 가상 머신이며 효율적인 연산과 메모리 사용이 가능하다는 이야기를 했었습니다. 그러면 스택에는 무언가 연산을 할 대상이 담겨있어야 하지 않을까요? [JAVA] JVM과 자바 코드의 동작 1. JVM이란 무엇인가? JVM(JAVA Virtual Machine)은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행해주도록 하는 가상 머신입니다. JVM은 JAVA와 OS 사이에서 중개자 역할을 하는 stud..

2021.06.20 게시됨

Java & Kotlin

[JAVA] Enum 클래스에 대한 이해

0. 문제 제기 자바 1.5 버전 이전에는 상수를 선언할 때는 해당 클래스 내부에 final static Strirng, final static int와 같은 방식을 사용했습니다. 하지만 이런 방식의 상수 정의는 상수의 개수가 많아질수록 가독성이 떨어지고, 어떤 것에 관한 상수인지 파악하기도 어려워지는 단점이 있었습니다. 따라서 이런 상수들을 용도에 맞게 모아서 사용하기 위한 클래스나 인터페이스를 정의하기도 했는데 이러한 방식 역시 몇 가지 문제점을 안겨주고 있었습니다. 예시를 한 번 보겠습니다. interface UNIVERSITY{ int SEOUL = 1; int YONSEI = 2; int KOREA = 3; } interface MAJOR{ int KOREAN = 1; int MATH = 2; ..

2021.06.20 게시됨

Java & Kotlin

[JAVA] 예외 처리를 어떻게 해야할까? - (2)

0. 들어가면서 이전 포스팅에서 자바 예외처리 기본 개념과 예외처리를 어떻게 해야하는가에 대한 이야기를 했습니다. [JAVA] 예외 처리를 어떻게 해야 할까 If문, try/catch문은 무엇이 다른가요? 0. 들어가면서 if 조건문을 쓰는 이유는 무엇인가요? try/catch문을 쓰는 이유는 무엇인가요? 이번 글에서는 if문과 try/catch문의 차이에 대해 간략히 알아보고, 예 studyandwrite.tistory.com 오늘은 자바의 예외 처리에 대한 몇 가지 내용을 더 공부해보려고 합니다. 1. throw와 throws 1-1) throw 아래 예시는 throw를 통해서 일부러 예외를 발생시킵니다. 개발자의 의도한 방향이 아닌 방향으로 사용자가 프로그램을 동작하면 이에 대해 일부러 Except..

2021.06.20 게시됨

Java & Kotlin

[JAVA] 인터페이스(Interface)의 기본 개념과 Java 8 이후의 변화

0. 인터페이스(Interface) 인터페이스는 자바의 다형성(Polymorphism)을 극대화하여 객체지향프로그래밍을 더 수월하게 해주는 역할을 합니다. 인터페이스를 통해 객체는 추상화에 더 의존하게 되고, 이에 따라 프로그램의 유지 보수가 용이해집니다. 1. 인터페이스 정의하기 인터페이스의 구성요소는 크게 상수 필드, Abstract 메서드, Default 메서드, Static 메서드, Private Method가 있습니다. 상수 필드는 인터페이스에서 정의한 상수를 클래스에서 그대로 값만 참조하여 사용할 수 있게 하고, Abstract 메서드는 인터페이스 구현 클래스에서 직접 오버라이딩해서 구현해야 하는 메서드(빈 껍데기)를 말합니다. Default 메서드는 인터페이스에서 기본적인 메서드 내용을 정의..

2021.06.19 게시됨

Java & Kotlin

[JAVA] 다형성과 상속, 그리고 객체지향

1. 다형성과 상속에 대한 이해 Polymorphism in Java is the ability of an object to take many forms. To simply put, polymorphism in java allows us to perform the same action in many different ways. 다형성(Polymorphism)은 자바에서 한 객체가 여러 모습으로 기능할 수 있음을 의미합니다. OOP에서 핵심적인 역할을 수행하는 녀석이 다형성이라고 볼 수 있죠. 그리고 오늘 공부할 상속(Inheritance)는 어떻게 보면 다형성을 달성할 수 있도록 도와주는 녀석이라고 생각합니다. 그리고 상속을 공부하면서 나오는 메서드 오버라이딩(Method Overriding)이 한 객체..

2021.06.19 게시됨

Java & Kotlin

[JAVA] 자바 데이터 타입과 변수

0. 들어가면서 이번 시간에는 자바 데이터 타입, 변수와 배열에 대해 공부해보려고 합니다. 기초적인 내용이니, 편하게 읽어보시면 좋을 것 같습니다. 1. 프리미티브(Primitive) 타입 종류와 값의 범위 그리고 기본 값 자바 데이터 타입에는 크게 원시 타입(Primitive type)과 참조 타입(Reference type)이 존재합니다. Primitive type은 기본값이 존재하는 데이터 타입으로 Null이 존재하지 않습니다. 그래서 의도적으로 Wrapper 클래스를 통해 Primitive type을 Reference Type으로 관리하면서 의도하지 않은 값이 들어가거나 값이 제대로 들어가지 않았을 땐 NullPointerException 등으로 예외 처리를 할 수 있게 하기도 하죠. 한편, Pr..

2021.06.19 게시됨

Java & Kotlin

[JAVA] 예외 처리를 어떻게 해야할까? - (1)

1. 예외 처리 Try/Catch문을 사용하는 가장 큰 목적은 예외 처리(Exception Handling)를 하는 데 있습니다. 예외 처리란 두 가지 방식으로 수행할 수 있는데, 첫번째가 전통적인 방식인 조건문을 이용하는 것이고 두번째 방법이 try-catch문을 이용하는 것입니다. 하지만, 제 생각으로는 예외 처리를 IF문으로 한다는 것은 최대한 "지양"해야 하는 방향이라고 생각합니다. 그 이유는 아래와 같으며, 글을 풀어나가며 구체적으로 설명하려고 합니다. 첫째, try-catch문에서는 예외가 발생했을 때 그 즉시 해당 블록이 종료되고 catch 블록으로 제어가 이동합니다. 하지만 if-else로 에러를 처리할 경우에는 에러가 발생한 객체에 대하여 수명이 유지되기 때문에 에러를 처리하는 동안에도 ..

2021.06.17 게시됨