본문 바로가기
IT/JAVA

[Java] java.lang - String

by 행복한 용용이 2020. 8. 19.
반응형

[Java.lang]

String constructor

 

deprecated : 나중에 사라질지도 모르니 쓰지 않는 것을 추천

 

 

package com.kitri.lang;

import java.io.UnsupportedEncodingException;

public class StringTest2{

       public static void main(String[] args) throws UnsupportedEncodingException {

              //null은 String이 heap에 아예안올라온 상태

              //String str = null; //System.out.println("문자열 길이 : "+str.length());//오류 : 주소가없는데 어떻게 할 것이냐

              //null은 주소가 없어서 참조할 수가 없다.

 

              //String()

              //이건 String은 있는데 빈값인것

              String str1 = new String();

              System.out.println("문자열 길이 : "+str1.length());

 

              //String(byte[] bytes)

              //byte b[] = {97,98,99,100}; // 아스키코드 값 abcd

              byte b[] = {-66,-56,-77,-25,-57,-49,-68,-68,-65,-28,46}// 아스키코드 값 안녕하세요.

              String str2 = new String(b);//String 값으로 바꾸면 아스키코드 값 출력됨.

              //String str2 = new String(b,"euc-kr"); // 같음. default 값이 euc-kr.

              System.out.println("str2 == " + str2);

 

              //String(byte[] bytes, Charset carset)

              //euc-kr : 일반적 한글은 완성형 한글로 나옴. 2byte 로 처리

              //utf-8은 전세계모든 글자를 처리 가능. 대신 3byte로 처리. 글자를 그린다.

              //한글 깨질 때 꼭 기억하기!

 

              byte b2[] = {-20,-107,-120,-21,-123,-107,-19,-107,-104,-20,-124,-72,-20,-102,-108,46};

              // 아스키코드 값 안녕하세요.

              String str3 = new String(b2,"utf-8");  //String 값으로 바꾸면 아스키코드 값 출력됨.

              System.out.println("str3 == " + str3);

 

              //String(byte[] bytes, int offset, int length)

              byte b3[] = {97,98,99,100,101,102,103,104};

              String str4 = new String(b3,2,4)//offset : 시작점. length : 길이

              System.out.println("str4 == " + str4);

 

              //한글, 중국어, 일본어 등은 2byte를 차지하고 깨지기 때문에 byte보다 char로 하는 것이 좋음

              //String(char[] value)

              char c[] = {'안','녕','c','d','e','f'};

              String str5 = new String(c);

              System.out.println("str5 ==" + str5);

 

              //String(char[] value, int offset, int count)

              String str6 = new String(c,2,4);

              System.out.println("str6 ==" + str6);

              }

}


String method

- charAt(int index) : index번호 순서의 문자를 가져와라.

- concat(String str) : 문자열더함. 잘 안씀

- startWith(String prefix) ~로 시작한다. (대소문자 가림,문자열 가능)

endsWith(String prefix)

- toUpperCase, toLowerCase

- equalsIgnoreCase(String anotherString)

 

 

       package com.kitri.lang;

       public class StringTest3 {

              //String method

              public static void main(String[] args) {

                     //charAt(int index) : index번호 순서의 문자를 가져와라.

                     String str = "hello java !!!";

                     char c = str.charAt(4);

                     System.out.println("c == "+ c);

 

                     //'0'이 아스키코드값 48

                     str = "123";

                     int x = str.charAt(0) - 48;    //'1'의 아스키코드값 49 - 48 = 1

                     System.out.println("x === " + x);    //1

 

                     str = "1a1";

                     int len = str.length();

                     System.out.println("length ==" + len);

                     String result = "숫자입니다.";

                     for(int i=0; i<len; i++) {

                            int y = str.charAt(i)-48;

                            if (y>9 || y<0) {

                                  result = "숫자가 아닙니다.";

                                   break;

                            }

                     }

                     System.out.println(str+"은 "+result);

 

                     //concat(String str)

                     String str1 = "hello ";

                     String str2 = "java";

                     System.out.println(str1+str2);

                     System.out.println(str1.concat(str2));    //문자열 더함. 잘 쓰지X

 

                     //startWith(String prefix) ~로 시작한다. (대소문자 가림,문자열 가능)

                     //endsWith(String prefix) ~로 끝난다.

                     str = "hello java !!!";

                     if(str.startsWith("h"))

                            System.out.println(str+"은 h로 시작한다.");

                     if(str.endsWith("!!"))

                            System.out.println(str+"은 !!로 끝난다.");

 

                     //toUpperCase, toLowerCase

                     String s1 = "java";

                     String s2 = "JavA";

                     System.out.println("s1.toUpperCase()==" + s1.toUpperCase());

                     System.out.println("s2.toLowerCase()==" + s2.toLowerCase());

                     if(s1.equals(s2))

                            System.out.println(s1+"과 "+s2+"는 같은 문자열이다.");

                     else

                            System.out.println(s1+"과 "+s2+"는 다른 문자열이다.");

                     //equalsIgnoreCase(String anotherString)

                     if (s1.toUpperCase().equals(s2.toUpperCase()))

                            System.out.println(s1+"과 "+s2+"는 대소문자 구분없이 같은 문자열이다.");

                     else

                            System.out.println(s1+"과 "+s2+"는 대소문자 구분없이 다른 문자열이다.");

                     if (s1.equalsIgnoreCase(s2))

                            System.out.println(s1+"과 "+s2+"는 대소문자 구분없이 같은 문자열이다.");

                     else

                            System.out.println(s1+"과 "+s2+"는 대소문자 구분없이 다른 문자열이다.");

                     }

              }


- getBytes() : 문자열을 byte로 쪼갬

 

       package com.kitri.lang;

       import java.io.UnsupportedEncodingException;

       public class StringTest4 {

              public static void main(String[] args) throws UnsupportedEncodingException{

                     //getBytes() : 문자열을 byte로 쪼갬

                     String str = "abcdef";

                     byte b[] = str.getBytes();

                     int len = b.length;

                     for (int i=0; i<len; i++)

                            System.out.println("b["+i+"] == "+b[i]);

 

 

                     String str2 = "안녕하세요.";

                     // byte b2[] = str2.getBytes();

                     byte b2[] = str2.getBytes("utf-8");

                     int len2 = b2.length;

                     for (int i = 0; i < len2; i++) {

                            System.out.println("b2[" + i + "] == " + b2[i]);

                     }             

 

                     char c[] = str2.toCharArray();

                     len = c.length;

                     for (int i = 0; i < len; i++) {

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

                     }

              }

       }


- indexOf

- lastIndexOf

- isEmpty

- replace

- split

- substring

- toString

- parseInt

 

       package com.kitri.lang;

       public class StringTest5 {

              public static void main(String[] args) {

 

                     //indexOf

                     String str = "hello java !!!";

                     int x = str.indexOf('a');

                     System.out.println(str+"에서 a는 "+(x+1)+"번째 있다.");

                     x = str.indexOf('a',7);

                     System.out.println(str+"에서 8번째 부터 a는 "+(x+1)+"번째 있다." );

                     x = str.indexOf("java");

                     System.out.println(str+"에서 java는 "+(x+1)+"번째 있다." );

 

                     //lastIndexOf

                     x = str.lastIndexOf('a');

                     System.out.println(str+"에서 끝에서 부터 a는 "+(x+1)+"번째 있다." );

 

                     //isEmpty

                     String str2 = "";

                     System.out.println(str2+"의 길이 : "+str2.length());

                     if(str2.isEmpty())

                           System.out.println("빈 문자열이다.");

                     else //중간에 있는 공백은 못지움.

                           System.out.println("str == "+str2);

                     String str3 = "   hello                       ";

                     System.out.println(str3+"의 길이 : "+str3.length());

                     System.out.println(str3+"의 공백 제거 후 길이 : "+str3.trim().length());

 

                     //replace

                     //1.4미만 버번에는 문자열 바꿀 수 없다.

                     String str4 = "jaba";

                     System.out.println(str4+"::::"+str4.replace('b','v'));

                     System.out.println(str4+"::::"+str4.replace("jaba","java"));

                     System.out.println(str4+"::::"+str4.replaceAll("jaba","java"));

 

                     //split

                     String str5 = "hello java!!!";

                     String s[] = str5.split(" ");

                     int len = s.length;

                     for (int i = 0;i<len;i++) {

                          System.out.println("s["+i+"] == " + s[i]);

                     }

 

                     //substring

                     //오라클은 1부터 시작, 자바는 0부터 시작

                     System.out.println(str5.substring(6));

                     System.out.println(str5.substring(6,9)); //6부터 9전 까지

 

                     //숫자 >> 문자열

                     int num = 100;

                     String sn1 = num + "";

                     System.out.println(sn1+100);   //문자열로바꿨으니 200이 아닌 100100

                     String sn2 = String.valueOf(num);

                     System.out.println(sn2+100);

                     String sn3 = Integer.toString(num);

                     System.out.println(sn3+100);

 

                     //문자열 >> 숫자 : 1개 방법 뿐

                     String ns = "100";

                     num = Integer.parseInt(ns);

                     System.out.println(num+100);

             }

      }


예제)

 

       package com.kitri.lang;

       import java.io.UnsupportedEncodingException;

       public class ReverseTest {

              public static void main(String[] args) throws UnsupportedEncodingException {

 

                     //charAt String

                     str = "!!! avaJ olleH";

                     int len = str.length();

                     int en1=0;

                     for (int i= len-1;i>=0;i--) {

                          System.out.print(str.charAt(i));

                          if (str.charAt(i)=='e') {

                               en1=i;

                          }

                     }

                     System.out.println();

                     System.out.println("e는 "+(len-en1)+"번째 있습니다.");

 

                     //getbytes

                     byte b[] = str.getBytes();

                     len = b.length;

                     String bstr="";

                     for (int i = len-1; i >=0; i--) {

                          bstr+=(char)b[i];

                     }

                     System.out.println(bstr);

 

                     //tochararray

                     char c[] = str.toCharArray();

                     len = c.length;

                     int en2=0;

                     for(int i = len-1; i >= 0; i--) {

                          System.out.print(c[i]);

                          if (c[i]=='e') {

                               en2=i;

                           }

                     }

                     System.out.println();

                     System.out.println("e는 "+(len-en2)+"번째 있습니다.");

 

                     //substring

                     int en3=0;

                     for(int i = len; i >= 1; i--) {

                          String result = str.substring(i-1,i);

                          if (result.equals("e")) {

                                en3=i;

                           }

                          System.out.print(result);

                     }

                     System.out.println();

                     System.out.println("e는 "+(len-en3+1)+"번째 있습니다.");

 

 

 

                     //e는 2번째 잇습니다.

              }

      }

 

 

 

[출처] 빡쏘끼룩

반응형

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

[Java] java.lang - String Vs StringBuffer  (0) 2020.08.31
[Java] java.lang - StringBuffer  (0) 2020.08.28
[Java]Array 활용 - 야구게임  (0) 2020.08.12
[Java]배열 Array (RDT 배열)  (0) 2020.08.10
[Java]배열 Array (기본DT 배열)  (0) 2020.08.04