Java/객체지향 65

[객체지향][자바의 정석] - 14. LinkedList

1. LinkedList 배열의 장단점 장점 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간(접근시간, access time)이 짧다. 단점 크기를 변경할 수 없다. 크기변경을 위해서는 아래와 같이 3단계 작업을 해야 한다. 더큰 배열을 생성 기존 데이터를 복사한 뒤 참조를 변경해주어야 한다. 크기 변경을 피하기 위해 충분히 큰 배열을 생성하게되면, 메모리가 낭비된다. 비순차적인(=중간 데이터) 데이터의 추가, 삭제에 시간이 많이 걸리게 된다. 데이터를 추가하거나 삭제하기 위해, 다른 데이터를 옮겨야 한다. 그러나 순차적인 데이터 추가(끝에 추가)와 삭제(끝부터 삭제)는 빠르다. 2. LinkedList 배열의 단점 보완 배열과 달리 링크드 리스트는 불연속적으로 존재하는 데이터를 연결(link) 데..

Java/객체지향 2022.01.26

[객체지향][자바의 정석] - 13. ArrayList

1. ArrayList란? ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일하다. ArrayList와 달리 Vector는 자체적으로 동기화처리 되어 있다. List인터페이스로 구현하기에 저장 순서가 상관 없이 유지되고 중복을 허용한다 데이터 저장공간으로 배열을 사용한다.(배열기반) 2. ArrayList의 메서드 3. 실습 package javajungsuk; import java.util.ArrayList; import java.util.Collections; public class Java11_2_1 { public static void main(String[] args) { ArrayList list1 = new ArrayList(10); //autoboxing에 의..

Java/객체지향 2022.01.25

[객체지향][자바의 정석] 10.2 - 형식화 클래스(숫자, 날짜)

1. 형식화 클래스란? 프로그래밍에서 유용한 형식과 화면에서 유용한 데이터 형태는 다르다. 화면에 출력될 때는 문자열만 의미가 있기 때문에 사람이 읽을 수 있도록 가시성이 좋도록 Object의 toString() 메서드를 오버라이딩해서 사용한다. 하지만 오바라이딩해서 사용하기 힘든 두 가지 형태가 있는데, 기본형 숫자와 Date 클래스다. 그래서 숫자 또는 Date를 읽기 쉬운 문자열로 바꾸는데 사용되는 클래스를 형식화 클래스라 한다 형식화 클래스에는 DecimalFormat과 SimpleDateFormat이 있다. 📌출처:https://itellyhood.tistory.com/85 java.text 패키지의 DecimalFormat, SimpleDateFormat DecimalFormat 숫자를 형식화..

Java/객체지향 2022.01.24

[객체지향][자바의 정석] - 10. 1 날짜와 시간

1. Calendar과 Date java.utill.Date 날짜와 시간을 다룰 목적으로 만들어진 클래스 Date의 메서드는 거의 deprecated(앞으로 사용 X)되었지만, 여전히 쓰이고 있다 java.utill.Calendar Date 클래스를 개선한 새로운 클래스 . 그러나 여전히 딘점 존재 날짜와 시간을 함께 다루는 것이 캘린더의 가장 큰 단점이었다. java.time 패키지(가능하면 이걸 많이 쓰자 ~) Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공 날짜와 시간을 따로 다룰 수 있게 개선하였다. 2. Calendar 클래스 캘린더 클래스는 추상클래스이기 때문에 객체 생성이 불가하다. 추상 클래스이기때문에 getInstance()를 통해 구현된 객체를 얻어야 한다. Calen..

Java/객체지향 2022.01.21

[객체지향][자바의 정석] - 9.3 StringBuffer클래스

1. StringBuffer 클래스 특징 String처럼 문자형 배열(char[])을 내부적으로 가지고 있다. 문자열을 저장하고 다루기 위한 클래스 String과 달리 내용을 변경할 수 있다. (Mutable) append( )는 지정된 내용을 StringBuffer에 추가 후, StringBuffer의 참조를 반환 배열의 길이 변경불가하기 때문에 공간이 부족하면 새로운 배열을 생성해야 한다. 공간이 부족하면 새로 배열을 만들고 복사해주어야 한다. 문자열의 길이를 고려해서 적절한 크기로 생성해야 한다. StringBuffer는 equals( )가 오버라이딩 되어있지 않다. 이는 주소를 비교한다는 의미로 StringBuffer를 String으로 변환해서 equals( )해주어야 제대로 비교가 된다. 2. ..

Java/객체지향 2022.01.17

[객체지향][자바의 정석] - 9.2 String 클래스

1. String 클래스의 특징 String 클래스 = 데이터(char[]) + 메서드(문자열 관련) 내용을 변경할 수 없는 불변(immutable) 클래스 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어진다. 문자열의 결합이나 변경이 잦다면, 내용 변경이 가능한 StringBuffer를 사용 2. 빈 문자열("", empty String) 내용이 없는 문자열, 크기가 0인 char형 배열을 저장하는 문자열 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능하다. 문자(char)와 문자열(String)의 초기화 new 연산자를 통한 빈 문자열을 만드는 것보다 객체 하나를 다같이 돌려 사용하는 것이 바람직하다. 3. String클래스의 생성자와 메서드 4. 문자열과 기본형간의 변환 숫자를 문자열로 ..

Java/객체지향 2022.01.08

[객체지향][자바의 정석] - 9.1 Object 클래스

1. Object 클래스의 메서드 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다. notify( ), wait( )등은 쓰레드와 관련된 메서드이다. equals( ), hashCode( ), toString( )은 적절히 오버라이딩해야 한다. 2. equals(Object obj) 객체가 자신과 주어진 객체(obj)를 비교한다. 같으면 true 다르면 false Object클래스에 정의된 equals( )는 참조변수 값(객체의 주소)을 비교한다. 서로 다른 객체는 주소가 항상 다르다. equals( )를 오버라이딩해서 인스턴스변수의 값을 비교하도록 바꾼다. package javaStandard; public class Ex9_1_1..

Java/객체지향 2021.12.28