개발/Java 5

[Java] 지네릭스(generics)

지네릭스란?지네릭스란 jdk1.5부터 도입된 개념으로 여러 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 단계에서 타입체크(compile-time type check)를 해주는 기능입니다.이에 따라 객체의 타입 안정성이 높아지고 형변환의 번거로움이 줄어들게 되었습니다.지네릭 클래스 선언과 사용지네릭 타입은 클래스와 메서드에 선언할 수 있습니다. 먼저 클래스에는 아래와 같이 선언된 클래스 Box를 지네릭 클래스로 선언하고 싶으면 클래스 옆에 ''를 붙이고 object를 'T' 로 바꿔주면 선언이 됩니다.class Box{ object item; void setItem(object item){this.item = item;} object getItem(){return item;}}c..

개발/Java 2024.05.25

[Java] 인터페이스(Interface)

자바에서는 추상 메서드(abstract method)라는 개념이 있습니다. 추상 메서드란 아래와 같이 메서드의 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것 입니다.abstract void example1(int num1, int num2); abstract void example2(String name);이와 같은 추상 메서드를 포함하고 있는 클래스를 추상 클래스(abstract class), 오직 추상 메서드와 상수만을 멤버로 가지는 클래스를 인터페이스(interface)라고 합니다. 이와 같이 메서드를 미완성 상태로 선언해 놓는 것이 무슨 의미가 있을까요? 그것은 메서드의 내용이 상속받는 클래스에 따라 달라질 수 있기 때문에 조상클래스에서는 선언부만 작성해 놓고, 실제 내용은 상속받는 ..

개발/Java 2024.05.15

[Java] 오토 박싱 & 오토 언박싱

자바에는 기본 타입과 Wrapper 클래스가 존재합니다. 기본 타입 : int, long, float, double, boolean 등 Wrapper 클래스 : Integer, Long, Float, Double, Boolean 등 Wrapper 클래스 Wrapper 클래스란 8개의 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 의미합니다. 기본 타입의 데이터가 객체로 취급받아야 하는 경우 예를 들어, 메서드의 인수로 객체 타입만이 요구되는 경우에 쓰입니다. 또한 Wrapper 클래스로 인하여 더욱더 객체지향적인 프로그래밍이 가능해집니다. 자바의 기본 타입에 대응하여 제공하고 있는 래퍼 클래스는 다음과 같습니다. 기본 타입 래퍼 클래스 byte Byte short Short int Integ..

개발/Java 2024.02.27

[Java] hashCode와 equals 오버라이드(hashCode는 주소값이 아니다.)

import java.util.*; public class Main { public static void main(String[] args) { int[] array = new int[5]; System.out.println(array); } }위의 코드를 실행시키면 [I@44a5eaa 와 같은 값이 출력됩니다. 이 값은 무엇을 뜻하는 걸까요? 참조형 변수자바에서 기본형 변수 이외의 모든 변수는 참조형 변수로 참조형 변수는 객체의 주소값을 저장하고 있습니다. array라는 변수도 마찬가지로 정수형 배열이 저장되어 있는 주소를 담고 있습니다. 위 그림과 같이 말이죠 하지만 자바에서는 주소에 직접 접근하는 것은 막고 있기 때문에 메모리 주소 값은 아닙니다. @앞의 [I는 클래스 식별자로 해당 객체가 inte..

개발/Java 2023.12.16

[Java]부동소수점수(2진 체계의 부호 표현법)

부동소수점수란? - 자바를 포함한 대부분의 시스템에서 실수를 저장하는데 부동소수점 방식을 사용합니다. 부동소수점수는 부호(Sign), 지수(Exponent), 기수(Mantissa) 세 부분으로 이루어지며 모든 수를 ±M x 2^E의 형식으로 저장합니다. 자바에서는 flaot형 32bit, double형 64bit의 저장공간을 가집니다. ex) - 예를 들어 10진수 9.1234567(10)를 float형식으로 저장한다고 하면 9.1234567(10) = 1001.000111111001101011011011...(2)로 변환합니다. 그리고 2진수 1001.000111111...을 1.xx로 시작하는 형식이 되도록 소수점을 당겨옵니다. 그러면 앞으로 3칸 당겨왔으니까 1.0010001111110011010..

개발/Java 2023.12.16