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
    역순 출력 : 요세하녕안

    메서드를 이용한 역순 출력 : 요세하녕안


     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading