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


얼마전 딸을 데리고 별다방에 갔다가 애기 고모가 시킨 라임패션티를 마시는 모습이 너무 귀여워 영상을 찍었습니다. 

혼자 보기 아까워 Youtube 를 이용하여 한번 올려 봤는데요. 


Youtube 에 영상을 올려보긴 처음인지라 버벅 거리기는 했지만 열심히 공부해서 제대로 영상을 올린것 같긴 합니다. ㅎㅎ


아직은 Youtube 초보인지라 조금더 공부 후 이곳에 공유 해보겠습니다. 


오늘은 처음으로 올린 딸 영상 공유 해보고자 합니다. 

재미있게 감상해주시고 마음에 드시면 좋아요도 부탁 드립니다 ^^



블로그 이미지

쉬운코딩이최고

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

,



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


이번에는 자바스크립트를 이용하여 새창 띄우는 방법에 대해 정리해 보겠습니다. 


■ window.open(url, windowName, [windowFeatures]);


새창 띄우기를 할때는 window.open 을 사용하면 됩니다. 


URL 

호출 할 웹페이지 주소 


windowName 

오픈 할 창 이름


windowFeatures

윈도우 기본 사이즈나, 포지션, 스크롤바 표기 여부등 오픈할 창의 설정값


- left: 새창의 위치를 현재 작업 환경의 좌측으로 부터 거리 지정

- top: 새창의 위치를 현재 작업 환경의 상단으로 부터 거리 지정

- height: 창 높이 

- width: 창 넓이

- menubar: 메뉴바 표시 여부 (yes / no)

- toolbar: 툴바 표시 여부 (yes / no)

- location: 주소입력 창 표시 여부 (yes / no)

- resizable: 창 사이즈 변경 가능 여부 (yes / no)


위와 같은 속성 들은 거의 모든 브라우저에서 지원 하고 있습니다. 


예전... 익스플로러가 대세였던 시절에는 fullscreen 이라는 속성도 사용했습니다. 이름 그대로 창을 최대 사이즈로 열어 주는 속성인데요. 안타깝게도 익스플로러에서만 지원 되는 속성으로 사용하지 않으시길 권장 합니다. 




function openNewWindow(){
window.open("http://jamesdreaming.tistory.com/", // URL
"제임스의티스토리", // windowName
"width=1000, height=700, toolbar=no, menubar=yes, scrollbars=no, resizable=yes" // windowFeatures
);
}

<input type="button" value="새창띄우기" onclick="javascript:openNewWindow();">

위와 같은 경우 새창이 기존 브라우저 상단에 띄게 됩니다. 


파라미터 값이 세종류가 있지만 windowFeatures 는 입력하지 않아도 됩니다. 

만약 아래와 같이 windowFeatures 를 입력하지 않으면 어떻게 될까요? 

function openNewWindow(){
window.open("http://jamesdreaming.tistory.com/", // URL
"제임스의티스토리" // windowName
);
}

위와 같이 세번째 파라미터를 전달하지 않을 경우 새창이 아니라 새 탭으로 창이 뜨게 됩니다. 



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

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

감사합니다 :D



블로그 이미지

쉬운코딩이최고

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

,



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


연말이 다가오니 실적때문인지... 업무가 몰리고 있습니다. 

덕분에 오랜만에 포스팅을 하게 되네요. 


오늘은 자바에서 valueOf 와 parseInt 의 차이점에 대해 정리 해보겠습니다. 


int a = Integer.valueOf("1234");
int b = Integer.parseInt("1234");
System.out.println("a = ["+a+"]");
System.out.println("b = ["+b+"]");

위와 같이 "1234" 라는 String 값을 하나는 Integer.valueOf() 로 다른 하나는 Integer.parseInt() 를 사용하여 출력 해봤습니다. 

결과는 아래와 같습니다. 


a = [1234]

b = [1234]


결과 상으로 봤을때 동일한 값을 리턴시켜주고 있습니다. 


하지만 이 둘은 약간 다릅니다. 

그 차이점을 알아 보겠습니다 .



■ valueOf


API 에서는 아래와 같이 설명하고 있습니다. 

public static Integer valueOf(String s)
                       throws NumberFormatException
Returns an Integer object holding the value of the specified String. The argument is interpreted as representing a signed decimal integer, exactly as if the argument were given to the parseInt(java.lang.String) method. The result is an Integer object that represents the integer value specified by the string.

In other words, this method returns an Integer object equal to the value of:

new Integer(Integer.parseInt(s))
Parameters:
s - the string to be parsed.
Returns:
an Integer object holding the value represented by the string argument.
Throws:
NumberFormatException - if the string cannot be parsed as an integer.


간단히 요약하자면 valueOf 의 리턴되는 결과값은 new Integer() 로 객체입니다. 



pareseInt

public static int parseInt(String s)
                    throws NumberFormatException
Parses the string argument as a signed decimal integer. The characters in the string must all be decimal digits, except that the first character may be an ASCII minus sign '-' ('\u002D') to indicate a negative value or an ASCII plus sign '+' ('\u002B') to indicate a positive value. The resulting integer value is returned, exactly as if the argument and the radix 10 were given as arguments to the parseInt(java.lang.String, int) method.
Parameters:
s - a String containing the int representation to be parsed
Returns:
the integer value represented by the argument in decimal.
Throws:
NumberFormatException - if the string does not contain a parsable integer.


요약하면 parseInt 의 리턴되는 결과값은 int 로 기본 자료형 (primitive type) 입니다. 



문자열을 변환할 경우 기본 자료형(primitive type) 으로 받아 오고 싶을때는 parseInt 를 사용하고 new Integer() 형으로 반환하고 싶으면 valueOf 를 사용하면 됩니다. 




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

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

감사합니다 :D



블로그 이미지

쉬운코딩이최고

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

,



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


이번에는 자바에서 문자열 비교방법에 대해 알아보고 차이점에 대해서도 알아 보겠습니다. 



■ Primitive Type(기본형) 비교


String a = "test";
String b = "test";

위와 같이 기본형 문자열이 두개 있습니다. 

모두 test 라는 값을 가지고 있습니다. 


이를 비교 하는 방법은 "==" 연산자 와 "equals()" 함수 두가지 정도 있습니다. 


사용방법은 아래와 같습니다. 

if(a == b){
System.out.println("a == b");
}else {
System.out.println("a != b");
}

if(a.equals(b)){
System.out.println("a equals to b");
}else {
System.out.println("a not equals to b");
}

변수 a, b 모두 primitive type (기본형) 으로 정의 되어 "==" 연산자를 사용하거나 "equals()" 함수를 사용하더라도 동일한 결과를 리턴받습니다. 위의 코드를 실행 시키면 아래와 같은 결과를 리턴 받습니다. 


a == b

a equals to b



■ Reference Type(참조형) 비교


만약 변수를 reference type (참조형) 으로 정의 하면 어떻게 될까요? 

String c = new String("test");
String d = new String("test");

변수 c, d 모두 "test" 라는 값을 가지는 reference type 으로 정의를 했습니다. 


단순히 c 와 d 값을 찍어 보겠습니다. 

System.out.println("c = ["+c+"]");
System.out.println("d = ["+d+"]");

결과를 보면 아와 같이 동일하게 test 라는 값을 리턴 시켰습니다. 


c = [test]

d = [test]


하지만 "==" 와 "equals()" 를 이용하여 비교 하였을때 결과는 어떨까요? 

if(c == d){
System.out.println("c == d");
}else {
System.out.println("c != d");
}

if(c.equals(d)){
System.out.println("c.equals(d)");
}else {
System.out.println("!c.equals(d)");
}

c != d

c.equals(d)


if(c == d) 라는 조건식의 결과가 c != d 라고 나왔습니다. 

왜 다르다는 걸까요? 

가지고 있는 value 값은 "test"로 동일하게 보이지만 c 와 d 의 경우 서로 다른 메모리 값을 가지고 있으며 이 메모리 주소값이 다르기 때문에 다른 값이라는 결과를 리턴 시켜 줍니다. 


즉, Reference Type 의 경우  c == d 라는 의미는 값이 같은가를 비교하는 수식이 아니라 c 와 d 의 주소가 같은지를 비교하는 수식입니다

반대로 primitive type 은 값의 비교를 하는 것이 맞습니다. 


if(c == "test"){
System.out.println("c == \"test\"");
}else {
System.out.println("c != \"test\"");
}

이제 위의 결과 값이 어떻게 될지는 충분히 유추 가능하시겠죠? 


c != "test"

네 위와 같이 다른 값이라는 결과 값을 리턴 합니다. ^^




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

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

감사합니다 :D

