자바 랜덤함수를 사용하는 방법은 2가지가 있습니다.

 

Random 클래스와 Math 클래스를 각각 사용해서 random value 를 생성하는 방법에 대해 설명 드리겠습니다.

 

 

1. Java.util.Random

 

Random 클래스의 객체를 생성하면 다음과 같이 다양한 메소드를 사용하여 원하는 타입의 random value 를 생성할 수 있습니다.

 

그 중에서도 가장 많이 사용되는 nextInt() 메소드는 파라미터를 사용해서

원하는 범위내의 양수 값을 (범위 : 0 ~ 파라미터-1) 가져올 수 있습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Random;
 
public class RandomTest {
    public static void main(String[] args) {
        Random random = new Random();
        
        System.out.println(random.nextBoolean());   // true or false
        System.out.println(random.nextFloat());     // range : 0.0f ~ 1.0f(exclusive)
        System.out.println(random.nextInt());       // all 2^32 possible int values 
        System.out.println(random.nextInt(100));    // range : 0 ~ 99
    }
}
 
cs

 

 

<결과>

false
0.2699461
2087110484
73

 

 

 

2. Java.util.Math

 

Math 클래스는 수학적 연산과 관련된 메소드들을 제공하는 클래스로

random() 메소드를 사용하여 0.0 <= double value < 1.0  의 값을 생성할 수 있습니다.

 

random() 메소드가 double 타입을 리턴하기 때문에 타입 캐스팅(int)를 사용해서 정수형으로 변환하여 사용할 수 있으며, (int)(Math.random() * 최대값) + 최소값 의 연산을 통해 최소값 ~ 최대값의 범위 지정도 가능합니다. (실제적으로는 (int)(Math.random() * (최대값 - 최소값 + 1)) + 최소값  입니다.)

 

예제에서는 1 ~ 100 사이의 random value 를 출력하게 됩니다.

 

1
2
3
4
5
6
7
8
public class RandomTest {
    public static void main(String[] args) {
        // range : 0.0 ~ 1.0(exclusive)
        double randomValue = Math.random();    
        int intValue = (int)(randomValue * 100) + 1;
        System.out.println(intValue);
    }
}
cs

 

<결과>

75 

 

 

Posted by maze1008
,

이클립스를 설치하고 예제를 작성하고 있는데, 한글이 굉장히 작게 보이는 현상을 발견했습니다.

 

이클립스 글자크기 (폰트)를 변경하고 싶을 때 또는 한글이 작게 보일 때 

폰트를 설정하는 방법을 설명해 드리도록 하겠습니다.

 

 

 

예제처럼 "한글만' 굉장히 작게 보여지는 현상을 발견했습니다.

현재 설정되어 있는 폰트에서 한국어를 지원하지 않는 경우 이런 현상이 발생하기 때문에 사용중인 폰트를 변경해 주면 됩니다.

 

 

 

Window 메뉴 > Preferences 를 선택합니다.

 

 

 

좌측에서 General > Appearance > Colors and Fonts 를 선택하고

우측 네모 박스에서 Basic 를 클릭합니다.

 

 

 

스크롤을 내려서 Text Font 를 선택하고

Edit 버튼을 클릭합니다.

 

 

 

처음 이클립스를 설치했을 때에는 폰트가 Consolas 로 설정되어 있는 것을 확인하실 수 있으며

원하시는 것을 찾아 선택하시면 됩니다.(저는 일반적으로 사용되는 courier New 를 선택했습니다.)

확인 버튼을 클릭합니다.

 

 

선택한 폰트가 적용되어 한글이 정상적인 크기로 보여지는 것을 확인할 수 있습니다.

 

지금과 같은 방법으로 이클립스에서 사용하길 원하는 글꼴, 글자크기를 설정하여 사용하실 수 있으며

이클립스 테마 적용하기  를 참고하여 테마도 적용할 수 있습니다.

 

'IT > Eclipse' 카테고리의 다른 글

이클립스 메모리 설정  (0) 2015.04.08
이클립스 자동줄맞춤  (0) 2015.04.07
이클립스 단축키  (0) 2015.03.15
이클립스 테마 적용하기  (0) 2015.03.10
이클립스 다운로드 및 설치방법  (0) 2015.03.04

Posted by maze1008
,

cmd 명령어 또는 명령 프롬프트 명령어 또는 dos 명령어 라고 다양하게 불리우는

 

명령어 모음에 대해서 소개해 드리고자 합니다.

 

 

1. 명령 프롬프트 실행하기

 

기존의 다른 글에서 자바 버전 확인 / 맥 어드레스(max 주소) 확인 등을 소개해 드리면서

 

명령 프롬프트를 사용하는 방법에 대해서 소개해 드린적이 있습니다.

 

 

 

시작 메뉴를 클릭하여 cmd 를 입력후 Enter 버튼을 누릅니다.

 

 

 

명령 프롬프트가 실행됩니다.

이 프로그램에 간단한 명령어들를 입력하여 다양한 작업을 수행할 수 있습니다.

 

 

 

2. cmd 명령어 (명령 프롬프트 명령어) 모음

 

ASSOC : 파일 확장명 연결을 보여주거나 수정합니다.

ATTRIB : 파일 속성을 표시하거나 바꿉니다.

BREAK : 확장된 CTRL+C 검사를 설정하거나 지웁니다.

BCDEDIT : 부팅 로딩을 제어하기 위해 부팅 데이터베이스에서 속성을 설정합니다.

CACLS : 파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정합니다.

CALL : 한 일괄 프로그램에서 다른 일괄 프로그램을 호출합니다.

CD : 현재 디렉터리 이름을 보여주거나 바꿉니다. (다른 디렉토리로 이동할 수 있습니다.)

CHCP : 활성화된 코드 페이지의 번호를 표시하거나 설정합니다.

CHDIR : 현재 디렉터리 이름을 보여주거나 바꿉니다.

CHKDSK : 디스크를 검사하고 상태 보고서를 표시합니다.

CHKNTFS : 부팅하는 동안 디스크 확인을 화면에 표시하거나 변경합니다.

CLS : 화면을 지웁니다.

CMD : Windows 명령 인터프리터의 새 인스턴스를 시작합니다.

COLOR : 콘솔의 기본색과 배경색을 설정합니다.

COMP : 두 개 또는 여러 개의 파일을 비교합니다.

COMPACT NTFS : 분할 영역에 있는 파일의 압축을 표시하거나 변경합니다.

CONVERT FAT : 볼륨을 NTFS로 변환합니다. 현재 드라이브는 변환할 수 없습니다.

COPY : 하나 이상의 파일을 다른 위치로 복사합니다.

DATE : 날짜를 보여주거나 설정합니다.

DEL : 하나 이상의 파일을 지웁니다.

DIR : 디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.

DISKCOMP : 두 플로피 디스크의 내용을 비교합니다.

DISKCOPY : 플로피 디스크의 내용을 다른 플로피 디스크로 복사합니다.

DISKPART : 디스크 파티션 속성을 표시하거나 구성합니다.

DOSKEY : 명령줄을 편집하고, Windows 명령을 다시 호출하고, 매크로를 만듭니다.

DRIVERQUERY : 현재 장치 드라이버 상태와 속성을 표시합니다.

ECHO : 메시지를 표시하거나 ECHO를 사용 또는 사용하지 않습니다.

ENDLOCAL : 배치 파일에서 환경 변경의 지역화를 끝냅니다.

ERASE : 하나 이상의 파일을 지웁니다.

EXIT : CMD.EXE 프로그램(명령 인터프리터)을 마칩니다.

FC : 두 파일 또는 파일의 집합을 비교하여 다른 점을 표시합니다.

FIND : 파일에서 텍스트 문자열을 찾습니다.

FINDSTR : 파일에서 문자열을 찾습니다.

FOR : 파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.

FORMAT : Windows에서 사용할 디스크를 포맷합니다.

FSUTIL : 파일 시스템 속성을 표시하거나 구성합니다.

FTYPE : 파일 확장 연결에 사용되는 파일 형식을 표시하거나 수정합니다.

GOTO : Windows 명령 인터프리터가 일괄 프로그램에서 이름표가 붙여진 줄로 이동합니다.

GPRESULT : 컴퓨터 또는 사용자에 대한 그룹 정책 정보를 표시합니다.

GRAFTABL : Windows가 그래픽 모드에서 확장 문자 세트를 표시할 수 있게 합니다.

HELP :  Windows 명령어에 관한 도움말을 제공합니다.

ICACLS : 파일과 디렉터리에 대한 ACL을 표시, 수정, 백업 또는 복원합니다.

IF : 일괄 프로그램에서 조건 처리를 수행합니다.

LABEL : 디스크의 볼륨 이름을 만들거나, 바꾸거나, 지웁니다.

MD : 디렉터리를 만듭니다.

MKDIR : 디렉터리를 만듭니다.

MKLINK : 기호화된 링크와 하드 링크를 만듭니다.

MODE : 시스템 장치를 구성합니다.

MORE : 출력을 한번에 한 화면씩 표시합니다.

MOVE : 하나 이상의 파일을 한 디렉터리에서 다른 디렉터리로 옮깁니다.

OPENFILES : 파일 공유에서 원격 사용자에 의해 열린 파일을 표시합니다.

PATH : 실행 파일의 찾기 경로를 보여주거나 설정합니다.

PAUSE  : 배치 파일의 처리를 보류하고 메시지를 보여줍니다.

POPD : PUSHD 명령으로 저장된 디렉터리로 바꿉니다.

PRINT : 텍스트 파일을 인쇄합니다.

PROMPT : Windows 명령 프롬프트를 바꿉니다.

PUSHD : 현재 디렉터리를 저장한 후 디렉터리를 바꿉니다.

RD : 디렉터리를 지웁니다.

RECOVER : 불량이거나 결함이 있는 디스크에서 읽을 수 있는 정보를 복구합니다.

REM : 배치 파일 또는 CONFIG.SYS에서 주석을 기록합니다.

REN : 파일 이름을 바꿉니다.

RENAME : 파일 이름을 바꿉니다.

