■ Java Character Class



안녕하세요. 제임스 입니다. 


이번 포스팅 부터 Java Character Class 에 대해 정리 해보겠습니다. 


일반적으로 Character 를 사용할때는 primitive data type 인 char 를 이용합니다. 하지만 개발 중 primitive data type 대신 Character 객체를 사용해야 하는 경우가 있는데요, 이를 위해 자바에서는 wrapper Class 인 Character 를 제공합니다. 


Character 객체는 아래 예제와 같이 Character 컨스트럭터를 이용하여 생성할 수 있습니다. 


1
Character chr = new Character('c');
cs




Java compiler 는 상황에따라 Character 객체를 생성해줍니다. 물론 이 경우와 반대의 경우도 있습니다. Character 를 char 형으로 자동 변환 해 주기도 합니다. 

이는 자바의 Autoboxing 및 Unboxing 이라는 기능이 있기 때문입니다. 관련 내용은 아래 링크 참조 하세요.

2018/04/17 - [Java] - [ 자바 코딩 ] Java Autoboxing vs Unboxing




Escape Sequences (이스케이프 시퀀스)

백 슬래시(\) 가 앞에 붙은 문자는 Escape Sequence 이며 특별한 의미를 가지고 있습니다. 


Escape Sequence

요약 

 \t

 해당 위치에 TAB 키 만큼 공간을 줍니다

 \b

 해당 위치에 backspace 를 추가 합니다.  

 \n

 해당 위치에 newline (새줄 효과)를 줍니다.

 \r

 해당 위치에서 복귀 효과를 줍니다. 

 \f

 해당 위치에서 서식 효과를 줍니다. 

 \'

 해당 위치에 따옴표를 표기 합니다

 \"

 해당 위치에 쌍따옴표를 표기 합니다. 

 \\

해당 위치에 백 슬래시를 표기 합니다. 



1
System.out.println("123\b456 backspace 효과를 줘서 바로 앞 3 을 삭제처리 ");
cs


위 예제는 backspace 효과를 줬습니다. 바로 앞에 3이 있으니 backspace 효과를 사용 시 3이 삭제 되어 출력 됩니다. 결과는 아래와 같습니다. 


12456 backspace 효과를 줘서 바로 앞 3 을 삭제처리 



1
System.out.println("기존 라인\n신규라인으로 줄바꿈 처리");
cs


위 예제는 실전에서 가장 많이 사용하는 newline 효과를 적용 했습니다. 

결과는 아래와 같습니다. 


기존 라인

신규라인으로 줄바꿈 처리



1
System.out.println("\"Double quote\" 쌍따옴표 사용");
cs


Single quote 와 함께 많이 사용되는 Double quote 를 이용해 샘플을 만들어 봤습니다. 

실행 결과는 아래와 같습니다.


"Double quote" 쌍따옴표 사용



Character Class 에는 많은 함수들이 제공되고 있습니다. 

이 함수들은 차근 차근 정리해 서 올리겠습니다. 




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



■ Java Autoboxing vs Unboxing



안녕하세요. 제임스 입니다. 


자바 개발중 별로 중요하게 생각지 못하거나 왜 그런지 모르고 개발 하는 것들 중 한가지가 Wrapper Classes 와 primitive data type 사이에 이루어 지고 있는 자동 변환 기능을 Autoboxing 과 Unboxing 이라 부르고 있습니다. 


이번에는 이 Autoboxing 과 Unboxing 에 대해 정리해보겠습니다. 



Autoboxing은 자바 컴파일러가 primitive data type 을 그에 상응하는 wrapper class 로 자동 변환 시켜 주는 것을 의미 합니다. 예를 들면 int 를 Integer 로, double 을 Double 로 변환 시키는 것들을 의미 합니다. 


1
2
3
4
5
6
7
8
public static void main(String[] args) {
     char ch = 'j';
     autoBoxing(ch);
}
    
public static void autoBoxing(Character chr){
    System.out.println("autoboxing test result : chr = ["+chr+"]");
}
cs


autoBoxing 함수의 인자 값은 Character 형을 받는 것으로 정의 되어 있지만 실제로 입력한 값은 char 형입니다. 입력 된 primitive data type 인 char 를 Java compiler 가 자동으로 wrapper class 인 Character 형으로 변환 시켜 줬습니다. 


실행 결과는 아래와 같습니다. 


autoboxing test result : chr = [j]



1
2
3
4
5
6
7
8
public static void main(String[] args) {
    int i = 7;
    autoBoxing(i);
}
    