블로그 이미지

쉬운코딩이최고

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

,

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




일전에 카카오 페이지 캐시 획득을 위해 광고 참여를 하고자 할 때 광고 이벤트 참여 불가한 케이스에 대해 정리를 했었습니다. 

참고http://jamesdreaming.tistory.com/67


기본 사용 방법은...

1. 설정

2. Google (Google 설정)

3. 광고

4. 광고 맞춤설정 선택 해제 (우측 방향 초록색이 하일라이트 된 상태 --> 좌측 방향 회색으로 비활성화)


위와 같은 방법으로 진행 할 수 있습니다. 


하지만 구버전 휴대폰들에서는 위와 같은 방법과 조금 다르게 진행 해야 할 것 같습니다. 

구체적으로 언급하자면 삼성폰의 경우 갤럭시S3, S4 를 포함하여 이전 버전 단말들이 해당이 될것 같습니다. 

그 외 타 제조사의 경우는 보유 단말이 없어서... ㅠㅠ 확인이 되면 추가로 단말 정보 올리겠습니다. 






위 이미지와 같이 설정 화면으로 진입 시 Google (Google 설정) 을 통해 진입을 해야 하는데요. 



위에 언급한 갤럭시 S4 이전 버전의 경우 아래 이미지를 보시는 것과 같이 Google (Google 설정) 이 없습니다. 



예전에는 Google 설정이 설정과 별도로 제공되었습니다. 



Google 설정 아이콘이 보이시죠? 저녀석을 클릭 하시면 아래와 같은 메뉴가 노출 됩니다. 



광고를 클릭 하시면 아래와 같이

"광고 맞춤설정 선택 해제" 라는 항목이 활성화 되어 있는 것을 보실 수 있습니다.



아래와 같이 비활성화 시켜 주시면 모든 준비가 끝납니다. 




이제 카카오 페이지로 돌아 가서 광고 이벤트 참여 하시고 캐시를 획득 하시면 됩니다. 



안드로이드 OS  별로 다른 것인지 아니면 제조사별 커스터마이징이 그렇게 된것인지는 제대로 확인 못했지만 삼성 단말들을 기준으로 봤을때는 갤럭시 S4 를 폰함하여 이전버전 단말들은 위와 같은 방법으로 해결이 가능 할 것으로 보입니다. 

타사 단말등 기타 확인 되는 단말 정보가 있으면 추가로 작성 하도록 하겠습니다. 



2017.11.27 기준 

삼성 단말 >>> 갤럭시 S4, 갤럭시 S3 를 포함한 이전 버전



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

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

감사합니다 :D


블로그 이미지

쉬운코딩이최고

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

,



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


이번 포스팅은 자바 String 관련 함수 중 영문자를 전부 대문자로 또는 소문자로 변경 하는 함수와 인자값으로 입력된 문자열의 앞뒤 공백을 제거 하는 함수에 대해 정리해 보겠습니다. 



■ String toUpperCase()

대상 문자열을 모두 대문자로 변환합니다. 

String str1 = "hello java";

System.out.println(str1.toUpperCase());

hello java 라는 문자열이 모두 소문자로 되어 있습니다. 

이를 toUpperCase() 함수를 이용하여 대문자로 변환 하겠습니다. 


실제 코드는 아래와 같습니다. 

"hello java".toUpperCase();


모든 문자열을 대문자로 변환하기 때문에 결과는 아래와 같습니다. 

HELLO JAVA



■ String toLowerCase()

대상 문자열을 모두 소문자로 변환합니다. 

String str2 = "UPPER CASE TO LOWER CASE";

System.out.println(str2.toLowerCase());

"UPPER CASE TO LOWER CASE" 라는 문자열을 소문자로 변환합니다. 


"UPPER CASE TO LOWER CASE".toLowerCase();

위와 같은 코드로 작성 되었다고 생각 하시면 됩니다. 


결과는 예상 하시는 데로 upper case to lower case 로 리턴 됩니다. 




이번에는 문자열에 대소문자가 모두 들어 있는 예를 보겠습니다. 

String str3 = "James Dreaming";

변수 str3 의 값이 대소문자 섞여 있습니다. 


이를 toUpperCase() 또는 toLowerCase() 해보겠습니다. 

System.out.println(str3.toLowerCase());

toLowerCase() 를 하여 모든 대문자를 소문자로 변환 합니다. 

