일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 자바 예제
- 자바 추상메서드
- 자바 Wrapper클래스
- Java객체배열
- database
- DBMS
- Java 내부 클래스
- 자바 스트링클래스
- dbeaver
- 자바 Random클래스
- 자바 String클래스
- java super( )
- 오라클
- Java try-catch
- Java업캐스팅
- oracle
- Java문자열 클래스
- Express
- 자바 try-catch
- nodejs
- Java thorw
- 자바 내부 클래스
- 코딩
- Java 추상 메서드
- 데이터베이스
- Java추상클래스
- 자바 문자열 클래스
- Java다운캐스팅
- db
- 자바 제어문
- Today
- Total
코딩이란 무엇일까
JAVA/자바[4일차](2)-String클래스,String클래스의 메소드 본문
안녕하세요 오늘은 String클래스에 대해 배워봤습니다.
String 클래스란?
String 클래스란 자바 안에 있는 java.lang안의 String 클래스의 객체를 의미합니다.
기본형 타입(primivite type)과 참조형 타입(refernece type)
자바서는 기본형 타입과 참조형 타입 두 종류의 타입이 존재합니다.
우리는 String클래스를 알기 전 기본형 타입과 참조형 타입을 간단하게 짚고 넘어가야 합니다.
기본형 타입(primivite type)
기본형 타입은 원시형 타입이라고도 불리며
기본형 타입은 실제 연산에 사용되는 boolean, byte, int, short, long, float, double, char과 같은 변수를 기본형 타입이 라라 부릅니다.
참조형 변수(refernece type)
참조형 변수는 위의 기본형 타입 8가지 를 제외한 나머지 타입을 말할 수 있습니다.
참조형 타입을 선언할 때는 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조형 변수의 타입이 됩니다.
참조형 변수는 값을 저장하는 게 아닌 값이 갖고 있는 주소를 값으로 갖습니다.
String str= new String ( );
추가적으로 참조형 타입은 기본형 타입과는 달리 위와 같이 new연산자를 통해 객체의 주소를 생성해야 합니다.
기본형 타입과 참조형 타입의 차이점
기본형 타입은 메모리 영역 중 하나인 stack에 실제 값을 저장하여 사용되고
참조형 타입은 마치 객체를 저장하는 것처럼 메모리 영역 중 하나인 Heap이라는 영역에 저장하고
해당 메모리 주소를 stack에 저장하는 방식을 사용합니다.
🔴stack ⇒ 기본형 타입 변수들과 그 값들이 함께 저장됩니다.
힙 영역에 저장되어 있는 참조형 타입 변수들의 주소가 저장됩니다.
🟢Heap ⇒ 참조형 타입의 변수들이 저장됩니다.
String클래스 선언 방법
String str="Hello";
String str=new String("Hello");
참조 타입은 new연산자를 통해 생성해야 된다 위에 적어놨지만
String클래스의 경우 new연산 없이 기본형 타입처럼 String 변수="값"과 같은 형태로도 객체를 생성할 수 있습니다.
String으로 선언한 변수들의 주소 값 비교해보기
public static void main(String[] args) {
//문자열 데이터 처리 테스트
String message="hello java";
String name="kim";
String name2="kim";
String name3="lee";
String name4=new String("kim"); //new연산으로 인해 새로운 문자열 객체를 생성합니다.
System.out.println("name == name2 같은가?"+(name==name2)); //true
System.out.println("name == name4 같은가?"+(name==name4)); //false
System.out.println("name2 == name4 같은가?"+(name2==name4)); //false
}
위에는 5가지 String객체를 생성했습니다.
자바는 문자열 리터럴이 동일하다면 동일한 String객체를 참조합니다.
즉, 문자열의 값이 동일하다면 같은 주소 값을 참조한다는 것이죠.
하지만 new연산자로 String객체를 생성할 시 문자열 리터럴이 동일하다 해도 다른 주소 값을 참조하게 됩니다.
추가적으로 변수의 값을 비교할 때에는( ==) 연산자를 사용하지만 문자열을 비교할 때는 (==) 연산자를 사용한다면
주소 값을 비교하기 때문에 문자열의 리터럴을 비교하는 것이 아닙니다.
출력 결과
위의 결과처럼 name2와 name4는 같은 리터럴 값을 갖고 있지만 flase가 나오는 것을 알 수 있습니다.
String클래스의 메서드
String은 클래스이기 때문에 문자열의 추출, 비교, 찾기, 분리, 변환 등과 같은 다양한 메서드를 가지고 있습니다.
이 글에 모두 정리는 할 수 없으니 자주 사용하는 메서드를 정리해 봤습니다.
메서드 | 예시 | 설명 | 반환타입 |
length( ) | str.length( ) | 문자열의 길이를 반환합니다. | int |
charAt() | str.charAt(n) | 문자열의 n번째에 어떤 문자열이 오는지 반환 | char |
equals( ) | str1.equals(str2) | equals( )는 문자열을 비교할 때 사용하는 메소드입니다. | boolean |
indexOf( ) | str.indexof(’a’) | 문자가 위치한 인덱스를 반환하는 메소드 입니다. | int |
lastIndexOf( ) | str.lastIndexOf(’a’) | indexOf()와 비슷하지만 뒤에서부터 조회해서 인데스를 반환한다.. | int |
substring( ) | str.substring(n,m) | 문자열을 추출하는 메서드 n번부터 m번 인덱스까지 추출 할 수 있습니다. | string |
replace( ) | str.replace( “H”,”A”) | 문자열의 일부를 원하는 문자열로 바꿀 수 있습니다. | String |
startWidth( ) | str.startWidth(”자바”) | 비교 대상 문자열이 입력된 문자열 값으로 시작 되는지 여부를 확인합니다. | boolean |
endsWidth | str.endsWidth(”자바”) | 비교 대상 문자열이 입력된 문자열 값으로 끝나는지 여부를 확인합니다. | boolean |
length( )
문자열의 길이를 반환할 때 사용합니다.
public static void main(String[] args) {
String str="12345";
System.out.println(str.length());// 결과5
}
charAt( )
문자열의 n번째에 어떤 문자열이 오는지를 반환합니다.
public static void main(String[] args) {
String str="일이삼사오";
System.out.println(str.charAt(3));
//결과: 사
}
문자열을 인덱스 번호 기준으로 반환하기에 0부터 시작합니다.
따라서 “일이삼사오” 중 “일”이 0번째 인덱스 번호인 것입니다.
equals( )
문자열을 비교할 때 사용합니다.
위에 문자열을 비교할 때 설명하였지만 String객체를 ==연산자로 비교한다면 주소 값을 비교하는 것 이기 때문에 리터럴을 비교하려면 equals( ) 메서드를 사용해주어야 합니다.
public static void main(String[] args) {
String str="일이삼사오";
String str1="12345";
System.out.println(str.equals(str1));
} //결과: false
indexOf( )
문자가 위치한 인덱스를 반환하는 메서드입니다.
public static void main(String[] args) {
String str="12345";
System.out.println(str.indexOf("1"));
//결과:1
}
lastIndexOf( )
indexOf( )와 비슷하지만 뒤에서부터 조회해서 인덱스를 반환합니다.
public static void main(String[] args) {
String str="10001";
System.out.println(str.lastIndexOf("1"));
//결과:4
}
1이라는 문자가 두 개나 있지만 뒤에서부터 반환하여 결과 값이 4가 나오는 것을 확인할 수 있습니다.
subString( )
문자열을 추출하는 메서드 n번부터 m번 인덱스까지 추출할 수 있으며
파라미터를 하나만 넣을 경우, 입력받은 인덱스 부터 마지막까지 문자열을 자른다
public static void main(String[] args) {
String str="12345";
System.out.println(str.substring(1));
System.out.println(str.substring(1,3));
//결과 :2345
//결과 : 23
}
위의 예시처럼 매개변수에 따라 기능이 달라짐을 확인할 수 있습니다.
replace
문자열의 일부를 원하는 문자열로 바꿀(치환) 수 있습니다.
첫 번째 파라미터는 바꿀 문자열 두 번째 파라미터는 새로운 문자열을 입력할 수 있습니다.
public static void main(String[] args) {
String str="12345";
System.out.println(str.replaceAll("1", "3"));
//결과 값 32345
}
1이라는 문자가 3으로 바뀐 것을 확인할 수 있습니다.
startWidth( ),endsWidth( )
startWidth( )는 비교 대상 문자열이 입력된 문자열 값으로 시작되는지 여부를 확인하고
endsWidth( )는 끝나는지를 확인합니다.
public static void main(String[] args) {
String str="12345";
//startWidth( )
System.out.println(str.startsWith("1"));
//endsWidth( )
System.out.println(str.endsWith("5"));
//결과 : true
//결과 : true
}
이상으로 오늘은 String클래스에대해 배운 점을 정리해보았습니다.
글 읽어주셔서 감사합니다용
'국비지원수업' 카테고리의 다른 글
JAVA/자바[5일차](2)-for문,break,continue (0) | 2022.10.26 |
---|---|
JAVA/자바[5일차](1)-증감연산자,복합대입연산자 (0) | 2022.10.26 |
JAVA/자바[4일차](1)-메소드란?, 메소드 구조, 메소드 사용법 (0) | 2022.10.25 |
JAVA/자바[3일차] (0) | 2022.10.24 |
JAVA/자바[과제] 2진수와 16진수에 대해 알아보기 (0) | 2022.10.23 |