목록분류 전체보기 (114)
모눈종이에 사각사각
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/LEesb/btrQqMFayK9/yKNzneCSj0unwqR8LOhi81/img.png)
🌙 기본형과 문자열 간의 변환 기본형 \(\rightarrow\) 문자열 문자열 \(\rightarrow\) 기본형 String String.valueOf(boolean b) String String.valueOf(char c) String String.valueOf(int i) String String.valueOf(long l) String String.valueOf(float f) String String.valueOf(double d) boolean Boolean.parseBoolean(String s) byte Byte.parseByte(String s) short Short.parseShort(String s) int Integer.parseInt(String s) long Long.parse..
단위 테스트를 하는 방법을 조금씩 공부를 하고 있던 중, 반환값이 없는, 즉 프린트한 결과값을 통해서는 테스트를 어떻게 하는지 궁금하여 찾아보았다. 내가 하려고 한 테스트는 게임의 상태를 출력하는 것이다. 게임 상태 클래스는 다음과 같다. public class GameState { private int strike; private int ball; public GameState() { this.strike = INITIAL_NUMBER; this.ball = INITIAL_NUMBER; } public void addStrike() { ++strike; } public void addBall() { ++ball; } public int getStrike() { return strike; } public..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0mpDt/btrQgL5JF97/i9f1YShoHFRBbXx5yYifkk/img.png)
[우테코 프리코스 2주차] NsTest 분석에 이어서 테스트코드에서 사용된 Assertions클래스의 메서드를 분석해보려고 한다. 일단 위의 게임종류_후_재시작()부분의 코드를 보면 컴퓨터가 (1, 3, 5)를 생각했을 때 사용자가 "246"을 입력하면 "낫싱"을, "135"를 입력하면 "3스트라이크"를 출력해야 한다는 뜻이며 "1"을 입력하면 재시작하고, 컴퓨터가 (5, 8, 9)를 생각했을 때 사용자가 "297"을 입력하면 "1볼 1스트라이크"을, "289"를 입력하면 "3스트라이크"를 출력해야 한다 그리고 "2"를 입력하면 "게임 종료"를 출력해야 한다는 뜻이다. 예외_테스트()부분은 사용자가 3자리 숫자가 아닌 다른 숫자를 입력했을 때 예외가 발생해야 한다는 것이다. ⚾ assertRandomNu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cD1Pa3/btrQfegvu1P/Sipi4y75nRd4vZwRLRJNH0/img.png)
2주차에서 우리가 이뤄야할 것들 중 하나가 테스트 코드에 익숙해지고, 테스트 도구를 잘 다루는 것이다. 아직 테스트 코드에 대해 모르는 것이 많아 이 기회에 하나씩 정리해가며 분석해보려고 한다. 2주차의 과제 테스트는 NsTest 클래스의 메서드를 활용해서 진행된다. ⚾ run 메서드 게임종료_후_재시작() 테스트코드를 보면 run()이 들어가있는 것을 확인할 수 있다. run()은 다음과 같이 구현되어 있다. protected final void run(final String... args) { command(args); runMain(); } ⚾ command 메서드 run() 안에 있는 command()은 다음과 같다. private void command(final String... args) {..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nylHy/btrQfK0w5vH/9B2l2rJDn6oHX1kUnjmUb1/img.jpg)
🌙 표준 입력 스트림이란? System.setIn에 대해 조사하다가 표준입력스트림(standard input stream)이라는 단어가 나왔다. 여기서 "표준"이 의미하는 것이 무엇인지 궁금해졌다. 먼저 스트림에 대해 알아보도록 하자. 스트림(Stream) 자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이를 스트림이라고 한다. 스트림(stream) : 프로그램을 드나드는 데이터를 바이트의 흐름으로(byte stream) 표현한 단어 스트림은 단방향통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 따라서 입출력을 동시에 하려면 입력 스트림(input stream)과 출력 스트림(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cZh9fB/btrP4WNrVXB/wX5A7482FI5C1vAmDXQLA0/img.jpg)
우아한테스코스의 4주간의 프리코스 기간이 시작됐다. 앞으로 4주동안 공부한 내용을 꾸준히 기록해보려고 한다. 🍁 진행 방식 미션은 기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항 세 가지로 구성되어 있다. 세 개의 요구 사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다. 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다 문제는 총 7문제이다. 🍁 미션 문제1 ## 🚩 구현할 기능 목록 - [x] 페이지 번호 각 자리 모두 더하기 - [x] 페이지 번호 각 자리 모두 곱하기 - [x] 나올 수 있는 4가지의 수 중 가장 큰 수 구하기 - [x] 시작면이나 마지막 면이 나오면 에러 처리하기 - [x] 왼쪽 페..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kLBXV/btrPVFkXJb9/LHSwGVgAsech8eKVqdtiy0/img.jpg)
🌙 String 클래스 1. String 클래스는 immutable(변경불가능한) 클래스이다. 한 번 생성된 String인스턴스가 가지고 있는 문자열은 읽을 수만 있고, 변경할 수 없다. '+' 연산자를 이용해서 문자열을 결합하는 경우, 인스턴스 내의 문자열이 바뀌는 것이 아니라 새로운 문자열이 담긴 String 인스턴스가 생성되는 것이다. 다음과 같이 코드를 작성해 보았을 때 기존의 a의 주소와 a+=b 연산을 마친 후의 a의 주소가 달라졌음을 확인할 수 있다. 2. 문자열의 비교 문자열을 만드는 방법은 두 가지가 있다. String s1 = "가나다"; // 문자열 리터럴 지정 String s2 = "가나다"; // 문자열 리터럴 지정 String s3 = new String("가나다"); // St..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/blT7Nr/btrPQHYBXpU/VqQrduQz3gkbim5r6hTGv1/img.jpg)
파이썬에는 isalpha(), isdigit(), isalnum(), islower(), isupper(), lower(), upper() 등 문자열이 알파벳인지, 숫자인지 등을 판별해주는 함수가 있다. 자바에도 그러한 기능을 하는게 있다. Character.isAlphabetic(), Character.isLetter() // 문자인가?(한글 포함) Character.isDigit() // 숫자인가? Character.isLetterOrDigit() // 문자 또는 숫자인가? Character.isLowerCase() // 소문자인가? Character.isUpperCase() // 대문자인가? Character.toLowerCase() // 소문자로 Character.toUpperCase() // 대..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/euNIBL/btrPR5R1upd/MKtZeBGKxrINzemL2YoLG1/img.jpg)
github이란? git을 웹에 옮겨 놓은 원격 저장소 git은 로컬 저장소 github을 사용해야 공유(협업)가능 코드 복구 가능 add - staging area에 파일 추가 commit - staging area에 있는 파일을 로컬 저장소에 추가 push - 로컬 저장소에 있는 파일을 원격 저장소에 추가 -> git push [원격 저장소 이름] [원격 저장소 브랜치 이름] 참고사이트 https://youtu.be/Z9dvM7qgN9s
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bIkI9g/btrPQIoXvXY/lL6BlvT2Ja3SQOlYiEFXDk/img.jpg)
🌙 @Override @Override 어노테이션은 메서드 앞에만 붙일 수 있는 어노테이션으로, 조상의 메서드를 오버라이딩하는 것이라는 것을 컴파일러에게 알려주는 역할을 한다. 만약 Child가 Parent의 parentMethod()를 오버라이딩 하려고 할 때, 메서드 이름을 잘못 적었다면? @Override annotation이 붙어있었다면 이렇게 에러메시지를 출력한다. 그러나 만약 @Override 를 붙이지 않았다면? 컴파일러는 오버라이딩 한 메소드인지 알지 못해 잘못 썼는지 판단하지 못한다. 새로운 이름의 메서드가 추가된 것이라고 인식한다. 따라서 에러메시지가 출력되지 않는다. 📚 참고자료 남궁성, 『자바의 정석』, 도우출판