프로그램을 좀 해본 사람이라면 System.out.printf를 많이 써 봤을 것이다. 자바의 printf는 C 언어의 printf에 뿌리를 두고 있어 프로그래머들에게 익숙한 개념이다. printf는 특히 숫자를 길이나 형식에 맞게 출력하는데 유용하다. 그런데 잘 모르고 있는 사람이 많지만 System.out.format이라는 메소드도 printf와 똑같은 기능을 제공한다. 그런데 자바에서는 이러한 포매팅의 개념이 스트링에서 출발하고 있다. String.format() 메소드가 System.out.printf나 System.out.format에서 사용되는 것과 같다. 그럼 이 format 메소드에 대해 좀더 자세히 알아보자. String.format(포매팅문자열, 인수, ...); 여기서 인수는 포매팅 ..
자바에서 스트링은 매우 중요하고 어려운 자료형이다. 이것은 C 언어에서도 마찬가지인데, 사실 자바의 스트링은 C 언어의 char*에 비해서는 매우 쉽고 편리하다. 그러나 메모리 관리를 하지 않으므로 효율성의 면에서 주의하지 않으면 성능에 심각한 문제를 가져올 수도 있다. 이 포스트에서는 스트링의 기본 개념과 연산에 대해서 살펴본다. 자바에서 스트링은 객체다. 객체라 함은 데이터를 내부적으로 가지고 있는 메모리 인스턴스이고 외부로 노출된 메소드에 의해서 접근할 수 있다는 뜻이다. 이러한 객체는 String 타입의 변수에 의해 참조된다. 프로그램 안에서 쓰이는 스트링 객체의 한 형태는 쌍따옴표로 표시되는 문자열을 스트링 리터럴(상수값)이라고 부른다. 스트링 리터럴도 하나의 스트링 객체여서 메모리 상에 저장되..
코드리뷰 시리즈 프로그래밍 스타일 - 들여쓰기와 스페이스 프로그래밍 스타일 - 이름 붙이기 코드 리뷰 ABC - if 문 줄이기 코드 리뷰 ABC - 반복문 코드 개선 (이글) 반복문은 프로그램에서 대부분의 실행시간을 차지하는 곳이고 코드의 복잡도가 가장 높아지는 곳이다. 그러므로 반복문 코드를 잘 짜는 것은 프로그래밍에서 가장 중요하고 핵심적인 역량이다. 코드리뷰는 실행 상의 오류를 찾는 과정이 아니다. 문제없이 잘 동작하는 것이 확인된 코드에서 좀더 보기좋게, 간결하고 분명하게 코드를 고칠 수 있는 부분이 있는지 찾는 과정이라고 할 수 있다. 반복문 작성에서 주의할 점은 1) 루프 변수가 반복에 따라 어떻게 바뀌는지 잘 보여야 한다. 2) 종료조건과 반복회수가 알아보기 쉽게 작성되어야 한다. 3) 가..
코드리뷰 시리즈 프로그래밍 스타일 - 들여쓰기와 스페이스 프로그래밍 스타일 - 이름 붙이기 코드 리뷰 ABC - if 문 줄이기 (이글) 코드 리뷰 ABC - 반복문 코드 개선 코드 리뷰는 개발자들이 서로의 코드를 보면서 의견을 나누고 내꺼 남의 꺼 구별없이 더 나은 코드가 될 수 있게 고쳐나가는 개발 과정의 한 단계다. 코드 리뷰를 통해 사소한 스타일 규칙부터 if 문이나 for 루프를 작성하는 방식, 메소드를 만드는 방식, 매개변수나 반환형의 타입 등 모든 부분에 대해 토론하고 서로 자기의 의견을 제시하고 더 나은 것을 수용하면서 코드를 더 좋게 만들게 된다. 이 때 프로그램이 올바로 동작하는 것은 당연한 전제조건이고 실행이나 논리상의 오류가 있다면 프로의 세계에서는 망신을 당하게 된다. 수준높은 개..
앞에서 equals 메소드의 오버라이딩으로 비교와 검색을 할 수 있음을 보았다. 그런데 두 객체에 대한 비교가 같다/같지않다로 할 수도 있지만 정렬을 하고 싶다면 크다, 같다, 작다의 세 가지 경우를 구분할 수 있어야 한다. C의 strcmp가 이러한 비교 함수의 원조다. strcmp는 두 char* 포인터를 받아서 앞의 것이 작으면 -1, 같으면 0, 크면 1을 돌려준다. 반환형은 int다. 자바에서 이런 비교를 해주는 메소드가 compareTo다. compareTo는 많은 라이브러리 클래스에 이미 구현되어 있는데, 대표적인 예로 역시 String 클래스를 살펴보자. String str1 = scan.next(); String max = str1; while (scan.hasNext()) { str1 ..
자바에서 클래스 객체를 사용하면서 접하게 되는 메소드로 toString이 있다. 이것도 앞에서 살펴본 equals 처럼 Object 클래스에 정의되어있는 것을 오버라이드하는 메소드다. toString()의 역할을 이해하기 위해서는 먼저 자바에서 변수나 값의 타입변환 규칙을 살펴보아야 한다. 프로그램은 데이터를 읽어서 그것을 int, float, String 등의 타입으로 메모리에 저장한다. 그런데 프로그램에서 +나 == 같은 연산을 수행할 때는 두 피연산자를 같은 타입으로 만들어서 계산해야 한다. 다음 예는 이러한 타입변환이 자동으로 일어나는 예를 보여준다. int n = 10; double a = n; // n을 double으로 변환하여 a에 지정 long b = n; // n을 long으로 변환하여 ..
자바를 처음 배울 때 어려운 개념 중 하나가 변수의 참조다. 참조는 어떤 객체를 가리키는 값인데 C의 포인터와는 좀 다르지만 비슷하게 이해할 수 있다. 객체를 가지고 프로그램을 만들어야 하는 것이 자바이므로 참조는 자바에서는 가장 근본이 되는 개념이다.이것은 프로그래밍 언어의 개념에서 값과 참조의 구분에 해당한다. 자바 언어에서 변수는 기본 타입(int, short, long, byte, float, double, char, boolean 8개)은 값 변수, 객체 타입(또는 복합타입이라고도 함)은 참조 변수다. 값 변수는 자체로 메모리와 값을 가진다. 참조 변수는 어딘가에 저장되어 있는 객체를 가리킨다(참조만 가짐). 참조 변수는 일반적으로 선언할 때 null로 초기화하고 필요할 때 new Student..
코드리뷰 시리즈 프로그래밍 스타일 - 들여쓰기와 스페이스 (이글) 프로그래밍 스타일 - 이름 붙이기 코드 리뷰 ABC - if 문 줄이기 코드 리뷰 ABC - 반복문 코드 개선 코드 스타일은 코드의 전체적인 모양새라고 볼 수 있다. 이것은 우리가 문서 작성할 때 여백과 줄바꿈, 들여쓰기를 어떻게 잘 해서 예쁘게 인쇄하느냐에 따라 문서에 대한 평가가 얼마나 좌우되는가와 비슷한 것이다. 코드에서 적절한 줄바꿈, 들여쓰기, 빈칸 처리는 코드 전체의 모양새를 결정할 뿐 아니라 코드의 가독성에 절대적인 영향을 미치는 요소이다. http://www.oracle.com/technetwork/java/codeconventions-150003.pdf 에서 발췌 1. Indentation 들여쓰기와 줄바꿈 한 줄은 80글..
코드리뷰 시리즈 프로그래밍 스타일 - 들여쓰기와 스페이스 프로그래밍 스타일 - 이름 붙이기 (이글) 코드 리뷰 ABC - if 문 줄이기 코드 리뷰 ABC - 반복문 코드 개선 프로그램 코드에서 이름이 글자수로 따지면 몇 퍼센트나 될까? 놀랍게도 80% 이상이다. 그럼 이름이 코드의 가독성에 미치는 영향은 어느 정도일까? 놀라겠지만 필자는 90% 이상이라고 확신한다. 왜냐고? 클래스 이름, 메소드 이름, 변수 이름이 코드를 이해하는데 얼마나 중요한가는 사실 남의 코드를 읽어본 사람이라면 누구나 느끼게 된다. 그러나 단순히 이해하는데 도움을 주는 것보다 훨씬 많은 역할을 할 수 있다. 변수 이름은 자료구조를 나타낼 수도 있고 메소드 이름은 함수가 하는 일을 알려준다. 또한 적절한 변수 이름을 이용해서 어떤..
여기서는 파이썬의 입출력 기본을 살펴본다.먼저 프로그램이 실행의 결과를 보여주는 방법으로 print(…) 함수가 있다. 괄호 안에 결과를 출력하고 싶은 내용을 넣어주면 된다. 그 자리에는 값, 변수, 수식 등 무엇이든 올 수 있다. 여러 개의 값이나 수식을 콤마로 나열하면 차례로 연결되어 출력된다. >> 5+1 6 >> a = 5 >> print(a) 5 >> b= 3.1 >> print(b * 3) 9.3 >> “Good Morning” ‘Good Morning’ >> c = ‘hello’ >> print(c) Hello >>> print(a, b, c) 5 9.3 hello print 문에서 한가지 특징적인 것은 print 문을 한번 수행할 때마다 무조건 줄바꿈이 나타난다는 것이다. 자바처럼 prin..
- Total
- Today
- Yesterday
- 스트링
- comparable
- Iterator
- zip
- CompareTo
- 패턴
- 스트링 +
- TypeError
- rust
- 동적바인딩
- 지연계산
- indexof
- max
- APPEND
- 이터레이터
- 콜렉션
- 자바regex
- Camel Style
- python example
- ToString
- format
- python exercise
- typedef
- contains
- sort key
- 이터러블
- follow
- Lazy evaluation
- C++ 클래스
- contentEquals
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |