String 클래스
바이트 배열로 변환시키는 메서드 ( getByte() ) - 매우 중요
getbyte 예제
package kr.or.kihd.string;
import java.io.IOException;
public class KeyBoardToString {
public static void main(String[] args) {
byte[] bytes = new byte[100];
//System.out.println(bytes[99]);
System.out.print("입력 : ");
int readByteNo = 0;
try {
//키보드(표준입력)으로부터 입력을 받고 그 내용을 bytes에 저장을하고
//입력받은 바이트수를 리턴
readByteNo = System.in.read(bytes);
String str = new String(bytes, 0, readByteNo-2, "utf-8");
System.out.println(str);
System.out.println("입력받은 바이트 수: " + readByteNo);
//문자열을 특정 문자셋으로 인코딩
byte[] b = str.getBytes("euc-kr");
System.out.println(b.length);
//바이트 배열로 인코딩
byte[] b2 = "안녕하세요".getBytes();
//바이트 배열을 문자열로 디코딩
String str1 = new String(b2, 0, b2.length, "UTF-8");
System.out.println(str1);
System.out.println(b2.length);
} catch (IOException e) {
e.printStackTrace();
}
}
}
바이트 배열로 변환시키는 메서드 ( getByte() ) - 매우 중요
package kr.or.kihd.string;
import java.util.Arrays;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("입력 : ");
String str = scan.nextLine();
System.out.println(str);
byte[] b1 = str.getBytes(); //byteArray로 리턴해준다
System.out.println(Arrays.toString(b1));
//toCharArray() : 문자열을 char형 배열로 바꾼다.
char[] ch = str.toCharArray(); //한글출력
System.out.println(ch.length);
for(int i = 0; i<ch.length; i++) {
System.out.print(ch[i]);
}
}
}
문자 추출( charAt(int index) ) 메서드
-매개 값으로 주어진 인덱스의 문자를 리턴한다.
특정문자 추출( ex)주민번호 남여 )
package kr.or.kihd.string2;
public class CharAtTest {
public static void main(String[] args) {
String str = "980203-2456781";
//특정문자를 받고자 할떄
char gender = str.charAt(7);
if(gender == '1' || gender == '3') {
System.out.println("남자입니다.");
}
else if(gender == '2' || gender == '4') {
System.out.println("여자입니다.");
}
else {
System.out.println("사람이 아닙니다.");
}
}
}
String의 equals() : 값 비교함.(Object클래스의 equals()와 다름 오버라이딩)
package kr.or.kihd.string2;
public class EqualsTest {
public static void main(String[] args) {
String str1 = new String("최지만");
String str2 = "최지만"; //리터럴타입으로 대입
String str3 = "최지만";
// == 연산자 : 주소비교
if(str1 == str2) {
System.out.println("같은 번지의 인스턴스");
}
else {
System.out.println("다른 번지의 인슨터스");
}
//같은 리터럴(값)의 경우 : 같은 번지를 참조함.
if(str2 == str3) {
System.out.println("같은 번지의 인스턴스");
}
else {
System.out.println("다른 번지의 인슨터스");
}
//String의 equals() : 값 비교함.(Object클래스의 equals()와 다름 오버라이딩)
if(str1.equals(str2)) {
System.out.println("같은 문자열입니다.");
}else {
System.out.println("다른 문자열입니다.");
}
if(str2.equals(str3)) {
System.out.println("같은 문자열입니다.");
}else {
System.out.println("다른 문자열입니다.");
}
}
}
바이트 배열로 변환시키는 메서드 ( getByte() ) - 인코딩 디코딩 예제
package kr.or.kihd.string2;
public class GetByteTest {
public static void main(String[] args) throws Exception {
String str = "안녕하세요";
//인코딩(기계가 알아보기 편하게 변환하는 과정)
byte[] byte1 = str.getBytes("UTF-8");//한글 3byte
System.out.println("bytes1(UTF-8)의 길이 : " + byte1.length);
byte[] byte2 = str.getBytes("euc-kr"); //한글 2byte
System.out.println("bytes2(euc-kr)의 길이 : " + byte2.length);
//디코딩(인간이 알아보기 편하게 변환하는 과정)
String str1 = new String(byte1, "UTF-8");
System.out.println("UTF-9로 디코딩한 문자열 : " +str1);
str1 = new String(byte2, "euc-kr");
System.out.println("euc-kr로 디코딩한 문자열 : " +str1);
}
}
특정 문자열 찾는 메서드 ( IndexOf() )
-매개값으로 들어가는 문자열의 시작되는 인덱스를 리턴한다.
-주어진 문자열이 존재하지 않으면, -1을 리턴한다
package kr.or.kihd.string2;
public class IndexIOfTest {
public static void main(String[] args) {
String str = "오늘은 자바 공부하기가 좋네요";
//IndexOf()메서드 : 찾기 기능을 할때 자주 쓰임
int index = str.indexOf("공부");
System.out.println("공부 시작 방 번호 : " + index);
if(str.indexOf("공부") != -1) {
System.out.println("공부와 관련된 내용이군요.");
}else {
System.out.println("공부와 관련없는 내용이군요.");
}
}
}
공부 시작 방 번호 : 7
공부와 관련된 내용이군요.
문자열의 길이를 구하는 메서드( length() )
length() 메서드 예제
package kr.or.kihd.string2;
public class LengthTest {
public static void main(String[] args) {
String phoneNum = "00104561234";
System.out.println("문자열의 길이 : " + phoneNum.length());
//length() : 문자열의 길이 리턴함.
int length = phoneNum.length();
if(length == 11) {
System.out.println("폰 번호 자리가 맞다.");
}
else {
System.out.println("다시 입력해 주세요.");
}
}
}
문자열의 길이 : 11
폰 번호 자리가 맞다.
문자열을 대치시키는 ( replace() )
-첫 번째, 매개 값인 문자열을 찾아서 두 번째, 매개 값인 문자열로 대치한 새로운
문자열을 리턴해준다.
replace() : 문자열을 대체하는 메서드 예제
package kr.or.kihd.string2;
public class ReplaceTest {
public static void main(String[] args) {
//replace() : 문자열을 대체하는 메서드이다.
String oldstr = "자바는 객체지향언어입니다.";
String newstr = oldstr.replace("자바", "JAVA");
System.out.println(newstr);
System.out.println(newstr.toString());
System.out.println(oldstr.hashCode());
System.out.println(newstr.hashCode());
}
}
JAVA는 객체지향언어입니다.
JAVA는 객체지향언어입니다.
-1316178731
-692849805
문자열을 잘라내는 ( (substring() )
substring() (int beginindex, int endindex)
주어진 시작과 끝 인덱스 사이의 문자열을 추출한다.,(단,마지막 인덱스는 미포함)
substring() (int beginindex)
주어진 인덱스 이후부터 끝까지 문자열 추출
subString() : 문자열을 잘라내어 String으로 변환 예제
package kr.or.kihd.string2;
public class SubStringTest {
public static void main(String[] args) {
String phoneNum = "05498884212";
//subString() : 문자열을 잘라내어 String으로 변환
String str1 = phoneNum.substring(3);
System.out.println(str1);
String str2 = phoneNum.substring(0, 3);
System.out.println(str2);
}
}
98884212
054
대문자로 문자열을 바꿔준다. .toUpperCase()
소문자로 문자열을 바꿔준다.
package kr.or.kihd.string3;
public class ToLowerUpperTest {
public static void main(String[] args) {
String str1 = "java Programing";
System.out.println("대문자 : " + str1.toUpperCase());
String str2 = "JAVA Programing";
System.out.println("소문자 : " + str2.toLowerCase());
System.out.println(str1.equals(str2));
//대소문자를 구별하지 않고 비교를 하고자 한다면,equalsIgnoreCase
//사용하면됨.
System.out.println(str1.equalsIgnoreCase(str2));
}
}
대문자 : JAVA PROGRAMING
소문자 : java programing
false
true
문자열의 공백을 제거 trim() : 좌우 공백만 제거함. 중간에 공백은 프로그래머가 직접
제거하는 코드를 작성해야함.
package kr.or.kihd.string3;
public class TrimTest {
public static void main(String[] args) {
String tel1 = " 02";
String tel2 = "-3306 ";
String tel3 = " -1037 ";
//trim() : 좌우 공백만 제거함. 중간에 공백은 프로그래머가 직접
//제거하는 코드를 작성해야함.
System.out.println(tel1.trim());
System.out.println(tel1.trim() + tel2.trim() + tel3.trim());
}
}
String.valueOf() 문자열로 변환
package kr.or.kihd.string3;
public class ValueOfTest {
public static void main(String[] args) {
String str1 = String.valueOf(true);
System.out.println(str1);
//valueOf()메서드는 GUI프로그래밍에서 등장
String str2 = String.valueOf(777.888);
System.out.println(str2);
}
}
true
777.888
.split() 문자열을 잘라준다, 나눠준다.
package kr.or.kihd.string3;
public class SplitTest {
public static void main(String[] args) {
String str1 = "사랑해,너를,파닭치킨,양념치킨";
String[] strArr = str1.split(",");
for(String str : strArr) {
System.out.println(str);
}
System.out.println();
String str2 = "사랑해,너를/파닭치킨&양념치킨,후라이드";
String[] strArr2 = str2.split(",|/|&");
for(String strr : strArr2) {
System.out.println(strr);
}
}
}
사랑해
너를
파닭치킨
양념치킨
사랑해
너를
파닭치킨
양념치킨
후라이드
리버스 구현 예제
StringBufferStringBuilder().reverse().toString()
메서드를 사용해서 리버스 구현
package kr.or.kihd.string3;
public class ReverseTest {
public static void main(String[] args) {
String str = "안녕하세요";
String reverse = "";
int count = 0;
count = str.length();
System.out.println("문자열의 길이 : " + count);
for(int i = 0; i<count; i++) {
reverse += str.charAt(count-(i+1));
// System.out.println(reverse);
// 매번 새로운 문자열을 생성하고 있음.
// System.out.println(reverse.hashCode());
}
System.out.println("역순 출력 : " + reverse);
System.out.println();
String rev = reverseString(str);
System.out.println("reverseString() 호출 후 : " + rev);
}
public static String reverseString(String str) {
return new StringBuilder(str).reverse().toString();
}
}
문자열의 길이 : 5
역순 출력 : 요세하녕안
메서드를 이용한 역순 출력 : 요세하녕안