Programming/Java
코테 문제를 풀다보니 여러가지 해설을 보게 되는데, StringBuilder랑 StringBuffer가 자주 등장하는데 하나도 모르겠어서 정리해보고자 했다. 찾다보니 String이란 클래스 자체가 자바에선 중요한 역할..? 특별한 클래스라고 생각된다. 여태 그냥 스트링은 스트링이지~ 이러고 썼는데.. ㅠㅡㅠ 어려운 녀석이었다. 하나씩 살펴보자 1. String클래스 ** 중요함! ** immutable (변경 불가능한) 클래스 읽어 올 수만 있고, 변경할 수는 없다. - String문자열을 저장하기 위해서 문자형 배열 참조변수(char[]) value를 인스턴스 변수로 정의한다. 즉 ..! String 인스턴스를 생성할 때 이 value에 문자형 배열로 저장된다는 것. * The value is used..
: 자바에서 만드는 변수는 한정적이므로 프로그램이 종료되면 사라진다. 입력받고 조작한 데이터를 저장하고 싶다면? 파일로 저장해두어야 한다.! >> File I/O csv파일 사용 (컴마,를 기준으로 데이터 구분) + 이 데이터를 담을 클래스 만들기. 1. FileReader & FileWriter : 문자 기반의 파일을 읽어들이는 기본이 되는 클래스 - 파일 이름만 알고 있으면 사용 가능. - 열고 나서 할 작업을 다 하면 닫아주는게 좋음 (닫지 않으면 자원 소모, 파일 사용불가 등의 사태가 발생한다) >> 자바 7 이전에는 reader.close()를 직접 해주어야 했다. // finally에서 닫아줄 수 있도록 try-catch문 밖에 변수를 선언한다. FileReader reader = null; ..
: Java 8 버전에 소개된 데이터 모음을 다루는 방법. ✅ 원래 데이터의 모음이 있다면...? 데이터 모음의 데이터가 하나씩 나와서 특정 작업(함수)의 목록을 거쳐 결과 데이터를 만들어내는 방식으로 동작한다. ~> 어떤 작업을 진행할지를 전달하려면 함수를 인자로 전달한다. - 데이터 모음을 Stream으로 변환, 해당 데이터에 할 작업들을 선택, 그 결과를 필요한 형태로 반환하는 과정.. 3단계 1) Stream 만들기 2) Intermediate Operation 3. Terminal Operation 순서로 동작 > 훨씬 간결하게 코드 작성 가능. 작업을 가하는 것이 아니라 작업을 전달해주는 것! List namesWithA = nameList.stream() //Stream을 만들고 .filte..
1. Generic Type Reference - Generic : 클래스, 인터페이스, 메서드를 좀더 일반적인 상황에서 활용하고 재사용성을 높이는 방법. - 다양한 자료형에 대해 동일한 동작을 할 수 있는 방법을 제공. ex. 정수형 배열을 속성으로 가지고, 그 최댓값과 평균을 관리하는 클래스가 있다면..? 똑같은 기능을 실수로 만들고 싶다! > 그러면 또 똑같은 형태의 클래스를 만들거나 클래스 내부에 double[]을 담는 속성/메서드 모두 구현해야한다.... ㅠㅡㅠ public class IntArrayWrapper { private final int[] intArray; public IntArrayWrapper(int[] intArray) { this.intArray = intArray; } //..
- 예외 : 일반적인 코드수행 중 발생한 예상치 못한 상황 - 예외처리 (Exception Handling) : 예외가 발생했을 경우 해당 상황을 수습하고 정상적인 흐름으로 되돌리는 기법. 1) try-catch-finally - try : 예외 발생 가능한 곳 - catch : 내부에서 발생할 수 있는 예외 (여러 개의 catch문도 가능) > 두가지 예외 블럭이 동시에 만족되는 상황에는 먼저오는 블럭이 먼저 실행. > 서로 다른 예외지만 동일하게 처리하고 싶을 때는 |로 하나의 catch문 안에 넣을 수 있음. - catch {} : 예외 발생시 실행되는 코드. (e.getMessage() 활용하여 예외 발생 코드가 작성한 메시지 확인 가능) - finally : 예외가 발생하든 안하든 실행하고 싶은..
1. 객체지향 프로그래밍 1) 캡슐화 (Encapsulation) : 데이터와 기능을 하나의 단위(클래스)로 묶어서 활용하는 것. - 외부의 코드가 내부의 작동 방식을 고려하는 상황 방지 - 객체 내부의 데이터를 외부에서 자유롭게 접근하지 못하도록 하는 정보은닉의 개념까지 포함. (접근 제어자 활용) 2) 상속 (Inheritance) : 이미 존재하는 클래스를 재활용하여 상속받은 클래스의 기능을 재활용/ 확장할 수 있게 하는 것. - 자식 클래스가 부모 클래스의 속성과 기능 공유 - 기능을 덮어써서 독자적인 동작 구현 - 코드 재사용성, 확장성 증진 3) 다형성 (Polymorphism) : 서로 다른 객체가 하나의 공통된 클래스 형태로 취급. - 메서드 오버로딩 : 같은 이름의 메서드로 여러 기능 활..
자동차를 생각해보자. > 자동차에는 가속 페달을 밟고, 엔진은 기름을 공급받아 동력을 생산하고, 엔진에서 나온 동력을 적정 수준으로 변환하고, 바퀴로 전달하는 변속기 등이 있다. ~~ 여러가지 도구, 재료, 사용자, 기계와 같은 "객체"들이 존재한다. 1. 객체와 클래스 자동차이기 위해 가져야하는 정보와, 기능...에 대한 정보를 담는 것이 클래스. - 기본적으로 자바의 기능 수행을 위한 코드는 클래스 내부에만 존재함. ex. - Car 라고 하는 class public class Car { // 자동차의 설계도(?) public String brand; // 브랜드 public String name; // 차종 public int fuel; //탱크상태 public void beep() { // 클락션..