[Java.lang]
String constructor
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 |