REPLACE : 파일을 대체합니다.

RMDIR : 디렉터리를 지웁니다.

ROBOCOPY : 파일과 디렉터리 트리를 복사할 수 있는 고급 유틸리티입니다.

SET : Windows 환경 변수를 보여주거나, 설정하거나, 지웁니다.

SETLOCAL : 배치 파일에서 환경 변경의 지역화를 시작합니다.

SC : 서비스를 표시하거나 구성합니다(백그라운드 작업).

SCHTASKS : 컴퓨터에서 실행할 명령과 프로그램을 예약합니다.

SHIFT : 배치 파일에서 바꿀 수 있는 매개 변수의 위치를 바꿉니다.

SHUTDOWN : 컴퓨터의 로컬 또는 원격 종료를 허용합니다.

SORT : 입력을 정렬합니다.

START : 지정된 프로그램이나 명령을 별도의 창에서 시작합니다.

SUBST : 경로를 드라이브 문자로 지정합니다.

SYSTEMINFO : 특정 컴퓨터의 속성과 구성을 표시합니다.

TASKLIST : 서비스를 포함한 실행 중인 모든 작업을 표시합니다.

TASKKILL : 실행 중인 프로세스나 응용 프로그램을 중지합니다.

TIME : 시스템 시간을 보여주거나 설정합니다.

TITLE : CMD.EXE 세션에 대한 창의 창 제목을 설정합니다.

TREE : 드라이브 또는 경로의 디렉터리 구조를 그래픽으로 화면에 표시합니다.

TYPE : 텍스트 파일의 내용을 보여줍니다.

VER : Windows 버전을 보여줍니다.

VERIFY : 파일이 디스크에 올바로 쓰였는지 검증할지 여부를 지정합니다.

VOL : 디스크 볼륨 이름과 일련 번호를 보여줍니다.

XCOPY : 파일과 디렉터리 트리를 복사합니다.

WMIC : 대화형 명령 셸 내의 WMI 정보를 표시합니다.

 

calc : 계산기 실행

control : 제어판 실행

cmd : 명령 프롬프트 실행

explorer : 탐색기 실행

ipconfig -all : IP 구성

java –version : 자바 버전 확인

mspaint : 그림판 실행

mstsc : 원격 데스크톱 실행

notepad : 메모장 실행

nslookup : dns 정보와 연관된 도메인 정보 확인

ping : 네트워크 상태 확인

telnet : telnet 접속(연결)

tracert : 네트워크 경로 추적

 

 

혹시 프린트를 해서 컴퓨터 옆에 붙여놓고 사용하고자 하시는 분들을 위해서

2가지 형태의 (word, excel) 파일을 첨부해 놓았습니다.

(이 포스트는 복사가 금지되어 있으므로 파일을 다운받아서 사용해 주시기 바랍니다.)

 

CMD (명령 프롬프트) 명령어 모음(word).docx

 

CMD (명령 프롬프트) 명령어 모음(excel).xlsx

 

Posted by maze1008
,

유사한 폴더나 파일을 비교해서 차이점을 확인하고 내용을 통합하고 싶을 때 가장 즐겨 사용하는 툴이

 

Beyond Compare 입니다.

 

주로 소스코드를 비교할 때 사용하는데요.

 

쉬운 설치와 깔끔한 비교 그리고 완벽한 통합까지!!

 

몇 년째 애용하고 있는 Beyond Compare 의 설치 및 사용방법에 대해 소개해 드리도록 하겠습니다.

 

 

 

1. 설치하기

 

아래 링크를 통해서 사이트를 방문하시면 Beyond Compare 를 무료로 다운 받을 수 있습니다.

http://www.scootersoftware.com/download.php

 

 

 

설치하고자 하는 PC 의 운영체제를 선택하고

Standard and Pro Editions 옆에 위치한 Download 를 클릭합니다.

(저는 윈도우에 설치할 것이기 때문에 Windows 를 선택했습니다.)

 

 

 

실행 버튼을 클릭합니다.

 

 

 

이제부터 설치가 시작됩니다.

현재최신 버전은 4.0.7 입니다.

Next 버튼을 클릭합니다.

 

 

 

설치될 공간을 선택하는 화면입니다.

Next 버튼을 클릭합니다.

 

 

 

라이센스를 확인하는 부분입니다.

I accept the agreement 를 체크하고, Next 버튼을 클릭합니다.

 

 

 

설치될 위치를 확인한 후 Next 버튼을 클릭합니다.

 

 

 

생성될 폴더 이름을 지정하는 화면입니다.

Next 버튼을 클릭합니다.

 

 

 

아이콘과 컨텍스트 메뉴 생성을 묻는 부분입니다.

Next 버튼을 클릭합니다.

 

 

 

앞에서 설정한 모든 정보를 다시 한번 확인하고 Install 버튼을 클릭해서 설치를 진행합니다.

 

 

 

짧게 Progress bar 가 지나가고 설치가 완료된 화면입니다.

Finish 버튼을 클릭하여 Beyond Compare 를 실행합니다.

 

 

 

 

2. 파일 비교하기

 

 

 

