Programming
-
[Java] Primitive Data TypesProgramming/Java 2021. 8. 22. 05:23
Java는 statically-typed language로서 컴파일 시간에 변수의 타입이 초기화 되므로 변수는 선언과 동시에 반드시 초기화 되어야 한다 int num = 1; 이러한 문장을 통해 numeric data를 가지고 있고 '1'의 초기 값을 지닌 num이라는 변수를 선언할 수 있다. 변수의 데이터 타입은 변수가 가질 수 있는 값, 해당 변수에 적용할 수 있는 연산들을 지정할 수 있다. 자바는 클래스형이 아닌 8가지의 원시 타입(숫자형, 문자형)을 제공한다. data type size 표현 범위 default value byte 1byte -128 ~ 127 0 short 2byte -32,768 ~ 32,767 0 int 4byte -2^31 ~ 2^31 - 1 (unsigned) 0 ~ 2^..
-
Overriding(오버라이딩)과 Overloading(오버로딩)Programming 2021. 8. 16. 01:13
오버라이딩과 오버로딩은 한글로 보면 더더욱 헷갈리는 객체지향 프로그래밍의 메소드 정의 방식이다 (Method) Overriding : 자식(서브) 클래스가 부모(슈퍼) 클래스에 정의된 메소드를 재정의 할 수 있는 기능. 부모 클래스에 정의되어 있는 메소드와 정확히 같은 이름, 같은 반환형, 같은 파라미터를 가져야 한다 Java에서는 @Override 메소드를 이용하여 오버라이딩을 할 수 있다 class Thought { public void message() { System.out.println("I feel like I am diagonally parked in a parallel universe."); } } public class Advice extends Thought { @Override // ..
-
[Java] Abstract Class(추상 클래스)와 Interface(인터페이스)의 차이Programming/Java 2021. 8. 15. 16:55
객체지향에 있어서 Abstraction(추상화)는 단순한 인터페이스를 통해 구현의 복잡성을 숨기고 기능을 제공할 수 있는 핵심 개념이다. Java에서 추상화는 주로 Interface(이후 인터페이스)와 Abstract Class(이후 추상클래스)를 통해 구현할 수 있다 1. Class와 Interface Class: 객체를 생성하기 위해 변수와 메소드를 정의하는 사용자 정의 타입. 상태와 행동을 결정하는 property와 method들로 이루어져 있다 Interface: 클래스와 유사하지만 필드 상수와 메소드 정의부를 가지고 있는 사용자 정의 타입. 인터페이스 내의 모든 메소드는 구현체를 포함할 수 없음(Java 8미만. 8 이후 부터는 default와 static 메소드에 한해 구현체를 가질 수 있다)..
-
Value와 Object, identity와 equality의 차이Programming 2021. 8. 7. 22:36
객체 지향의 개념에는 값과 객체를 명확히 구분한다. Pizza pizza = new Pizza("Margherita"); Value and Equality 값이란 숫자, 문자, 문자열, 날짜 같이 그 자체로 변하지 않는 데이터를 의미한다. 5, "Hello", 'E', 등등은 변하지 않는 속성인 immutable state를 지닌다. 서로 다른 두 인스턴스가 같은 값인지 확인하기 위해서는 두 인스턴스의 상태가 동일한지 확인한다. 동일한 숫자 두 개가 있고 같은지 다른지 판별해야 한다면 똑같은 숫자 값을 가지고 있는지 확인해서 그 여부를 가릴 수 있다. 이렇게 두 인스턴스의 상태를 이용해 동일하다고 판별하는 성질을 동등성(equality)이라고 한다. 값의 상태는 절대 변하지 않기 때문에 특정 시점에 동일..
-
[Java] String 🆚 StringBuffer 🆚 StringBuilder 무슨 차이일까?Programming/Java 2021. 7. 23. 21:53
"String, StringBuilder, StringBuffer의 차이에 대해 설명하세요" 라는 면접 빈출 질문이 있다고 한다 그래서 오늘 java 공식 api 문서를 보면서 세 가지 클래스의 차이를 정리해 볼 것이다 1. String String 클래스는 character 자료형으로 된 문자열을 표현하는 대표적인 클래스이다. "abc"와 같이 큰따옴표로 표현될 수 있는 문자열이 String 클래스의 구현체이다. "abc"와 같은 문자열 value 자체는 값이 생성된 뒤에 변하지 않는 상수이다. 변수 할당 후 값을 자유롭게 바꿀 수 있는 Numeric형 변수들과 다르게, String의 문자열 value 자체는 바뀔 수 없다. 즉, Immutable한 속성을 가지고 있다는 것인데 설명은 아래의 링크를 참..
-
[Java] Java API HashMap은 어떻게 동작할까Programming/Java 2021. 6. 20. 14:09
✅ 이 글의 전반적인 내용은 아래의 글을 정리하여 작성하였음 https://d2.naver.com/helloworld/831311 해시 시리즈 3탄 이 글을 쓰기 위해 이전의 글을 써왔고, 해시에 대해 잘 알지 못한다면 참고하는 것도 좋을 것 같다https://2jinishappy.tistory.com/230 빠른 데이터 검색을 위한 Hashing과 Hash Table select * from ~ where key="name" 우리는 종종 위와 같은 쿼리문으로 데이터베이스에 있는 튜플을 조회한다 데이터베이스에 있는 attribute의 key값이 unique하다고 할 때, 테이블의 튜플을 어떻게 조회하는 2jinishappy.tistory.com https://2jinishappy.tistory.com/2..
-
[Java] Primitive Wrapper ClassProgramming/Java 2021. 4. 13. 20:49
Wrapper Class는 primitive data type을 캡슐화하는 클래스이며, 다른 클래스의 객체 인스턴스 및 메소드를 만들기 위해 사용한다. Primitive Data Type에 Object처럼 사용하기 위해 Class로 바인딩시키는 역할이라고 할 수 있다. 1️⃣ primitive type은 class의 generic으로 사용할 수 없고, 2️⃣Object의 하위 클래스를 요구하는 메소드가 있을 때 일반 primitive data type을 Wrapper class로 감싸서 사용한다. 일단 primitive data type을 이용하면 일정 단위의 데이터 저장을 위해 Array만을 이용할 수 있지만, 원시 데이터 타입을 wrapper class로 감싸면 java의 다양한 collection을..
-
[Java] Comparable과 ComparatorProgramming/Java 2021. 4. 6. 10:04
Comparable과 Comparator는 모두 Java의 인터페이스이다 단어도 비슷하고, 인터페이스 내 메소드 내 구현해야 할 메소드 명도 비슷해서 항상 용법이 헷갈리지만 엄연히 역할들이 분류되어 있었다. Interface Comparable Comparable은 java.lang package에 존재하는 public interface이며 이 인터페이스를 구현하는 클래스의 객체는 순서를 정의할 수 있는 규칙을 부여할 수 있다. Collections.sort(Arrays.sort)를 할 때 인자로 Comparator를 넘겨 주지 않아도 되며 sorted map이나 sorted set에서도 그 order가 적용된다. public class Point implements Comparable { int x; ..