결과는 james dreaming 으로 리턴 됩니다. 


System.out.println(str3.toUpperCase());

이번에는 toUpperCase() 를 했습니다. 모든 소문자를 대문자로 변환 합니다. 

결과는 JAMES DREAMING  으로 리턴 됩니다. 



■ String trim()

대상 문자열의 앞 / 뒤 공백문자를 모두 제거하여 리턴해줍니다. 

String str4 = "   공백 제거   ";

System.out.println("["+str4+"]");

str4 변수를 위와 같이 출력 하면 아래와 같은 결과 값이 나옵니다. 

앞뒤로 " [ " 와 " ] " 를 붙인 이유는 결과 값 앞뒤로 공문 문자가 있을을 확인하기 위함입니다.

[   공백 제거   ]


System.out.println("["+str4.trim()+"]");

위와 같이 str4.trim() 을 하고 결과 값을 확인하면 아래과 같습니다. 

[공백 제거]


앞뒤 공백이 제거 되었습니다. 여기서 유의 할 점은 문자열 중간에 있는 공백 문자는 제거 되지 않았습니다. 


trim() 함수도 정말 많이 사용하게 되는 함수 입니다. 잘 기억해 두시고 유용하게 사용하시길 바랍니다. 



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

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

감사합니다 :D



블로그 이미지

쉬운코딩이최고

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

,



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


이번 포스팅도 역시 자바의 String 관련 함수를 정리 하고자 합니다. 


이번에는 대상 문자열이 특정 문자 또는 문자열로 시작 하거나 끝나는지에 대해 체크 할 수 있는 함수를 알아 보겠습니다. 


■ boolean startsWith(String prefix)


비교 대상 문자열이 입력된 문자열 (prefix) 값으로 시작되는지 여부를 확인하고 boolean (true / false) 값으로 리턴 합니다. 

String str1 = "자바 코딩";

System.out.println(str1.startsWith("자바"));

위 예제는 "자바 코딩" 이라는 문자열이 "자바" 로 시작되는지를 체크 해보는 코드 입니다. 


비교대상문자열.startsWith("체크할문자열")

>>> str1.startsWith("자바")


위 코드를 다시 쓰면 아래와 같습니다. 

"자바 코딩".startsWith("자바");


str1 이라는 문자열이 "자바" 라는 문자열로 시작하고 있습니다. 

결과는 true 입니다. 



다른 예제 하나 더 보시겠습니다. 

String str2 = "자바코딩";

System.out.println(str2.startsWith("자바 "));

이번에 비교대상문자열이 "자바코딩" 으로 첫번째 예제와 다르게 공백문자가 빠졌습니다.

그리고 체크할문자열(prefix) 는 "자바 " 로 자바뒤에 공백 문자가 한칸 들어 갔습니다. 


위 코드는 아래와 같이 쓸수 있습니다. 

"자바코딩".startsWith("자바 ");


결과는 당연히 false 입니다. 


만약 비교대상문자열이 "자바 코딩" 이었다면 true 가 리턴 되었겠죠? ^^



■ boolean endsWith(String suffix);

String str3 = "자바 코딩";

System.out.println(str3.endsWith("코딩"));

"자바 코딩" 이라는 문자열이 "코딩" 이라는 문자열로 끝나는지를 확인 합니다. 


위코드를 다시 쓰면 아래와 같습니다. 

"자바 코딩".endsWith("코딩");


눈으로 봐도 비교대상문자열이 "코딩"으로 끝나고 있음을 알 수 있습니다. 

결과는 true 가 되겠죠. 



또 다른 예제 하나 더 보시겠습니다. 

String str4 = "자바 코딩 ";

System.out.println(str4.endsWith("코딩"));

이번에는 비교대상 문자열 끝에 공백문자가 하나 들어 갔습니다. 

그리고 suffix 는 바로 앞과 동일하게 "코딩" 으로 입력을 했습니다. 


"자바 코딩 ".endsWith("코딩");


위 코드는 당연히 false 가 리턴 되겠죠? ^^




예를 들기 위해 간단한 문자열을 이용했는데요. 어떤 값이 들어 올지 모르는 상황에서 위 두가지 함수를 사용한다면 좀더 편하게 코드를 깔끔하게 정리 할 수 있습니다. 



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

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

감사합니다 :D



블로그 이미지

쉬운코딩이최고

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

,



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


이번에는 자바 String 관련 함수 중 특정 문자열을 원하는 문자열로 치환하는 함수에 대해 알아 보겠습니다. 


■ String replace(CharSequence target, CharSequence replacement)


replace() 함수의 첫번째 인자값은 변환하고자 하는 대상이 되는 문자열입니다. 두번째 인자 값은 변환할 문자 값입니다. 


예제를 보시겠습니다. 

String str1 = "aaaa";

System.out.println("result ===> "+str1.replace("aa", "b"));

앞에서 부터 순차적으로 "aa" 라는 문자값이 있을 경우 "b" 로 치환하기 때문에 결과 값은 아래와 같습니다. 

result ===> bb


다른 예제도 하나더 보겠습니다. 

String str2 = "자바 코딩";

System.out.println("result ===> "+str2.replace("바 코", "good"));

치환하고자 하는 문자열이 "바 코"로 공백문자를 포함한 문자 열입니다. 

이를 "good" 으로 치환하면 결과는 아래와 같습니다. 

result ===> 자good딩



■ String replaceAll(String regex, String replacement)


replace() 함수와 같이 첫번째 인자값은 변환하고자 하는 대상이 되는 문자열이며, 두번째 인자 값은 변환할 문자 값입니다. 


예제를 보시겠습니다. 

String str1 = "aaaa";

System.out.println("result ===> "+str1.replaceAll("aa", "b"));

replace() 의 첫번째 예제와 동일한 문자열을 이용하여 "aa" 라는 문자값을 "b" 로 변환 했습니다. 

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

result ===> bb


두번째 예제도 replace() 의 두번째 문자열과 동일하게 사용해 보겠습니다. 

String str2 = "자바 코딩";

System.out.println("result ===> "+str2.replaceAll("바 코", "good"));

replace 를 replaceAll 로 바꾸기만 했습니다. 

결과는 아래와 같습니다. 

result ===> 자good딩



지금까지 예제들을 보시면 replace() 와 replaceAll() 함수의 차이점이 없어 보입니다. 

정말 차이가 없을까요? 차이점이 없는 동일한 동작을 하는 함수인데 이런 API를 제공할리 없겠죠? 

그럼 지금부터 이 두 함수가 뭐가 다른지 알아 보겠습니다. 


■ replace() vs replaceAll()


두 함수의 가장 큰 차이점은 입력 인자 값의 형이 하나는 CharSequence 이고 다른 하나는 String 이라는 겁니다. 여기서 String 이라는 것은 regular expression 즉, 정규표현식이라고 부르는 형식의 인자값을 사용할 수 있다는 겁니다. 


그럼 예제를 하나 보겠습니다. 

String str3 = "abcdefghijk";

System.out.println("result ===> "+str3.replaceAll("[abchij]", "굿"));

replaceAll 의 첫번째 인자 값으로 입력한 [abchij] 라는 값은 정규표현식 값으로 의미하는 바는 a, b, c, h, i, j 라는 값을 모두 의미 합니다. 

즉, 상기 값들 모두 "굿" 이라는 문자열로 변환하겠다는 의미 입니다. 


결과 값은 어떻게 나올까요? 

result ===> 굿굿굿defg굿굿굿k


비슷한 예제 하나 더 보시겠습니다. 

String str3 = "abcdefghijk";

System.out.println("result ===> "+str3.replaceAll("[^abchij]", "굿"));

동일 문자 열을 대상으로 replaceAll 을 하는데 이번에는 정규표현식에 " ^ " 라는 값이 들어 갔습니다. 

이는 a, b, c, h, i, j 를 제외한 모든 문자를 굿으로 변환 하겠다는 의미 입니다. 


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

result ===> abc굿굿굿굿hij굿



replace 를 사용하여 위 replaceAll 한 결과 값을 가져 오기 위해서는 어떻게 해야 할까요? 

String str3 = "abcdefghijk";

System.out.println("result ===> "+
str3.replace("a", "굿")
.replace("b", "굿")
.replace("c", "굿")
.replace("h", "굿")
.replace("i", "굿")
.replace("j", "굿")
);

위와 같이 치환을 원하는 각각의 문자열을 모두 찾거나 연속적인 입력 값이라면 아래와 같이 하면 됩니다. 

String str3 = "abcdefghijk";

System.out.println("result ===> "+
str3.replace("abc", "굿굿굿")
.replace("hij", "굿굿굿")
);