public static void autoBoxing(Integer I){
    System.out.println("autoboxing test result : Integer I = ["+I+"]");
}
cs


위 코드는 int 를 Integer 로 변환 시키는 예제 입니다. 


실행 결과는 아래와 같습니다. 


autoboxing test result : Integer I = [7]




Unboxing은 자바 컴파일러가 wrapper class 를 primitive data type 으로 자동 변환 시켜 주는 것을 말합니다. 


1
2
3
4
5
6
7
8
public static void main(String[] args) {
    Character chr = new Character('c');
    unBoxing(chr);
}
    
public static void unBoxing(char ch){
    System.out.println("unboxing test result : chr = ["+ch+"]");
}
cs


unBoxing 함수의 인자 값은 char 형으로 정의 되어 있지만 실제 함수 호출 시 입력된 값은 wrapper class 인 Character 입니다. java compiler 가 wrapper class 인 Character 를 primitive data type 인 char 형으로 변환 시킨 것입니다. 


실행 결과는 아래와 같습니다. 


unboxing test result : ch = [c]



1
2
3
4
5
6
7
8
public static void main(String[] args) {
    Integer i = new Integer(2);
    unBoxing(i);
}
    
public static void unBoxing(int i){
    System.out.println("unboxing test result : int i = ["+i+"]");
}
cs


위 코드는 Integer 를 int 로 변환 시키는 예제 입니다. 


실행 결과는 ...


unboxing test result : i = [2]




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



 ■ Java Number - Math.log() 함수 & Math.log10() 함수



log() 함수는 수학의 자연로그 함수 입니다. 자연로그 함수란 밑이 자연대수인 e 인 로그 함수를 의미 합니다. 

log10() 함수는 밑이 10인 로그 함수를 의미 합니다. 



Syntax

public static double log (double d)

public static double log10 (double d)



Example


1
System.out.println(Math.log(7.38905609893065));
cs


위 코드는 밑이 e 인 7.38905609893065 값을 뽑아 내는 코드 입니다. 

결과는 2.0 이 나옵니다. 



위와 반대 개념으로 exp() 함수가 있습니다. 

e의 2.0 승을 하는 코드가 아래와 같습니다. 


1
System.out.println(Math.exp(2));
cs


위 코드를 실행 시키면 첫번째 예제의 인자 값인 7.38905609893065 가 리턴 됩니다. 




1
System.out.println(Math.log10(10));
cs


위 코드는 밑이 10인 10 값을 가져오는 코드 입니다. 

밑인 10을 생략하면 log10 과 같이 쓸수 있는데요 이 값은 익히 아시는 바와 같이 1 입니다. 

위 코드를 실행 하면 1.0 이 나오는데요. 이는 함수의 return data type 이 double 형이기 때문입니다. 



 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



■ Java Number - Math.exp() 함수



exp() 함수는 Euler 의 상수 e (약 2.71828) 값을 입력 받은 인자 값만큼 거듭제곱 하는 함수 입니다. 

즉, 입력 인자 값은 double 형이며 이 인자 값이 e 의 승수를 나타냅니다. 



Syntax

public static double exp (double a)



Example


1
System.out.println(Math.exp(2));
cs


위 코드는 2.71828... 의 2승을 한 값을 리턴 합니다. 

결과 값은 7.38905609893065 입니다. 



1
System.out.println(Math.exp(2.5));
cs


위 코드는 2.71828... 의 2.5 승을 한 값을 리턴 합니다. 

결과 값은 12.182493960703473 입니다. 




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



■ Java Number - Math.max() 함수



max() 함수는 입력받은 두 인자 값 중 큰 값을 리턴하는 함수 입니다. min() 함수와 반대 개념의 함수 입니다. 

인자 값으로는 int, long, double, float 등을 사용 할 수 있습니다. 



Syntax

public static int (int a, int b)

public static long (long a, long b)

public static double (double a, double b)

public static float (float a, float b)


입력 data type 이 int 일 경우 리턴 값은 int, 입력 data type 이 double 일 경우 리턴 값은 double 입니다. 

즉, 입력된 data type 에 따라 return data type 이 결정됩니다. 



Example


1
System.out.println(Math.max(121));
cs


data type 이 int 인 12 와 1 두 값중 큰 값을 구하는 코드입니다. 

인자 값이 int 이므로 return 값도 int 가 됩니다. 

위 코드의 실행 결과 12 가 리턴 됩니다. 