Beyond Compare 를 실행하면 다음과 같은 화면이 나타납니다.

5가지 기능 중에서 자주 사용하는 것은 Text Compare 와 Folder Compare 인데요.

이번에는 간략하게 Text Compare 기능을 사용해 보도록 하겠습니다.

Text Compare 를 클릭합니다.

(Folder Compare 기능은 폴더의 구조와 폴더에 속한 파일들을 비교하게 됩니다.)

 

 

 

비교 대상의 내용을 명시적으로 확인할 수 있게 화면이 분할되어 나타납니다.

각각 상단에 위치한 열기 아이콘을 클릭하여 비교할 파일들을 import 합니다.

 

 

 

입력된 숫자가 다른 파일 2개를 생성하여 비교해 보았습니다.

화면에서 나타는 것과 같이 두 파일이 다른 위치와 내용을 빨간색을 이용해서 알려주고 있습니다.

 

사용자는 빨간색 부분을 통해 두 파일의 차이점을 한 눈에 파악할 수 있으며

좌측에 위치한 노란색 화살표를 클릭하여 우측 내용을 좌측으로 또는 좌측 내용을 우측으로 복사할 수 있습니다.

 

또한 맨 아래 부분을 보면 서로 다른 부분을 정확히 비교해서 한 번 더 표현해 주기 때문에

분할 화면을 통해 이해가 되지 않은 부분이 있다면 더 상세하게 확인 할 수 있습니다.

 

이 외에도 위쪽에 위치한 다양한 도구 메뉴를 사용하여 편리하게 비교 및 통합을 진행 할 수 있습니다.

 

Posted by maze1008
,

자바의 String 형을 선언하는 방법에는 2가지가 있습니다.

 

1. 기본 자료형(Primitive Type) : 실제 값을 저장

String apple = "apple";

 

2. 참조형(Reference Type) : 클래스를 사용하여 값이 저장되어 있는 주소를 저장

String banana = new String("banana");

 

두 가지 모두 애용되는 방법이지만

문자열을 비교하는 연산을 수행할 때 원하지 않는 오류를 발생시킬수 도 있습니다.

 

오늘은 기본 자료형과 참조형에 대한 등위 연산자의 차이와

문자열 비교에 이용되는 다양한 String 메소드에 대해서 알아 보도록 하겠습니다.

 

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
32
33
34
35
public class StringTest {
    
    public static void printResult(boolean result) {
        if (result) {
            System.out.println("같다");
        } else {
            System.out.println("다르다");            
        }
    }
 
    public static void main(String[] args) {
        // 기본 자료형(primitive type)
        String str1 = "apple";
        String str2 = "apple";
                
        // 참조형(reference type) : class
        String str3 = new String("apple");
        String str4 = new String("apple");
 
        // 등위 연산자( == )
        printResult(str1 == str2);        
        printResult(str2 == str3);
 
        // equals(), equalsIgnoreCase()
        printResult(str2.equalsIgnoreCase(str3));
        printResult(str3.equalsIgnoreCase(str4));
 
        // compareTo(), compareToIgnoreCase()
        printResult(str2.compareToIgnoreCase(str3) == 0);
        
        // matches(regex)
        printResult(str2.matches(str3));
    }
}
 
cs

 

"apple" 이라는 문자열을 대해 기본 자료형 변수와(str1, str2) 참조형 변수(str3, str4) 가 각각 2개씩 선언하였습니다.

 

 

1. 등위 연산자 ( == )

 

첫 번째로 비교에서 가장 많이 사용되는 등위 연산자를 적용해 보았습니다.

 

1
2
3
// 등위 연산자( == )
printResult(str1 == str2);    // 같다
printResult(str2 == str3);    // 다르다
cs

 

같은 기본 자료형을 비교했을 때에는 "같다"

기본 자료형과 참조형을 비교했을 때에는 "다르다"는 결과가 출력되었습니다.

 

두 연산의 결과가 다른 이유는 무엇이었을까요?

그 이유는 기본 자료형으로 선언한 경우 변수가 다르더라도 같은 내용(문자열)을 갖고 있다면 동일한 주소값을 가리키고 있기 때문입니다. 따라서 처음의 등위 연산자는 "같다" 는 결과를 출력하게 된 것 입니다.

 

이와 반대로 참조형의 경우에는 각각 메모리의 일정한 공간을 차지하기 때문에 기본 자료형과 같은 내용(문자열)을 갖고 있다 하더라도 다른 주소를 가리키게 됩니다. 그래서 다음의 등위 연산자는 "다르다" 는 결과를 나타내게 됩니다.

 

printResult(str3 == str4); // 다르다 

참조형 변수를 비교하더라고 마찬가지로 "다르다" 라는 결과를 얻게 될 것입니다.

 

결국 등위 연산자가 비교한 값은 실제 문자열이 아닌 문자열이 저장된 주소인 것이지요.

 

 

2. equals(), equalsIgnoreCase()

 

우리가 비교하고 싶은 것은 실제 문자열! 입니다.

 

1
2
3
4
// equals(), equalsIgnoreCase()
printResult(str2.equalsIgnoreCase(str3));    // 같다
printResult(str3.equalsIgnoreCase(str4));    // 같다
cs

 

그래서 문자열의 비교에는 String 클래스에서 제공해주는 equals(), equalsIgnoreCase() 메소드를 사용합니다. 실제 문자열을 비교하기 때문에 기본 자료형과 참조형의 비교에도 우리가 원하는 "같다" 는 결과를 제대로 돌려줍니다.

 

1
2
3
4
5
printResult("apple".equals("APPLE"));    // 다르다
printResult("apple".equals("apple"));    // 같다
        
printResult("apple".equalsIgnoreCase("APPLE"));    // 같다
printResult("apple".equalsIgnoreCase("apple")); // 같다
cs

 

equals() 메소드는 대소문자를 구분하여 비교하고

equalsIgnoreCase() 메소드는 대소문자를 구분하지 않고 비교하므로

원하는 비교 형태를 확인하시고 선택 / 사용하면 더욱 유용합니다.

 

 

3. 그 외의 방법들  : compareTo(), compareToIgnoreCase(), matches()

 

equals(), equalsIgnoreCase() 메소드 이외에도 

String 클래스에서 제공해주는 다양한 메소드를 활용할 수도 있습니다.

 

1
2
3
4
5
// compareTo(), compareToIgnoreCase()
printResult(str2.compareToIgnoreCase(str3) == 0);    // 같다
        
// matches(regex)
printResult(str2.matches(str3));    // 같다
cs

 

두 문자열의 길이가 같은지, 각각의 순서에 맞게 char 로 비교한 결과를 리턴하는

compareTo(), compareToIgnoreCase() 메소드는 두 문자열이 같다면 0 를 반환하게 됩니다.

 

또한 matches() 메소드는 파라미터로 정규식(regex) 를 입력받아, 문자열이 정규식과 일치하는지 확인하는 데 사용되지만 위에서와 같이 문자열 비교에도 이용할 수 있습니다.

 

Posted by maze1008
,

안드로이드에서는 이클립스의 DDMS 탭을 통해서 연결된 디바이스의 화면을 손쉽게 캡쳐할 수 있습니다.

 

 

USB 케이블을 사용하여 스마트폰과 PC 를 연결합니다.

 

 

 

이클립스 실행 > 우측의 DDMS 탭 선택

DDMS 탭이 없다면

(1) 이클립스 실행 > Window 메뉴 > Open Perspective > Other...  를 클릭합니다.

(2) Open Perspective 다이얼로그 > DDMS 선택 > OK 버튼 클릭합니다.

 

좌측 상단 Devices 탭에서 PC 의 연결된 스마트폰 선택 > 바로 위의 카메라 버튼 클릭

(위의 표시된 device name 은 갤럭시일 경우 samsung-.... 나타날 수 있습니다.) 

 

 

 

선택한 스마트폰의 현재 화면이 캡쳐되어 다이얼로그에 보여집니다.

Save 버튼을 클릭하면 PNG 파일로 저장할 수 있습니다.

Posted by maze1008
,

이클립스 단축키

IT/Eclipse 2015. 3. 15. 15:45

이클립스에서 단축키를 사용하면 효율성, 생산성을 크게 향상 시킬 수 있습니다.

 

특별히 외우려고 하지 않아도 사용하다보면 자연스럽게 그 편리함에 많은 단축키들을 쓰게 되는데요.

 

오늘은 이클립스에서 제공하는 기본적인 단축키에 대해서 소개해 드리도록 하겠습니다.

 

 

이클립스 (Eclipse) 를 실행하고 Help 메뉴 > Key Assist 를 클릭하면

우측 하단에 우리가 사용할 있는 기본 단축키 리스트가 나타납니다.

 

정말로 다양한 기능들이 지원되는데요.

이중에서 유용한 것들을 선별해 보도록 하겠습니다.

 

 

 

 

F1 : 도움말

F3 : 클래스, 메소드, 속성이 선언된 위치로 이동

F4 : 클래스의 계층구조 확인(Type Hierarchy view)

F5 : 디버깅 시 선택된 행의 메소드 내부로 이동 (Step In)

F6 : 디버깅 시 선택된 행의 아래로 이동 (Step Over)

F7 : 디버깅 시 실행중인 메소드 외부로 이동(Step Return)

F8 : 디버깅 시 다음 디버그 포인트(중단점)로 이동 (Resume)

F11 : 디버그 모드로 실행 (Debug)

F12 : Editor창으로 이동

 

 