이렇게 하면 첫번째 예제와 동일한 결과 값을 가져 올수 있습니다. 

result ===> 굿굿굿defg굿굿굿k


하지만 뭔가 많이 불편해 보이죠? 

더군다나 실제 대상 문자열이 어떤 형태 인지 모를 경우 replace() 함수만을 이용하여 작업 하기에는 무리가 있어 보입니다. 

그래서 불특정 입력값을 변환하고자 할 경우 replaceAll() 함수에 Regular Expression (정규표현식)을 이용하여 개발을 많이 하고 있습니다. 

물론 replace() 함수도 많이 사용하고 있지만 사용 처가 약간 다르니 이정도는 이해 하고 넘어 가는게 좋을 것 같습니다. 



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

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

감사합니다 :D

블로그 이미지

쉬운코딩이최고

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

,



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


이번에는 compareTo() 함수와 compareToIngnoreCase() 함수에 대해 정리해 보겠습니다. 



■ int compareTo(String str)

인자값으로 비교 대상 String 값을 입력 받습니다.

리턴되는 응답값은 비교 값이 동일할 경우 0 으로, 다를 경우 음의 정수 또는 양의 정수 값으로 표현됩니다. 정수값으로 표현된다는 말이 어려우시죠? 예문으로 확인 해보겠습니다. 

String str = "abc";

System.out.println("result 1 ==> "+str.compareTo("abc"));
System.out.println("result 2 ==> "+str.compareTo("bc"));
System.out.println("result 3 ==> "+str.compareTo("c"));
System.out.println("result 4 ==> "+str.compareTo("abcabc"));
System.out.println("result 5 ==> "+str.compareTo("abcabcd"));


위와 같이 "abc" 라는 String 값을 여러 문자열과 비교 해봤습니다. 

결과는 아래와 같습니다. 


result 1 ==> 0

result 2 ==> -1

result 3 ==> -2

result 4 ==> -3

result 5 ==> -4


1번의 경우 동일한 String 값이니 당연히 0 이라는 값을 리턴 합니다. 

2번의 경우 "bc" 만 같고 "a" 가 빠져 한자 차이로 다른 값이 되었습니다. 그래서 -1 값이 리턴 됩니다. 한자리 차이라는 의미죠.

3번의 경우 "c" 만 같고 "ab" 가 빠져 두자 차이로 다른 값이 되었습니다. -2 값이 리턴 되었구요, 역시 두자 차이라는 의미입니다. 

4번의 경우 "abc" 가 두번 반복 되었지만 문자열 비교로 봤을때는 전혀 다른 문자열입니다. 비교대상 문자열보다 "abc" 라는 문자열만큼 3자리가 길어서 -3 이라는 값이 리턴 되었습니다. 


String str = "abc";

System.out.println("result 6 ==> "+str.compareTo("ABC"));

이번에는 소문자 "abc"를 대문자 "ABC"와 비교해봤습니다. 

결과는 아래와 같습니다. 


result 6 ==> 32


앞선 예제와 달리 32 라는 결과 값이 나왔습니다. 

왜 이런 값이 나왔을까요? 


이 결과 값을 이해 하려면 ASCII 코드에 대해 알아야 하는데요. 이 ASCII 코드는 문자를 컴퓨터가 이해 할 수 있는 숫자 형태로 변환한 코드 값이라고 이해 하시면 됩니다. (자세한건 차후에 다루도록 하겠습니다)


이 ASCII 코드 상에서 "a" 와 "A" 의 값을 확인해 보겠습니다. 



붉은 색으로 칠해진 부분의 Decimal 값을 참조 하시면 됩니다. 

"A" 값은 65, "a" 값은 97 입니다. 이 차이가 32 인데요. 

비교 대상인 대문자 "ABC" 가 "abc" 보다 32 만큼 크기 때문에 양의 정수 값으로 리턴 되었습니다. 


그렇다면 반대로 비교 대상값이 소문자 "acb" 라면 어떤 결과 값이 나올까요? 

String str = "ABC";

System.out.println("result 7 ==> "+str.compareTo("abc"));

result 7 ==> -32


결과는 보시는 바와 같이 -32, 즉, 음의 정수 값으로 나오게 됩니다. 




■ int compareToIgnoreCase(String str)