1
System.out.println(Math.max(7.121));
cs


data type 이 double 과 int 로 보이지만 max() 함수의 인자 값은 동일한 data type 을 받습니다. 

즉, 7.12 가 double 형이므로 1도 double 형이라고 생각하시면 됩니다. 

min() 함수를 사용 했다면 결과 값은 1.0 이 될것입니다. 


위 코드이 실행 결과 7.12 가 리턴 됩니다. 



1
System.out.println(Math.max(1004.121004.34));
cs


data type 이 doble 형인 두 값을 비교하고 있습니다. 

실행 결과는 1004.34 가 리턴 됩니다. 



 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D





블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



  ■ Java Number - Math.min() 함수



min() 함수는 입력받은 두개의 인자 값 중 작은 값을 리턴 합니다. 인자 값으로는 int, float, long, double 등을 사용할 수 있습니다. 



Syntax

public static int(int a, int b)

public static long(long a, long b)

public static double(double a, double b)

public static float(float a, float b)


입력 data type 이 int 면 리턴 값은 int 형으로 리턴 됩니다. 

즉, 입력된 data type 에 따라 return data type 이 결정됩니다. 



Example


1
System.out.println(Math.min(121));
cs


int 형 12 와 1의 비교 입니다. 

둘중 작은 값을 가져 오는 min() 함수를 이용하였으며 return data type 은 int  형입니다. 


실행 결과는 당연히 1이 리턴 됩니다.



1
System.out.println(Math.min(7.121));
cs


인자 값으로 7.12 와 1 이 있습니다. 

보기에는 double 형 vs int 형의 비교라 생각 할 수 있습니다. 

하지만 함수 자체가 입력 값으로 받는 data type 은 동일 형이어야 합니다. 


즉, 위 코드는 double 형 7.12 vs 1.0 의 비교 입니다. 


실행 결과는 double 형으로 리턴 되므로 1.0 이 리턴 됩니다. 



1
System.out.println(Math.min(1004.121004.34));
cs


보기에도 double vs double 입니다. 리턴 값은 당연히 double 형이구요. 

실행 결과는 1004.12 가 리턴 됩니다. 




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,




■ Java Number - round() 함수



round() 함수는 리턴되는 data type 에 따라 입력값에 가장 가까운 long 이나 int 값을 반환 합니다. 



Syntax

public static long round(double d)

public static int round(float f)



Sample


Case 1

1
2
double a = 9.8;
System.out.println("Math.round(a) = " + Math.round(a));
cs

9.8 이 가장 가까운 long 값은 10 입니다. 

int 값이 아니라 long 이라고 한 이유는 위 syntax 를 잘 보시면 이해 하실 수 있습니다. 

입력 값이 double 이므로 return data type 을 long 으로 생각 하시면 됩니다. 


위 코드를 실행 하면 아래와 같은 결과값이 나옵니다. 


Math.round(a) = 10


1
int intA = Math.round(a);
cs

만약 위와 같이 위 double a 값을 사용하고 한다면 오류가 발생 합니다. 



double 값을 입력 하여 리턴 타입이 long 인데요. 이 값을 int 로 받으려고 하니 오류가 납니다. 


1
int intA = (int)Math.round(a);
cs

위와 같이 int 형을 형 변환을 해주시면 문제 없이 사용 하실 수 있습니다. 



Case 2

1
2
double d = 15.5;
System.out.println("Math.round(d) = " + Math.round(d));
cs

round() 함수는 rint() 함수와 달리 5 이상을 올림 처리를 합니다. 

따라서 15.5 의 가장 가까운 long 값은 15가 아니라 (rint 함수는 15입니다) 16 이 됩니다.


위 코드 실행 결과는 아래와 같습니다. 


Math.round(d) = 16



Case 3

1
2
float e = 10.6f;
System.out.println("Math.round(e) = " + Math.round(e));
cs

이번에는 인자 값의 data type 이 float 입니다. 

리턴되는 값의 data type 은 int 가 되어야 합니다. 


10.6 의 가장 가까운 int 값은 11 입니다. 

위 코드의 실행 결과는 아래와 같습니다. 


Math.round(e) = 11


1
long longE = Math.round(e);
cs

만약 위와 같은 코드를 작성 했다고 가정 했을때 문제가 없을 까요? 


float 값을 입력 받았으므로 int 값이 리턴 되는데 long 으로 받으려고 합니다. 

이 경우는 문제가 없습니다. long 형이 int 형보다 크기 때문에 어떤 경우라도 문제 없이 처리가 됩니다. 


