세로형
Recent Posts
Recent Comments
Link
04-19 00:01
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

자바 String 클래스(substring, length, toUpperCase, toLowerCase, replace, indexOf 메소드) 본문

java

자바 String 클래스(substring, length, toUpperCase, toLowerCase, replace, indexOf 메소드)

이수진의 블로그 2017. 8. 18. 08:34

자바의 문자열은 java.lang 패키지의 String 클래스의 인스턴스로 관리된다. 소스상에서 문자열 리터럴은 String 객체로 자동 생성되지만 String 클래스의 다양한 생성자를 이용해서 직접 String 객체를 생성할 수도 있다.

String 클래스에는 여러개의 생성자가 존재하는데 대표적인 생성자는

String str = new String(byte[] byte);
-> 배열 전체를 String 객체로 생성

String str = new String(byte[] bytes, int offset, int length);
-> 배열의 offset 인덱스 위치부터 length만큼 String 객체로 생성

등의 10가지 정도의 생성자가 존재한다.

String 클래스는 문자열의 추출, 비교, 찾기, 변환 등의 다양한 메소드를 제공해준다. 그 중 대표적인 메소드는 다음과 같다.

리턴 타입
메소드명(매개 변수)
설명
char
charAt(int index)
특정 위치의 문자 리턴
boolean
equals(ObjectanObject)
두 문자열을 비교
byte[ ]
getBytes( )
byte[ ]로 리턴
byte[ ]
getBytes(Charset charset)
주어진 문자셋으로 인코딩한 byte[ ] 리턴
int
indexOf(String str)
문자열 내에서 주어진 문자열의 위치를 리턴
int
length( )
총 문자의 수를 리턴
String
replace(CharSequencetarget, CharSequence replacement)
target 부분을 replacement로 대치한 새로운 문자열을 리턴
String
substring(int beginIndex)
beginIndex 위치에서 끝까지 잘라낸 새로운 문자열을 리턴
String
substring(int beginIndex, int endIndex)
beginIndex 위치에서 endIndex 전까지 잘라낸 새로운 문자열을 리턴
String
toLowerCase( )
알파벳 소문자로 변환한 문자열 리턴
String
toUpperCase( )
알파벳 대문자로 변환한 문자열 리턴
String
trim( )
앞뒤 공백을 제거한 새로운 문자열을 리턴
String
valueOf(int i)
valueOf(double d)
기본 타입값을 문자열로 리턴


charAt( ) 메소드는 매개값으로 주어진 인덱스의 문자를 리턴한다.
String subject = "자바 공부";
char charValue = subject.charAt(3); -> '공' 값 반환.
자 = 0
바 = 1
(띄어쓰기) = 2
공 = 3
부 = 4
인덱스라서 '공'이 반환된다.

문자열 비교 equals( ) 메소드는 문자열을 비교해준다.
일반 기본 타입(int, double 등)을 비교할 경우엔 == 연산자를 사용하여 비교한다. 그러나 문자열을 비교할 때에는 == 을 사용하면 원치 않는 결과가 나올 수 있다.
예를 들어 다음과 같이 선언되었다고 하자.
String strVar1 = new String("이순신");
String strVar2 = "이순신";
String strVar3 = "이순신";

그럼 다음과 같이 참조하게 된다.

 

 



여기서 strVar1 == strVar2 을 하게 되면 false 가 나온다.
하지만 strVar2 == strVar3 을 하게 되면 true가 나오게 된다. 왜냐하면 안에 있는 문자열을 비교하는게 아니라 주소값(참조값)을 비교하기 때문이다. 
따라서 문자열을 비교하려면 equals( ) 메소드를 써야한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
class StringTest
{
    public static void main(String[] args)
    {
        String str = "테스트입니다.";
        String str1 = new String("테스트입니다.");
        
        if(str == str1)
        {
            System.out.println("같은 객체를 참조합니다.");
        }else{
            System.out.println("다른 객체를 참조합니다.");
        }
        
        
        if(str.equals(str1))
        {
            System.out.println("같은 문자열");
        } 
        else
        {
            System.out.println("다른 문자열");
        }
    }
}
 
Colored by Color Scripter

위 예제는 == 을 썼을 때와 equals 메소드를 썼을때를 보여준다.

문자열 찾기 indexOf() 메소드
이 메소드는 매개값으로 주어진 문자열이 시작되는 인덱스를 리턴한다. 만약 주어진 문자열이 포함되어 있지 않으면 -1 을 리턴한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
String subject = "자바 프로그래밍";
        
int location = subject.indexOf("프로그래밍");
System.out.println(location);
        
if(subject.indexOf("자바"!= -1)
{
    System.out.println("자바와 관련된 책!");
}
else
{
    System.out.println("자바와 관련없는 책");
}
Colored by Color Scripter

indexOf메소드 예제는 위와 같다.

문자열 길이 length( ) 메소드
length()메소드는 문자열의 길이 (문자의 수)를 리턴한다. 바로 예제를 보자.

1
2
3
4
String sn = "1234567890";
System.out.println(sn.length());
int len = sn.length();
 
Colored by Color Scripter

이런식으로 하면 길이가 출력 및 반환이 가능하다.

문자열 대치 replace() 메소드
replace()메소드는 첫 번째 매개값인 문자열을 찾아 두 번째 매개값인 문자여롤 대치한 새로운 문자열을 생성하고 리턴한다.
String 객체의 문자열은 변경이 불가한 특성을 갖기 때문에 replace() 메소드가 리턴하는 문자열은 원래 문자열이 아니라 완전 새로운 문자열이 새로 만들어 지는 것이다.

1
2
String strVal1 = "이순신";
String strVal2 = strVal1.replace("이순신""이순신1");

 

 

그림과 같이 완전히 다른 문자열이 생성된다.

문자열 잘라내기(substring( )) 메소드
substring()메소드는 주어진 인덱스에서 문자열을 추출한다. substring(int beginIndex, int endIndex)는 주어진 시작과 끝 인덱스 사이의 문자열을 추출하고
substring(int beginIndex)는 주어진 인덱스 이후부터 끝까지 문자열을 추출한다.

1
2
3
4
5
6
7
String ssn = "988981-1231236";
        
String firstNum = ssn.substring(06);
System.out.println(firstNum);
        
String secondNum = ssn.substring(7);
System.out.println(secondNum);

위 예제와 같이 사용하면 된다.

알파벳 대소문자 변경(toLowerCase(), toUpperCase())
toLowerCase()는 문자열을 모두 소문자로 바꾸고 새로운 문자열 리턴
toUpperCase()는 문자열을 모두 대문자로 바꾸고 새로운 문자열 리턴

아래 예제를 보자

1
2
3
4
String strVar = "leE";
String toLow = strVar.toLowerCase();
String toUp = strVar.toUpperCase();
System.out.println(strVar + ", "+toLow+", "+toUp);    }

 

 

와 같이 된다.

문자열과 관련된 다른 메소드와 클래스는 다음장에서 살펴본다.


반응형
그리드형
Comments