앞서 설명드린 compareTo() 함수와 거의 모든 것이 같습니다. 단, 함수 명에서도 알수 있듯이 Ignore Case!!! 즉, 대소문자를 무시한다는 의미 입니다. 그럼 예제로 확인해보겠습니다. 


String str = "ABC";

System.out.println("result 8 ==> "+str.compareToIgnoreCase("abc"));
System.out.println("result 9 ==> "+str.compareToIgnoreCase("aBc"));

result 8 ==> 0

result 9 ==> 0


결과 값은 대소문자 무시하고 결과 값을 가져 옵니다. 



둘다 상당히 유용한 Java String 관련 함수 들입니다. 

잘 사용하면 개발에 참 유용하게 사용할 수 있습니다. 




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

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

감사합니다 :D


블로그 이미지

쉬운코딩이최고

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

,



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


이번에는 Java 에서 많이 사용하는 String 관련 함수를 알아 보겠습니다. 


앞서 substring 이라는 함수에 대해 정리 했었는데요. 이녀석과 함께 많이 사용하고 있는 함수들을 정리 하면 아래와 같습니다. 


charAt(), indexOf(), length()


■ charAt(int index)

입력 받은 index 번째 문자를 반환 합니다. 

Java 에서 index 값은 항상 0 에서 부터 시작 합니다. 


String str1 = "abcde";

System.out.println(str1.charAt(2));

str1 을 charAt(2) 한 결과 값은 아래와 같습니다. 


문자열

a

b

c

d

e

index

0

1

2

3

4


index 값이 2 인 문자가 c 입니다. 

즉, 결과값은 "c" 가 리턴 됩니다. 



■ indexOf(String keyword)

문자열 중 입력받은 문자가 있으면 해당 문자의 위치 (index) 값을 리턴하고 문자가 없으면 -1 을 리턴 합니다. 

문자열 조회는 index 값 0 부터 시작 합니다 (왼쪽 부터 읽기 시작함을 의미 합니다)


String str2 = "Definition of indexOf";

System.out.println(str2.indexOf("i"));


위와 같은 경우 결과 값은 아래와 같습니다. 


문자열

D

e

f

i

n

i

t

i

o

n

o

f

i

n

d

e

x

O

f

index

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20


첫 "i" 값이 있는 index 값 3 이 리턴 됩니다. 



만약 아래와 같이 "of" 라는 문자열과 "off" 라는 문자열을 찾을 경우 결과 값은 어떻게 나올까요? 


String str3 = "Definition of indexOf";

System.out.println(str3.indexOf("of"));
System.out.println(str3.indexOf("off"));

"of" 라는 문자열을 찾는 경우 index 값이 11 로 리턴됩니다. 

하지만 "off "라는 문자열은 전체 문장중에서 찾을 수 없는 문자 열이므로 -1 이 리턴 됩니다. 



■ lastIndexOf(String keyword)

indexOf 는 왼쪽에서 부터 조회를 하기 때문에 낮은 index 값을 먼저 조회 하게 됩니다. 

이와 반대로 끝에서 부터 조회를 하는 함수도 제공되고 있습니다. 

이것이 바로 lastIndexOf 함수 입니다. 


String str4 = "Definition of indexOf";

System.out.println(str4.lastIndexOf("i"));

이 경우 뒤에서 부터 " i " 값을 찾기 때문에 아래와 같이 index 값이 14 로 리턴됩니다.


문자열

D

e

f

i

n

i

t

i

o

n

o

f

i

n

d

e

x

O

f

index

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20




■ length()

주어진 문자열의 길이를 리턴 합니다. 

주의 할 것은 index 값을 리턴 하는게 아니라 실제 문장의 길이를 조회 리턴 한다는 겁니다. 


String str5 = "a";

System.out.println(str5.length());

위 문자의 경우 a 의 index 값은 0 이지만 실제 문자 길이는 1 입니다. (결과 값도 1로 리턴 됩니다)


indexOf 설명을 위해 이용한 문자열 "Definition of indexOf" 의 경우 마직막 indexOf 의 "f"의 index 값은 20 이지만 index 는 0 에서 시작하므로 +1 을 해야 실제 문자열의 길이가 나옵니다. 


하지만 우리는 이 길이를 굳이 계산할 필요가 없죠. 

위와 같이 바로 str5.length() 를 해버리면 결과 값이 1로 리턴 됩니다. 



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

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

감사합니다 :D



블로그 이미지

쉬운코딩이최고

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

,