문자열(String)

윤재열·2022년 1월 12일
0

Java

목록 보기
28/71

문자열이란 문장을 뜻한다. 예를 들어 다음과 같은 것들이 문자열이다.
"Happy Java";
"a"
"123"

자바에서 문자열을 나타내는 자료형은 String이다.

  • 즉,위의 문자열을 자바에서 표현 하려면,
String a = "Happy Java";
String b = "a";
String c = "123";
  • 하지만 위의 예제는 다음과 같이 표현해도 된다.
String a = new String("Happy Java");
String b = new String("a");
String c = new String("123");
//여기서 new는 객체를 만들 때 사용한다.
  • 하지만 보통 문자열을 표현할 때는 가급적 리터럴 표기를 사용하는 것이 좋다.
    첫 번째 처럼 사용하면 가독성에 이점이 있고 컴파일 시 최적화에 도움을 주기 때문이다.
    String a = "Happy Java" 와 String a = new String("Happy Java")는 같은 값을 갖게 되지만 완전히 동일하다고 볼수는 없다.첫번째 방식을 리터럴(literal)표기라고 하는덱 객체 생성없이 고정된 값을 그대로 대입하는 방법을 말한다.
    위 예에서 리터럴 표기법은 "Happy Java" 라는 문자열을 interen pool이라는 곳에 저장하고 다음에 다시 동일한 문자열이 선언될 떄는 cashe 된 문자열을 리턴한다. 두번째 방식은 항상 새로운 String 객체를 만든다.

원시(primitive)자료형

자로형 int,boolean,char,double,long,float 등을 자바는 원시자료형이라고 부른다.
이런primitive 자료형은 new키워드로 그 값을 생성할 수 없습니다.

  • primitive 자료형은 다음과 같이(literal)로만 값을 세팅할 수 있다.
boolean result = true;
char captialC = 'C';
int i = 10000;

여기서!! 하나 기억해 둘 것이 있다.내가 뒤쪽으로 공부하면서 헷갈린 것이 String인데
String 또한 "Happy Java"와 같이 리터럴로 표기가 가능하지만 primitive자료형은 아니다.
String은 리터럴 표현식을 사용할 수 있도록 자바에서 특별 대우 해주는 자료형이다.

원시 자료형의 Wrapper클래스

int, long, double, float, boolean 등의 원시 자료형은 다음 처럼 각각에 대응하는 Wrapper클래스들이 존재한다.

  • ArrayList, HashMap,HashSet 등은 데이터 저장시 원시 자료형 대신 그의 대응하는 Wrapper클래스들을 사용해야 한다. 원시 자료형 대신 Wrapper클래스를 사용하면 값 대신 객체를 주고 받을 수 있어 코드를 객체 중심적으로 작성하는데 유리하다. 또한 멀티스레딩 환경에서 동기화를 지원하기 위해서는 Wrapper클래스가 반드시 필요하다.!!

이제 내가 계속 공부하면서 새로 배우고 싶었던 것이 이 문자열 내장 메서드이다.

equals()메서드

equals는 두 개의 문자열이 동일한지를 비교하여 결과값을 리턴한다.
예를 들어보면

String a = "Hello";
String b = "java";
String c = "Hello";
System.out.println(a.equals(b));	// false 출력
System.out.println(a.equals(c));	// true 출력

-문자열 a와 문자열b는 "Hello"와 "java"로 서로 갖지 않다. 따라서 equals메서드 호출시 false를 리턴한다. 문자열 a와 문자열 c는 "Hello"와"Hello"로 서로 같으므로 true를 리턴한다.

  • 문자열의 값을 비교할떄는 반드시 equals를 사용해야한다. == 연산자를 사용할 경우에 이런 경우가 발생할 수 있다.
String a = "Hello";
String b = new String("Hello");
System.out.println(a.equals(b));	//	true
System.out.println(a == b);	//	false
  • 문자열 a와 b는 모두 같은 "Hello"로 같은 값이지만 equals()를 호출했을 떄는 true, ==연산자를 사용했을 때는 false를 리턴한다. a와 b는 값은 같지만 서로 다른 객체이다.
    ==은 두개의 자료형이 동일한 객체인지를 판별할 때 사용하는 연산자이기 때문에 false를 리턴한다.

indexOf()메서드

indexOf는 문자열에서 특정문자가 시작되는 위치(인덱스)를 리턴한다.

Stirng a = "Hello Java";
System.out.println(a.indexOf("Java");	//6출력
 System.out.println(a.indexOf("J"));	//6출력
  • 위와 같은 a 문자열에서 "Java"라는 문자열은 일곱번째('J')부터 시작이다.인덱스는(0)부터 시작한다는 점을 인지하고 띄어쓰기도 포함한다.따라서 결과 값이 6이다.

constains() 메서드

contains는 문자열에서 특정 문자열이 포함되어 있는지의 여부를 리턴한다.

Stirng a = "Hello Java";
System.out.println(a.constains("Java");	//true 출력
  • 문자열 a는 "Java"라는 문자열을 포함하고 있기 때문에 true를 리턴한다.

charAt()메서드

특정 위치의 문자를 리턴한다.

Stirng a = "Hello Java";
System.ou.println(a.charAt(6)	// "J" 출력

replaceAll()메서드

replaceAll은 문자열 중 특정 문자열을 다른 문자열로 바꾸조가 할 때 사용한다.

Stirng a = "Hello Java";
System.out.println(a.replaceAll("Java","World"));	//Hello Worel 출력
  • "Hello java" 라는 문자열에서 "Java"가 "World"로 바뀌었다.

substirng()메서드

substring은 문자열 중 특정 부분을 뽑아낼 경우에 사용한다.

Stirng a = "Hello Java";
System.out.println(a.substring(0,4);	//Hell 출력
  • 위처럼 substring(시작위치,끝위치)와 같이 사용하면 문자열의 시작위치에서 끝위치까지의 문자를 리턴하게 된다.단,끝위치는 포함이 안된다는 점을 주의하자!
    시작 위치 <= substtring() < 끝위치

toUpperCase()메서드

toUpperCase는 문자열을 모두 대문자로 변경할 때 사용한다.(모두 소문자로 변경할때는 toLowerCase를 사용한다.)

Stirng a = "Hello Java";
System.out.println(a.toUpperCase());	//HELLO JAVA 출력

split() 메서드

split 메서드는 문자열을 특정 구분자로 분리하는 메서드이다.

Stirng a = "a:b:c:d";
String[] temp = a.split(":");	//result는 {"a","b","c","d"}
//출력할때는 for(String s : temp){
System.out.println(s);}를 하면 된다.
  • 위의 예처럼 "a:b:c:d"라는 문자열을 ":"문자로 나누어 {"a","b","c","d"}문자열 배열로 만들수 있다.

join()메서드

각 멤버 사이에 지정된 구분 기호를 사용하여 개체 배열의 문자열 표현을 연결합니다.

System.out.println(String.join("@","Hello","java","World"));
//Hello@Java@Wrold
profile
블로그 이전합니다! https://jyyoun1022.tistory.com/

0개의 댓글