Ctrl + / : 한 줄 주석(//) 처리 또는 해제

Ctrl + 콤마(,) 또는 점(.) : 다음/이전 에러(경고)로 이동

Ctrl + F6 또는 E : Editor 창 간의 이동 (파일간의 이동)

Ctrl + F7 : View 창 간의 이동 (Console, Problems )

Ctrl + F8 : Perspectives 창 간의 이동 (Java, Debug )

Ctrl + F11 : 실행 모드로 실행 (Run)

Ctrl + 1 : 빠른 수정 (에러에 대한 수정할 코드 추천)

Ctrl + D : 한 줄 삭제

Ctrl + F : 문자열 찾기 (Find/Replace 다이얼로그)

Ctrl + H : 문자열 찾기 (Search 다이얼로그)

Ctrl + I : 들여쓰기 자동 적용

Ctrl + K : 현재 선택된 문자열과 동일한 문자열 찾기

Ctrl + L : 행 번호를 입력하여 특정 행으로 이동 (Go to Line 다이얼로그)

Ctrl + M : 현재 View / Editor 를 최대화

Ctrl + N : 새로운 파일 / 프로젝트 생성

Ctrl + O : 메소드 또는 속성 이동

Ctrl + Q : 마지막으로 편집한 곳으로 이동

Ctrl + T : 클래스 계층 구조 팝업

Ctrl + W : 파일 닫기

Ctrl + Space : 코드 자동완성

 

 

Ctrl + Shift + F4 : 열린 파일 모두 닫음

Ctrl + Shift + Space : 메소드의 파라미터 목록 표시

Ctrl + Shift + B : 현재 행의 중단점(Break Point) 설정 / 해제

Ctrl + Shift + F : 코드 형식 정리

Ctrl + Shift + G : 선택한 메소드, 속성이 사용된 모든 곳을 검색 (Search view)

Ctrl + Shift + L : 모든 단축키 정보 표시

Ctrl + Shift + O : import 자동 추가 / 삭제

Ctrl + Shift + R : 파일(클래스 포함) 찾기(Open Resource 다이얼로그)

Ctrl + Shift + T : 클래스 찾기 (Open Type 다이얼로그)

Ctrl + Shift + X : 대문자 변환

Ctrl + Shift + Y : 소문자 변환

 

Ctrl + Alt + G : 전체 파일에서 선택된 문자열과 동일한 문자열 찾기 (Search view)

Ctrl + Alt + 화살표(up, down) : 현재 라인을 위(아래)로 복사

Alt + 화살표(up, down) : 현재 라인을 한 줄씩 위(아래)로 이동

 

 

굵게 표시한 항목들은 제가 평소에 특별히 유용하게 사용하는 기능들입니다.

실행 / 디버깅 작업을 할 때에는 필수적으로, 검색 (클래스, 메소드, 속성, 문자열, 호출된 곳) 및 Edit 작업시에도 적절한 기능들을 선택하여 애용하고 있습니다.

 

혹시 프린트를 해서 컴퓨터 옆에 붙여놓고 사용하고자 하시는 분들을 위해서

2가지 형태의 (word, excel) 파일을 첨부해 놓았습니다.

(이 포스트는 복사가 금지되어 있으므로 파일을 다운받아서 사용해 주시기 바랍니다.)

 

 

이클립스 단축키(word).docx

 

이클립스 단축키(excel).xlsx

 

Posted by maze1008
,

자바에서 정수를 표현하기 위해서 byte, short, int, long 등 다양한 타입이 지원됩니다.

 

그러나!  long 보다 큰 정수를 표현해야 할 때에는 어떻게 해야 할까요?

 

BigInteger 클래스는 이름 그대로 큰 정수값을 표현할 때 사용됩니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.math.BigInteger;
 
public class BigIntegerTest {
    public static void main(String[] args) {
        System.out.println("정수의 최대값 : " + Long.MAX_VALUE);
        System.out.println("정수의 최소값 : " + Long.MIN_VALUE);
        System.out.println();
 
        BigInteger bigValue1 = new BigInteger("10000000000000000000");
        BigInteger bigValue2 = new BigInteger("-9999999999999999999");
 
        BigInteger addResult = bigValue1.add(bigValue2);
        BigInteger mulRuslt = bigValue1.multiply(bigValue2);
        
        System.out.println("BigInteger 더하기 : " + addResult);
        System.out.println("BigInteger 곱하기 : " + mulRuslt);
    }
}
cs

 

<결과>

정수의 최대값 : 9223372036854775807
정수의 최소값 : -9223372036854775808

 

BigInteger 더하기 : 1
BigInteger 곱하기 : -99999999999999999990000000000000000000 

 

 

우선 정수의 최대값과 최소값을 확인하기 위해서 long 타입의 범위를 출력해 보았습니다.

 

그리고 이 범위를 벗어나는 아주 큰 정수들을 BigInteger 클래스를 사용하여 선언했습니다.

BigInteger  는 BigDecimal 과 마찬가지로 math 패키지에 포함되어 있으며, 일반적인 클래스를 사용하듯이 이용할 수 있습니다.

 

 

여기서 한가지 주의할 점은 생성자의 매개변수를 문자형으로 전달해야 된다는 것입니다.

문자형을 사용하는 이유는 아주 간단합니다. 숫자형으로 표현할 수 있는 범위를 벗어난 값이기 때문입니다!

BigInteger 클래스를 사용하는 이유이기도 하죠.

 

 

연산이 수행된 결과값이 보이시나요?

BigInteger 클래스에는 add, multiply 이외에 다양한 메소드들이 제공되고 있으니 정수 연산에 유용하게 이용할 수 있습니다.

 

 

 

'IT > Java' 카테고리의 다른 글

자바 랜덤함수(Java Random)  (0) 2015.03.24
자바 문자열 비교 - equals(), equalsIgnoreCase()  (0) 2015.03.17
BigDecimal 클래스 - 오차없이 실수 표현하기  (0) 2015.03.13
자바 버전 확인  (0) 2015.03.09
자바 환경변수 설정  (0) 2015.03.02

Posted by maze1008
,

실수형 데이터 타입을(float, double) 사용하여 값을 표현할 때에는 오차에 유의해야 합니다.

 

일반적인 프로그래밍에서 큰 영향이 없는 미묘한 차이일지라도 금융권 등에서는 치명적이 오류를 발생시키기 때문입니다.

 

자바의 BigDecimal 클래스을 사용하면 이러한 실수 표현의 문제점을 해결할 수 있습니다.

 

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
import java.math.BigDecimal;
 
public class BigDecimalTest {
 
    public static void main(String[] args) {
        // test #1
        double value1 = 1.6;
        double value2 = 0.1;
        System.out.println("실수의 더하기 : " + (value1 + value2));
        System.out.println("실수의 곱하기 : " + (value1 * value2));
        System.out.println();
        
        // test #2
        BigDecimal value3 = new BigDecimal(1.6);
        BigDecimal value4 = new BigDecimal(0.1);
        System.out.println("BigDecimal 더하기 : " + value3.add(value4));    
        System.out.println("BigDecimal 곱하기 : " + value3.multiply(value4));    
        System.out.println();
        
        // test #3
        BigDecimal value5 = new BigDecimal("1.6");
        BigDecimal value6 = new BigDecimal("0.1");
        System.out.println("BigDecimal 더하기 : " + value5.add(value6));    
        System.out.println("BigDecimal 곱하기 : " + value5.multiply(value6));    
    }
}
cs

 

<결과>

실수의 더하기 : 1.7000000000000002
실수의 곱하기 : 0.16000000000000003

 

BigDecimal 더하기 : 1.7000000000000000943689570931383059360086917877197265625
BigDecimal 곱하기 : 0.1600000000000000177635683940025051398161724525855033823303533017413935457540219431393779814243316650390625

 

BigDecimal 더하기 : 1.7
BigDecimal 곱하기 : 0.16

 

 

1번째 테스트(test #1) 에서는 double 형 변수를 2개 생성하여 연산을 수행해 보았습니다.

예상된 결과는 더하기 : 1.7  곱하기 : 0.16 이지만 출력된 결과는 오차값을 표현하고 있습니다.

 

 

오차 문제를 해결하기 위해서 2번째 테스트(test #2) 에서 BigDecimal 클래스를 사용했습니다.

BigDecimal 은 math 패키지에 포함되어 있으며, 일반적인 클래스를 사용하듯이 new 키워드를 이용하여 객체를 생성한 후 add, multiply 메소드로 연산을 진행했습니다.

 

 

그런데 오차범위가 줄어들지 않고 오히려 더 상세하게 표현되고 있습니다!

BigDecimal 의 객체를 생성할 때 실수형 매개변수(1.6 과 0.1)가 전달되면서 이미 오차가 발생하기 때문에 더욱 심각한 연산 결과가 발생하게 되는 것입니다.

 

 

마지막으로 3번째 테스트(test #3) 에서는  BigDecimal 의 객체를 생성할 때 문자형 매개변수("1.6" 과 "0.1")가 전달되도록 작성해 보았습니다.

 

드디어 오차없이 정확한 결과값 1.7 과 0.16 이 출력되었습니다.

BigDecimal 클래스에는 add, multiply 이외에도 다양한 메소드가 제공되고 있으니 참고하시기 바랍니다.

 

 

 

Posted by maze1008
,

CSV 파일 변환

IT/ETC 2015. 3. 12. 10:00

CSV 는  Comma Separated Value 의 약자입니다.

 

쉼표를(Comma , ) 를 기준으로 데이터를 구분해서 저장 및 사용하겠다는 의미입니다.

 

데이터1,데이터2,데이터3,.....

데이터11,데이터12,데이터13,....

 

 

CSV 파일은 프로그래머(개발자)들이 configuration 등 프로그램 동작시 필요한 간단한 값들을 저장하기도 하고

 

일정한 기준으로 약속된 value 들을 기록하는데 사용하기도 합니다.

 

꽤 많이 그리고 자주 이용되는 데이터 저장 형식이라는 의미입니다.

 

그렇다면 이렇게 빈번히 사용되는 CSV 파일은 어떻게 작성해야 할까요?

 

한땀한땀 쉼표(,) 를 찍어가며 직접 입력하기엔 실수가 일어날 확율이 아주 높습니다.

 

그래서 오늘은 손쉽게 CSV 파일은 만들고 사용할수 있는 CSV 파일 변환 방법에 대해 소개해 드리겠습니다.

 

 

 

1. CSV 파일 - 엑셀(Excel) 을 이용하세요.

 

우리가 문서 작업시 자주 사용하는 엑셀(Excel) 은 CSV 파일을 만들고 수정하는 데도 유용합니다.

 

엑셀(Excel) 을 실행 시켜주세요.

 

 

기본적으로 새로운 엑셀 파일에는 3개의 시트가 포함되어 있습니다. (Sheet1, Sheet2, Sheet3)

이 때 Sheet1 하나만을 남겨두기 위해서 Sheet2, Sheet3 를 삭제합니다.

(Sheet2 이름에 마우스를 올려놓고 > 오른쪽 클릭 > 삭제 를 선택하면 간단하게 삭제하실 수 있습니다.)

 

엑셀(Excel) 을 사용하여 CSV 파일을 만들때는 파일에 반드시 1개의 Sheet 만 존재해야 합니다.

그렇지 않으면 저장시 에러 다이얼로그가 발생합니다.

 

Sheet1 의 이름은 변경해 주셔도 되는데요.

특별한 의미를 갖지 않으므로 어떤 이름으로 설정해 주셔도 무방합니다. (저는 수정하지 않았습니다.)

 

 

 

데이터를 입력해 볼까요?

 

1행이 CSV 의 첫번째 줄이 되고 A 컬럼에 입력된 값이 첫 번째 값, B 컬럼에 입력된 값이 두 번째 값으로... 이렇게 순서대로 구성됩니다.

 

A1,B1,C1,....

A2,B2,C2,....

 

제가 엑셀에 입력한 값들은 연두색 Tooltip 으로 표시된 것처럼 CSV 파일에 나타나게 됩니다.

 

데이터는 영어, 숫자, 한글 모두 입력 가능합니다.

 

 

 

입력이 모두 끝나셨다면 좌측 상단에 Office 단추 > 다른 이름으로 저장을 클릭합니다.

 

 

 

가장 중요한 순간 입니다!!

파일 형식을 선택하면 중간 아래쪽으로 CSV (쉼표로 분리) 라는 항목이 존재합니다.

앞에서 입력했던 정보들을 CSV 파일 형태로 저장하겠다는 의미입니다.

CSV (쉼표로 분리) 항목을 선택해 주세요.

 

 

 

파일 이름 입력 > 저장 버튼을 클릭합니다.

 

 

 

CSV (쉼표로 분리) 형식을 선택할 경우 완벽히 지원되지 않는 기능이 있을 수 있다는 경고 다이얼로그가 나타나는데요. 단순 경고 문구로 특별한 의미를 가지고 있지 않습니다. 예(Y) 버튼을 클릭합니다.

 

 

 

우리가 작성한 CSV 파일입니다.

기존에 사용하던 엑셀과는 다른 파일 모양을 가지고 있습니다.

 

 

메모장을 실행한 후 저장한 CSV 파일을 메모장으로 드래그해서 열어줍니다.

(메모장은 시작메뉴 > 모든 프로그램 > 보조프로그램 > 메모장 을 선택하면 실행할 수 있습니다.)

 

 

 

처음 우리가 작성하려 했던 CSV 파일 형태로 기록된 상태입니다.

데이터들이 쉼표(,) 를 기준으로 구분되어 있습니다.

잘 작성된 것 같죠!

 

 

 

메모장을 종료하고 다시 CSV 파일(CSVTest 파일)을 더블 클릭하면

엑셀에서 파일을 작성했던 형태로 Cell 에 데이터들이 채워져 보여집니다.

 

물론 처음부터 메모장을 열어 집중해서 쉼표(,) 를 넣어가면 CSV 파일을 만들 수 도 있습니다.

하지만 앞에서 말씀드린 것 처럼 데이터를 입력할 때 시각적인 분리가 잘 되지 않아 실수할 확율이 매우 높습니다. 실수는 곧 프로그램의 버그 더 나아가 치명적인 에러를 발생시키게 되겠죠.

 

그래서 대부분의 경우 엑셀을 이용하여 데이터를 입력 / 수정하고

메모장을 열어 복사해서 사용하거나 저장된 파일을 그대로 이용하게 됩니다.

 

 

 

2. 쉼표(,) 외에 다른 구분자 지정하기

 

그런데 말입니다.

 

Comma Separated Value 라는 이름에도 불구하고 가끔은 쉼표(,) 가 아닌 다른 구분자를 사용해야 할 때가 있습니다. (주로 데이터내에 쉼표(,) 가 포함된 경우 입니다.)

 

구분자는 어떻게 변경해야 할까요?

 

 

시작 메뉴를 클릭하여 제어판을 선택합니다.

 

 

 

시계, 언어 및 국가별 옵션 아래에 위치한

키보드 또는 기타 입력 방법 변경을 클릭합니다.

 

 

 

추가 설정 버튼을 클릭합니다.

 

 

 

목록 구분 기호(L) 에 쉼표(,) 가 기본값으로 입력되어 있습니다.

이 부분에 구분자로 사용하고 싶은 기호를 입력합니다.

저는 | 로 수정했습니다.

 

 

 

1번에서 진행했던 대로 엑셀(Excel) 파일을 다시 저장하고 나면

데이터들이 | 를 기준으로 구분되어 있는 것을 확인 할 수 있습니다.

Posted by maze1008
,