일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- html tag
- 에러
- HashSet
- SQL
- 알고리즘
- 부스트코스
- CRUD
- 상속
- Codeup
- 자바
- stringbuffer
- git
- lv1
- 부트캠프
- @AllArgsConstructor
- 파이썬
- 코드업
- HTML
- 브랜치
- entity
- @NoArgsConstructor
- java
- 깃허브
- github
- 캡슐화
- DTO
- 프로그래머스
- 기본생성자
- @builder
- Python
- Today
- Total
목록전체 글 (90)
잉?
키오스크 프로그램을 만들면서 생성자에 의문점을 가지게 되었다. 내가 필요한 메서드를 사용하기 위해서는 그 메서드가 위치한 클래스의 기본생성자를 객체로 만들어서 다 불러오면 되겠구나 싶어 뭣도 모르고 사용했다. 그러다 스택오버플로우 에러도 나고, 코드도 더럽고, 비효율적이다 싶어서 이 생성자가 무엇이고, 어떻게 써야 잘 썼다 소문이 날까 해서 찾아보게 되었다. 생성자란? 자신이 원하는 값으로 변수를 초기화 시킬 수 있는 메서드이다. Car() {...} // 클래스이름(){...} 매개변수가 없는 생성자 Car(int num, String name) {...} // 클래스이름(자료형 매개변수){...} 매개변수가 있는 생성자 기본생성자란? 모든 클래스에는 하나의 생성자가 정의되어야 하는데 우리가 만들지 않..
래퍼클래스(Wrapper Class)란? 기본형 변수를 클래스로 한번 감싼 변수이다. 기본형 변수타입에서 첫 글자를 대문자로 바꾼 것이라 생각하면 쉽다. 박싱 : 기본 타입 → 래퍼클래스 언박싱 : 래퍼클래스 → 기본 타입 기본타입(원시타입) 레퍼클래스(Wrapper Class) byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 그렇다면 래퍼 클래스 사용 이유는 뭘까? 클래스로 변수를 관리하면 객체지향의 많은 기능을 사용할 수 있게 된다. ArrayList등과 같은 컬렉션은 기본 타입이 아닌 객체만 저장한다. → List list = new ArrayList(); 문자와 문자..
팀장님이 스켈레톤 코드를 제공해 주면 그에 맞춰 기능을 구현하는 작업을 했다. 기능 구현도 어렵지만 난 뼈대를 작성하는것에 더 어려움을 느낀다. 특히 어떤 변수와 메소드가 필요하고 클래스 간의 흐름이 어떻게 구성되어야 하는지 같은 것들 말이다. 이런 나에게 스켈레톤 코드는 좋은 본보기가 되어준다. 이런 식으로 틀을 잡으면 되겠구나 하는 참고서가 하나 늘은 셈. (야호!) 기능 하나하나 알지 못하는 상태에서 일단 떠듬떠듬 끼워 맞추는 식으로 작성하다 보면 얼렁뚱땅 돌아가긴 돌아가는 코드가 완성된다. 사실 LinkedList 타입으로 클래스를 넣어준다는 게 아직 와닿지는 않는다. 난 여태 list를 활용해 본 적도 없었고 사용한다 해도 String, Integer 같은 객체를 사용했기에... (아 이것도 w..
키오스크 프로그램의 마지막을 달리고 있는 중에 이 사건은 발생되었다..(두둥) 장바구니에 값이 들어가는 것을 확인하고 다음 메서드로 값을 넘겼는데 넘긴 메서드에서 값이 초기화가 됐다. 장바구니 객체가 선언될때마다 초기화가 되는 것 같아서 생성자 부분을 다시 들여다봤지만 절레절레.. 근데 다시금 생각해보니 선언할 때마다 객체가 다시 생성되고 이로 인해 저장된 값들이 초기화된다면 애초에 딱 한 번만 생성해서 값을 유지하면 되는 것 아닌가 싶었다. 그래서 열심히 찾아본 결과 썩 좋은 방법은 아니지만 static을 이용한 해결법이 있었다. Static의 뜻을 찾아보면 정적인, 고정된이라는 뜻을 가진다. 뜻과 같게 static변수 즉, 클래스 변수는 클래스가 실행될 때 딱 한번 메모리상에 변수의 값이 올라간다. ..
키오스크 주문 프로그램에서 입력을 받을 때 엔터키를 누르면 NumberFormatException에러가 발생했다. 일단 NumberFormatException은 숫자 형식 오류에 의해 발생하는 에러이다. 코드를 보면 nextLine()을 사용하여 숫자를 입력받고 있다. 그리고 입력받은 문자열을 Integer.parseInt()를 사용해 int형으로 바꿔주는데 이 바꿔주는 부분에 ""공백이 들어가니 오류가 날 수밖에... 이 오류를 해결하기 위해 nextInt()로 코드를 바꿔줬다. 입력을 숫자로 받는데 굳이 문자열로 받을 이유가 있나? 싶어 수정해 줬다. nextInt()는 엔터를 쳐도 수가 들어가지 않는 이상 다음으로 넘어가지 않는다. 굿! 난 내 상황에 더 적합하게 코드를 수정해 줬지만 try cat..
키오스크 주문 프로그램을 만드는 과정에 스택오버플로우 에러를 해결했다. 스택오버플로우는 지정한 메모리 사이즈에 비해 훨씬 많은 메모리를 사용하게 되어 발생하는 에러다. 즉, 내가 매고 있는 가방에 책도 넣고, 노트북도 넣고, 의자도 넣고, 책상도 넣다 찢어져 버린 상태이다. 에러들을 살펴보자. 에러들을 하나씩 눌러보면 (아래부터 위로 올라간다.) Buy 클래스 ↓ Kiosk kiosk = new Kiosk(); Kiosk 클래스 ↓ Data data = new Data(); Data 클래스 ↓ Buy buy = new Buy(); 이런 식으로 서로의 기본생성자를 불러온다. 스택오버플로우의 대표적인 사례가 재귀함수를 예로 들 수 있다는데 나의 경우엔 상호 참조의 사례이다. 클래스 간에 서로의 생성자를 불러..
class Solution { public String solution(String my_string) { // String자료형을 return해주는 solution이라는 메서드에 my_string 매개변수를 가진다. StringBuffer sb = new StringBuffer(my_string); // StringBuffer 객체를 만들고 그 안에 my_string의 값을 넣어준다. String value = sb.reverse().toString(); // String자료형을 가진 value변수에 = sb에 저장된 my_string값을.toString()을 이용해 문자열로 리턴해준다. return value; // 문자열로 저장된 value값을 리턴 } } 이번 문제를 통해 StringBuffer의..
과제를 진행하면서 "=="와 "equals()"의 차이에 대해 잘 알아보고 넘어갔다 생각했는데 equals() 관련 글을 볼 때마다 혼란을 느꼈다. 그래서 다시 정리해보자 글을 남기게 되었다. java.lang 패키지는 자바 프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있다. 그중 자주 사용되는 클래스가 Object이다. Obejct 클래스란? 모든 클래스의 최고 조상이기 때문에 Object클래스의 멤버(필드, 메서드)들은 모든 클래스에서 사용 가능하다. 오늘 알아볼 Object클래스의 메서드는 equals메서드이다. equals메서드? Object클래스의 equals메서드는 주소값을 비교한다. Value val1 = new Value(10); => val1값 10이 들어가있는 공간의 주소(0x12..