String 클래스

String 클래스의 메소드

import java.util.Scanner;

//가장 기본적인 문자열 메소드
public class StringTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		System.out.println("문자열을 입력");
		String input = sc.nextLine();//hello(공백 5칸)
		
		stringPrint(input);
		//정적메소드에서 정적메소드 호출(같은 클래스내이므로 클래스명 생략가능)
	}
	
	public static void stringPrint(String s) {
		System.out.println("s=>"+s);
		
		//1.concat()=> 문자열 결합
		System.out.println("s.concat(\"test\")=>"+s.concat("test"));//hello     test
		
		//2.substring(시작인덱스(필수입력),종료인덱스(바로 앞번호까지 인식)
		System.out.println("s.substring(1, 4)=>"+s.substring(1, 4));//ell
		System.out.println("s.substring(1, 4)=>"+s.substring(1));//ello
		
		//3.toUpperCase() : 대문자로 변환 <-> toLowerCase() : 소문자로 변환
		System.out.println("s.toUpperCase()=>"+ s.toUpperCase());//HELLO
		System.out.println("s.toLowerCase()=>"+ s.toLowerCase());//hello
		
		//4.replace(변경전단어, 변경후단어) => 특정 문자열 변경
		System.out.println("s.replace('l','t')=>"+s.replace('l','t'));//hetto
		
		//5.length() =>문자열의 길이(공백도 문자열에 포함시킴)
		//배열의 길이는 배열명.length으로 length()와는 다름
		System.out.println("s.length()=>"+s.length());//10
		
		//6.charAt(인덱스번호) => 특정 위치의 문자를 출력 
		System.out.println("s.charAt(2)=>"+s.charAt(2));// l
		
		//7.indexOf('찾는문자') => 특정 문자의 위치 출력
        //찾는 문자열을 못찾으면 인덱스번호 -1리턴
		System.out.println("s.indexOf('e')=>"+ s.indexOf('e'));//1
		
		//8.trim() => 공백제거
		System.out.println("s.trim().length() =>"+ s.trim().length());//5
	}

}

 

String 객체를 만드는 방법(주소값 비교)

1) String 문자열객체="저장할값"; ( 권장 )  
저장할 문자열이 전에 없다면 새로 공간을 만들어서 저장하고 
이미 저장할 문자열과 똑같은 객체가 있다면 주소를 공유하여 사용한다

 

2) String 문자열객체 = new String("저장할값");
무조건 새로운 공간을 만들면서 문자열을 저장한다, 내용이 같아도 새로운 공간을 만들어 주소가 다르게 된다

메모리가 낭비되는 방법으로 실제로는 사용하지 않는다

//문자열 객체를 만드는 방법 2가지
public class StringTest2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//1)
		String str1="abc";
		String str2="abc";
		
		//2)
		String str3 = new String("abc");
		String str4 = new String("abc");
		
		System.out.println("---방법의 차이점---");
		System.out.println("<1번 방법>");
		//== 주소비교, equals()는 문자열 비교
		if(str1==str2)
			System.out.println("str1과 str2는 주소가 같다");
		else 
			System.out.println("str1과 str2는 주소가 다르다");
		if(str1.equals(str2))
			System.out.println("str1과 str2는 내용이 같다");
		else 
			System.out.println("str1과 str2는 내용이 다르다");

		System.out.println("<2번 방법>");
		if(str3==str4)
			System.out.println("str3과 str4는 주소가 같다");
		else 
			System.out.println("str3과 str4는 주소가 다르다");
		
		if(str3.equals(str4))
			System.out.println("str3과 str4는 내용이 같다");
		else 
			System.out.println("str3과 str4는 내용이 다르다");
	}
}
/*
---방법의 차이점---
<1번 방법>
str1과 str2는 주소가 같다
str1과 str2는 내용이 같다
<2번 방법>
str3과 str4는 주소가 다르다
str3과 str4는 내용이 같다 */

 

 


Character 클래스

예) 사용자로부터 값을 입력받아 대문자면 소문자로, 소문자면 대문자로 변환하기

import java.util.Scanner;

public class ConvertTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		System.out.println("문자열을 입력?");
		String input=sc.nextLine();
		char ch;
		for(int i=0;i<input.length();i++) {
			ch=input.charAt(i);
			if(Character.isUpperCase(ch))//true
				System.out.print(Character.toLowerCase(ch));
			else
				System.out.print(Character.toUpperCase(ch));		
		}
	}
}
/*
문자열을 입력?
AdsDL
aDSdl
*/

 

예2) 값을 입력받아 대문자면 소문자로, 소문자면 대문자로 변환하기는데

e/E 입력하면 종료, 문자열에 숫자가 들어가면 종료하기

import java.util.Scanner;
public class ConvertTest2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		char ch;
		while(true) {
			String str="";
			System.out.println("문자열을 입력?");
			String input=sc.nextLine();
			if(input.equals("e") || input.equals("E")) {
				System.out.println("-종료-");
				System.exit(0);
			}

			for(int i=0;i<input.length();i++) {
				ch=input.charAt(i);
				if(Character.isDigit(ch)) {
					System.out.println("영문자만 입력가능합니다\n-종료-");
					System.exit(0);
				}
				if(Character.isUpperCase(ch))//true
					str+=Character.toLowerCase(ch);
				else
					str+=Character.toUpperCase(ch);		
			}
			System.out.println(str);
		}
	}
}
/*
문자열을 입력?
ADsfjE
adSFJe
문자열을 입력?
E1FG3
영문자만 입력가능합니다
-종료-
*/



wrapper 클래스

자바의 기본형에 해당하는 데이터를 객체로 만들어주는 클래스

ex) Charater 클래스, Integer 클래스


* API문서 참조

Deprecated -> 현재 사용하지 않고 다른 메소드로 대체되었다

(isSpace (x)-> isWhilespace(o))

 

+ Recent posts