분류 전체보기
입출력 스트림 (2) - File I/O
2022.05.22 - [Java/Grammer] - 입출력 스트림 (1) - System.out.println와 I/O 이전 시간에는 System.out.println을 통해 자바 입출력 스트림에 대한 개념들에 대해 알아보았습니다. 이전에 배운 내용을 토대로 이미지나 텍스트 데이터를 다루어 파일에 입출력하는 File I/O에 대해 알아보겠습니다. 오늘 우리의 목표는 원하는 디렉토리 위에서 여러 종류의 데이터를 다루는 연습을 하는 겁니다. 파일 객체 다루기 파일을 만들기 전 우리는 디렉토리(폴더)를 만들어야 합니다. 자바에선 File Class를 통해 파일을 다룰 수 있으며 해당 객체는 해당 경로에 실제 파일이 없더라도 에러가 나지 않습니다. 그렇다면 파일 객체는 무엇을 할수 있을까요? public st..
입출력 스트림 (1) - System.out.println와 I/O
여러분은 System.out.println에 대해서 얼마나 알고계신가요? 오늘 소개드릴 내용은 입출력과 파일에 대한 내용입니다. 궁극적으로는 파일 입출력을 다룰려 했지만 그 전에 입출력에 대한 이해를 돕기위해 우리가 매일 보는 콘솔 입출력을 예시로 입출력 스트림에 대해서도 설명드릴 예정입니다. System.in과 System.out System 클래스는 시스템에 대한 여러가지 속성과 설정을 할수 있는 클래스입니다. 해당 클래스 안에 미리 정의된 정적 멤버변수가 존재하는데 이들이 바로 System.in과 System.out입니다. 이들을 표준 입출력 객체라하고 이들을 사용해서 콘솔에 입출력하는거지요. 그들이 가지고 있는 메서드 중 콘솔에 대한 출력을 하는 println 메서드가 존재하는 것이고 이것이 우리..
ShallowCopy와 DeepCopy 완전 정복
객체 세계인 자바 세상에서 여러분은 객체에 대한 복사를 해보신 적이 있나요? 아마 원시타입과 문자열의 복사의 경우는 많이 해보셨을겁니다. 그렇다면 객체에 대한 복사는 어떻게 처리될까요? 오늘은 이에 대해 알아보겠습니다. 자바 뿐 아니라 수많은 언어에선 복사를 크게 깊은 복사와 얕은 복사로 나눕니다. 여기서 깊은 복사란 원본에 대한 참조를 공유하지 않고 복사하는 것을 말합니다. 즉 바꿔 말하면 수정 사항이 발생할 경우 원본 객체와는 상관없는 다른 객체가 됩니다. 반면에 얕은 복사는 원본에 대한 참조를 공유한 채로 복사하는 것을 의미합니다. 우리가 아는 자바는 어떠한 상황에서 깊은 복사와 얕은 복사를 진행할까요? 원시타입과 불변객체의 복사 /* 원시타입의 복사 */ int origin = 0; int cop..
객체의 중복/정렬 그리고 Collection
Collection Framwork에 속하는 자료구조에 기본형이 아닌 객체를 넣는다면 어떻게 될까요? 넣으면 넣는거지 무엇이 문제인가 생각하시는 분들도 계실겁니다. 예를 들어 TreeSet에 기본형이 아닌 우리가 만든 객체를 넣는다 가정해봅시다. 객체의 중복이 제거되고 정렬이 되겠죠? (해당 사실이 이해가 가질 않는다면 [Java/Grammer] - Simple Data Structure (2) - List/Set/Map 참조) 하지만 객체가 같다는 것을 어떻게 알고, 무엇을 기준으로 정렬을 할지 TreeSet이 어떻게 알수 있을까요? 객체의 중복 기준 설정 두 객체의 중복 기준을 세우려면 hashCode와 equals 메서드를 오버라이딩해야 합니다. 왜냐하면 Collection Framework는 중복..
Simple Data Structure (2) - List/Set/Map
앞에서는 Collection을 포함한 공통 메서드들에 대해 다루었습니다. 이번 시간에는 가장 많이 사용되는 List/Set을 구현한 자료구조에 대해 알아보겠습니다. 일반적인 데이터 저장은 ArrayList 리스트 인터페이스를 구현한 대표적인 자료구조로 내부적으론 배열로 구성되어 있습니다. 또한 리스트를 구현했기 때문에 자료를 순서대로 저장하고 중복을 허용하는 특징을 가지고 있습니다. List list1 = new ArrayList(); List list2 = new ArrayList(Arrays.asList(1,2,3,2));//Parameter Collection //원소 추가 list1.add(0); System.out.println(list1); //[0] //원소들 추가 list1.addAll(A..
Simple Data Structure (1) - 공통 메서드
사실 우리가 흔히 사용하는 ArrayList 이외에 자료구조들은 정말 많습니다. 그러나 이들은 ArrayList만큼 자주 사용되지 않습니다. 단편적으로 데이터를 중간에 삽입이나 삭제하는 경우 ArrayList보다 LinkedList가 훨씬 빠릅니다. 그러나 제가 겪은 실무 환경에서는 적어도 이러한 상황 자체가 잘 나타나지 않습니다. 자료구조를 제대로 알고 활용한다면 금상첨화지만 그럴만한 시간이 없다면 대표 자료구조 하나라도 제대로 아는 것이 중요하다 생각합니다. 그런 면에서 간단하면서도 꼭 필요한 자료구조들을 소개하는 포스팅을 준비해봤습니다. Object Class의 공통 메서드 모든 클래스는 Object 클래스를 상속받습니다. 따라서 Object 클래스가 가지고 있는 메서드들 또한 다른 클래스들도 사용..