long ==> 64bit

int ==> 32bit



Case 4

1
2
float f = 15.5f;
System.out.println("Math.round(f) = " + Math.round(f));
cs

15.5의 가장 가까운 int 값은 무엇 일까요? 

5 이상은 올림 처리 하여 16이라는 값을 리턴 합니다. 


코드 결과 값은 아래와 같습니다. 


Math.round(f) = 16




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D


블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,




 ■ Java Numbers - rint() 함수 



rint() 함수는 인자값에 가장 가까운 정수를 double 형으로 리턴 하는 함수 입니다. 



Syntax

public static double rint(double d)


※인자 값으로 double 을 받습니다. 



Sample


1
2
double a = 9.8;
System.out.println("Math.rint(a) = " + Math.rint(a));
cs

9.8 의 가장 가까운 정수 값은 10입니다. 

위 코드를 실행 하면 아래과 같은 결과가 리턴 됩니다. 

Math.rint(a) = 10.0



1
2
double b = 10.2;
System.out.println("Math.rint(b) = " + Math.rint(b));
cs

10.2 의 가장 가까운 정수 값은 10 입니다. 

위 코드를 실행 하면 아래와 같은 결과가 리턴 됩니다. 

Math.rint(b) = 10.0



1
2
double c = 10.6;
System.out.println("Math.rint(c) = " + Math.rint(c));
cs

10.6 의 가장 가까운 정수 값은 11입니다. 

코드를 실행하면 아래과 같은 결과가 리턴 됩니다. 

Math.rint(c) = 11.0



1
2
double d = 10.5;
System.out.println("Math.rint(d) = " + Math.rint(d));
cs

10.5 의 가장 가까운 정수 값은 뭘까요? 

6 이상을 반올림 하는 것으로 처리 하여 .5 의 경우 내림 처리 합니다. 

코드를 실행하면 아래과 같은 결과가 리턴 됩니다. 

Math.rint(d) = 10.0




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



■ Java Numbers - floor() 함수


floor() 함수는 앞서 언급했던 ceil() 함수와 반대로 입력된 값 인자 값보다 작거나 같은 가장 큰 정수 값을 double 형으로 반환 합니다. 



Syntax

static double floor(double d)

static double floor(float f)



Sample

1
2
3
4
5
6
7
8
double d1 = -10.675;
System.out.println(Math.floor(d1));
        
double d2 = -9.675;
System.out.println(Math.floor(d2));
        
double d3 = 10.675;
System.out.println(Math.floor(d3));
cs



d1 = -10.675

-10.675 보다 작거나 같은 정수 값은 -11 입니다. 

-11을 double 형으로 변환하면 -11.0 입니다. 


d2 = -9.675 

-9.675 보다 작거나 같은 정수 값은 -10 입니다. 

-10을 double 형으로 변환하면 -10.0 으로 표현 할 수 있습니다. 


d3 = 10.675

10.675 보다 작거나 같은 정수 값은 10 입니다. 

10을 double 형으로 변환하며 10.0 입니다. 


위 코드를 실행 하면 아래와 같은 결과 값을 리턴 합니다. 


-11.0

-10.0

10.0


floor() 함수는 자주 사용하는 함수 입니다. 

꼭 기억 해두셨다가 사용하시길 바랍니다. 




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D



블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,



 ■ Java Numbers - Math.abs() 함수


abs() 함수는 인자값에 대한 절대값을 반환하는 함수 입니다. 인자값의 타입으로는 int, float, long, double 등 primitive data type 입력이 가능합니다. 

Math 클래스의 함수중 하나로 static 함수 입니다. 



Syntax

static double abs( double d )

static float abs( float f )

static int abs( int i )

static long abs( long l )



Sample

1
2
3
4
5
6
7
8
int intValue = -1004;
System.out.println(Math.abs(intValue));
 
double doubleValue = -3.14;
System.out.println(Math.abs(doubleValue));
 
float floatValue = -15;
System.out.println(Math.abs(floatValue));
cs


음수 값들을 절대값으로 반환하면 당연히 전부 양수로 변경 되겠죠? ^^


위 코드를 실행 결과 값은 아래와 같습니다. 


1004

3.14

15.0


int 형을 입력 하면 int 형이 리턴됩니다. 

마찬가지로 double 형을 입력 하며 double 형이 리턴 되죠.


입력된 데이터 타입이 그대로 리턴되는 함수 입니다. 




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D




블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,