[Java] ArrayList - 컬렉션 프레임워크
·
TIL/Java
배열가장 기본적인 자료 구조인 배열에 대해서 먼저 알아보자.배열의 특징 ( 인덱스 )인덱스를 활용하면 매우 빠르게 데이터에 접근이 가능하다인덱스를 통한 입력, 변경, 조회의 경우 단 한 번의 연산으로 원하는 위치에 도달할 수 있다.배열의 인덱스배열은 물리 메모리상에 순서대로 붙어서 선언된다따라서 해당 배열이 저장하고 있는 자료형에 따라서 다음과 같은 연산이 가능하다배열의 시작 위치 + 자료의 크기 * 인덱스 크기즉, 배열의 크기와 무관하게 한 번의 연산으로 원하는 위치를 찾을 수 있게 된다따라서 배열의 인덱스를 활용하는 연산이 매우 빠르게 된다배열의 한계배열은 생성하는 시점에 그 크기를 한 번만 정할 수 있고, 이후 수정할 수 없다배열의 특정 위치에 값을 추가/삭제하기 위해서는 해당 인덱스로부터 뒤에 있..
[Java] 열거형 - enum
·
TIL/Java
열거형이 왜 생겼을까?열거형이 무엇인지보다 열거형이 생겨난 흐름에 대해서 알아보도록 하겠다 자바를 통해 애플리케이션을 작성할 때, 모든 데이터를 숫자를 통해서만 관리할 수는 없다. int형 long형 때로는 문자열을 통해서 데이터를 받고, 조작해야 한다. 예를 들어 자바를 통해 주유소 기계를 만든다고 생각해보자요구사항기름은 3가지를 선택할 수 있으며, 기름별로 요금이 다르다.경유  -> 1L : 1000휘발유 -> 1L : 2000고급유 -> 1L : 3000주유 받을 기름을 선택하고, 몇 리터를 넣을지 선택하면 얼마를 내야하는지 계산하도록 만들어보자 import java.util.Scanner;public class OilMachineMain { public static void main(Stri..
[Java] 래퍼 클래스
·
TIL/Java
자바와 기본형자바는 객체 지향 언어로 객체가 자바의 대부분을 차지한다. 일부 객체가 아닌 것들이 존재하는데 바로 int, long, char와 같은 기본형이다. 기본형은 객체가 아니라 다음과 같은 한계점이 있다.메서드를 제공할 수 없음null 값을 제공할 수 없음. 프로그래밍을 하다보면 필연적으로 값이 없다는 상태를 나타내는 null 값을 사용해야 할 때가 있는데 기본형에서는 이를 표현할 수가 없다기본형의 한계를 이해하기public class PrimitiveLimit { public static void main(String[] args) { int value = 10; int i1 = compareTo(value, 5); int i2 = compareTo(v..
[Java] String 클래스
·
TIL/Java
기본형을 통해서는 연속된 문자인 문자열을 어떻게 다루어야 할까?char는 문자 하나 밖에 저장하지 못하므로 문자열을 저장하기 위해서는 char[]를 선언해서 연달아 저장해주어야 한다public class StringMain{ public static void main(String[] args) { char[] charArr = {'H','e','l','l','o'}; System.out.println(charArr); } }// 실행결과// Hello그렇지만 개발할 때 문자열은 굉장히 많이 사용되는 자료형이며 매번 배열을 통해서 문자열을 다루기란 쉽지 않다.따라서 자바에서는 String 클래스를 제공해서 문자열을 쉽게 다루도록 돕고 있다 String을 통해 문자열을 생성..
[Java] 불변 객체
·
TIL/Java
기본형, 그리고 참조형의 공유자바의 데이터 타입은 크게 기본형과 참조형으로 나눌 수 있다기본형 : 변수의 실제 물리 메모리에 데이터를 저장하게 된다참조형 : 변수의 실제 물리 메모리에는 객체의 참조값을 저장하게 된다모든 변수의 값을 변수에 대입할 때는 해당 변수가 갖고 있는 값을 복사해서 대입하게 된다기본형int a = 10;int b = a;기본형은 실제 물리 메모리에 데이터를 직접 저장하게 된다다른 변수에서 값을 넘겨받을 때는 해당 변수 ( a ) 가 갖고 있는 값 ( 현재는 10의 이진코드 )을 복사해서 대입하게 된다따라서 a, b가 갖고 있는 10은 값만 같을 뿐이지 같은 10으로 볼 수는 없다참조형public Class Bird(){ private String name;}// 간단히 위와 ..
[Java] equals()
·
TIL/Java
동일성과 동등성자바는 두 객체가 같다는 표현을 2가지를 통해서 할 수 있다.동일성 ( == ) : 물리적인 참조 값이 동일한가? 즉 동일한 인스턴스를 참조하고 있는가?동등성 ( equals() ) : 두 객체의 논리적인 값이 동일한가? ( 객체가 갖고 있는 정보가 동일하다 )public class User { private Long id; public User(Long id) { this.id = id; }}public class EqualsMain { public static void main(String[] args) { User user1 = new User(1L); User user2 = new User(1L); System...