STUDY

    [TIL] < 자바의 정석 > 예제 HighLow - 예외처리해보기

    오늘은 예제 부분을 다 공부 했으므로 거의 마지막이었던 HighLow 문제 예외처리해보기를 기록해보려고 한다. 예제 8-7. 다음은 1~100사이의 숫자를 맞추는 게임을 실행하던 도중에 숫자가 아닌 영문자를 넣어서 발생한 예외이다. 예외처리를 해서 숫자가 아닌 값을 입력했을 때는 다시 입력을 받도록 보완하라. 1과 100사이의 값을 입력하세요 :50 더 작은 수를 입력하세요 1과 100사이의 값을 입력하세요 :asdf Exception in thread "main" java.util.InputMismatchException at java.base/java.util.Scanner.throwFor(Scanner.java:939) at java.base/java.util.Scanner.ne..

    [TIL] printStackTrace()는 왜 아래에 찍힐까?

    > printStackTrace()는 왜 아래에 찍힐까? printStackTrace()의 구현은 어떻게 되어 있을까? err 출력 스트림? printStackTrace()의 취약점 printStackTrace()는 왜 아래에 찍힐까 예제 8-5를 배우고 있었다. 코드는 다음과 같았다. public class Ex8_5 { public static void main( String[] args ) { System.out.println( 1 ); System.out.println( 2 ); try { System.out.println( 3 ); System.out.println( 0 / 0 ); System.out.println( 4 ); } catch ( ArithmeticExcepti..

    [TIL] 풀리퀘스트로 코드 리뷰하기!

    [TIL] 풀리퀘스트로 코드 리뷰하기!

    풀 리퀘스트로 코드 리뷰하는 방법 이제까지 풀리퀘스트로 각자의 코드를 모으기만 했었는데, 풀 리퀘스트의 장점인 코드 리뷰를 스터디에서 적용시켜 보기로 했다. 스터디원들에게 코드 리뷰하는 방법을 알려주기 위해 공부한 과정을 기록한다. 1. 자신이 포크해온 원래 레포지토리로 들어가서 pull request 탭으로 들어간다. 2. 코드 리뷰할 풀 리퀘스트로 들어가서 Conversation 탭에 있는 설명을 읽어보고 어떻게 문제를 풀었고, 코드를 썼는지 파악한다. 남이 자신의 코드를 파악하기 좋게 풀 리퀘스트를 할 때 설명을 잘 해야 한다! 3. Files changed 탭에 들어가서 코드리뷰할 파일을 선택한다. 4. 리뷰를 남겨보자. 1) 한 줄에 대한 리뷰를 남기고 싶을 때 줄 옆에 +가 뜬다! 누르면 리뷰..

    [TIL] Getter와 Setter. 왜 쓸까?

    > Getter와 Setter에 대한 내 과거의 생각 Getter와 Setter를 쓰는 이유 Getter와 Setter에 대한 내 과거의 생각 자바로 키오스크를 구현했을 때나, 호텔 예약 프로그램을 구현했을 때나 드는 생각이 있었다. 왜 Getter와 Setter를 쓰는 것인가. 내가 헷갈린 이유는 이렇다. 아래 코드를 보자. name, company를 필드로 가지는 Car 클래스가 있다. public class Car { String name; String company; public Car( String name, String company ) { this.name = name; this.company = company; } public String getName() { return name; } }..

    [TIL] 프로그래머스 - 최댓값과 최솟값 ( 느려지게 하는 범인 찾기 )

    > 문제 설명 첫 번째 시도 코드 두 번째 시도 코드 나보다 빨리 푼 사람의 코드 원인 찾기 문제 해결 후 마지막 코드 문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. s에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 첫 번째 시도 코드 s를 split 메서드를 사용하여 String배열로 만든 뒤, 각 원소의 최댓값과 최솟값을 for문, Math.min(), Math.max() 메서드를 이용하여 알아내였다. 마지막에는 String answer = ""에 concat을 해서 re..

    [TIL] Git reset & revert 연습

    [TIL] Git reset & revert 연습

    > 1. git reset과 revert 연습의 필요성 2. git reset --soft 3. git reset --mixed ( git reset ) 4. git reset --hard 5. git revert 1. git reset과 revert 연습의 필요성 이번 프로젝트 당시 팀원이 본인 브랜치를 마스터 브랜치에 머지를 했는데, 충돌 해결을 그 전 버전으로 해버리셔서 내가 한 작업이 일부 날아가는 일이 있었다. 그 때는 제출 시간을 약간 넘긴 뒤라 조금 정신이 없어서 일단 history를 보며 다시 수정을 하게 되었다. 지금 생각하면 마스터 브랜치의 커밋을 hard로 되돌려 작업 디렉터리를 돌린 다음에 다시 팀원의 브랜치를 머지했으면 됐을 간단한 일이었는데 그 순간에는 이게 훨씬 어려운 일인거 ..

    [TIL] I/O Study - ByteArrayInputStream 예제 01

    > 1. I/O와 스트림 2. InputStream, OutputStream 3. 코드 보면서 ByteArray 입출력스트림 익히기 4. 후기 ※ 책에 나오는 예제로 공부하였다. 1. I/O와 스트림 IO란? Input과 Output의 약자로 입력과 출력, 간단히 줄여서 입출력이라고 한다. 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것이다. 키보드로부터 데이터를 입력받는 것, 화면에 데이터를 출력하는 것이 입출력의 예라고 할 수 있다. Stream이란? 스트림은 데이터를 운반하는데 사용되는 연결통로이다. 스트림의 '물줄기'라는 뜻처럼 단방향만 가능하다! 입력에 필요한 InputStream과 출력을 위한 Output Stream이 있다. 2. ..

    [TIL] 잘못 알았던 재귀함수

    Scanner로 String 값을 입력 받아 저장하고 다시 int 값을 받아서 그 값이 1이면 String 값을 return 하고, int 값이 2이면 다시 메서드를 호출하여 String 값을 재입력 받아 저장하는 구조의 메서드를 구현해보려고 했다. 코드를 한 번 보자. 근데 이상하다. 아래 중괄호를 보면 빨간 줄이 그어져 있는 것을 볼 수 있다. 무엇이 잘못되었는지 확인하니 return 값을 넣지 않았단다. 함수 전체에 return 값을 주던지, else에 return값을 따로 주어야 한다고 한다. 여기서 사실 이상했다. check가 1일 경우 return을 하고 그게 아니면 다시 되돌아가는 재귀방식을 썼는데 왜 return값을 필요로 할까 싶으면서도 일단은 printName() 밑에 return 값을..

    [TIL] contain 메서드 공부하기

    * 목차 메서드를 공부하게 된 이유 contain 메서드에 대하여 contain 메서드를 공부하게 된 이유 개인 과제를 진행하면서 List에서 String[]이 포함되어 있는지 확인해야 하는 작업이 필요했는데, 다른 문서에서 작업을 해 보고 코드를 옮겨오려고 테스트로 코드를 짜보고 있는 와중에 public static void main( String[] args ) { String[] a = { "a", "b", "c", "d" }; ArrayList list = new ArrayList(); list.add( new String[] { "a", "b", "c", "d" } ); System.out.println( list.contains( a )); // fa..

    [TIL] 실무에서 Stream은 어떻게 쓰이고 있을까?

    프로그래머스에서 다른 사람의 코드를 보면 Stream으로 푸는 코드가 상위에 있을 때가 많다. 코드 여러 줄을 한 줄로 끝내서 깔끔해 보이는 코드이기 때문일까? 하지만 그 때마다 댓글에 Stream을 쓰면 느려져서 현업에서는 잘 쓰지 않는다고 매번 댓글이 달린다. 그 전에는 아 stream은 잘 안 쓰나보다 하고 잘 알아보지 않았는데 오늘은 다른 분이 Stream을 이용하신 코드를 보다가 진짜 실무에서 Stream은 어떻게 쓰이고 있는지 한 번 찾아보고 싶어졌다. HTML 삽입 미리보기할 수 없는 소스 을 참고하여 보니 코드가 간결해져 가독성이 좋고 느려지는 정도가 크지 않기 때문에 집합의 사이즈가 너무 큰게 아니라면 Stream도 상당히 자주 쓰인다고 한다. Stream 공부에 대한 필요성을 느꼈다....