Day20 :) java.lang패키지 - String

Nux·2021년 9월 30일
0

자바웹개발

목록 보기
20/105
post-thumbnail

String 클래스 앞부분 약간(length, equals)
https://velog.io/@yoonee1126/Day19-Java-API#string%ED%81%B4%EB%9E%98%EC%8A%A4---int-length

String 클래스

리터럴

  • 변수에 넣는 데이터
  • String 문자열은 불변객체로 한번 생성되면 값을 수정 할 수 없음
String a = "a";
String b = "b";
a = a+b;

  • 그림과 같이 아예 새로운 객체를 생성하게 됨

isEmpty()

문자열.isEmpty()
  • 길이가 0인 빈 문자열인 경우 true반환
String a = "";
System.out.println(a.isEmpty());	// true
  • 띄어쓰기 하나라고 있으면 false값이 나옴
String b = " ";
System.out.println(b.isEmpty());	// false

isBlank()

문자열.isBlank()
  • 빈 문자열이거나 공백만 있을 경우 true 반환
  • 자바 11부터 사용 가능
String a = "";
System.out.println(a.isEmpty());	// true
String b = " ";
System.out.println(b.isEmpty());	// true

contains("String")

지정문자열.contains("검사할문자열")
  • 괄호 안의 문자열을 포함하고 있는지 여부 반환
String str = "서울, 부산";
boolean result = str1.contains("서울");
System.out.println(result);	// true 반환

substring(int, int)

객체.substring(시작위치, 끝위치)
  • 시작위치부터 끝까지(끝위치가 정해져있으면 끝위치 전까지) 새로운 문자열 구성
	      012345678910
String str = "abcdefghijk";
System.out.println(str.substring(3))	// 3번 위치의 d부터 k까지 출력
System.out.println(str.substring(3,10))	// 3번부터 9번(10번X)위치의 d부터 j까지 출력

toUpperCase(), toLowerCase()

문자열.toUpperCase();
문자열.toLowerCase();
  • 문자열을 각각 대소문자로 변경
String str1 = "Good Morning";
System.out.println(str1.toUpperCase());	// GOOD MORNING
System.out.println(str1.toLowerCase());	// good morning

replace(String, String)

문자열.replace(교체될 문자열, 교체 할 문자열)
  • 첫번째 인자의 문자열을 찾아 두번째 인사의 문자열로 대체
String str = "저는 자바개발자입니다. 흥미로운 자바.";
System.out.println(str.replace("자바","파이썬");
// 출력값: 저는 파이썬개발자입니다. 흥미로운 파이썬.

startsWith(String), endsWith(String)

문자열.startsWith("시작문자열");
문자열.endsWith("끝문자열");
  • 특정문자로 시작하는지, 끝나는지를 boolean으로 반환
String page = "http://www.naver.com"
System.out.println(page.startsWith("http://"))	// true
System.out.println(page.startsWith("www"))	// false
System.out.println(page.endsWith("net"))	// false
System.out.println(page.endsWith("com"))	// true

indexOf(String)

문자열.indexOf("찾을문자열")
  • 특정문자열의 위치 확인
		01234567891011
String phone = "031)111-1111";
System.out.println(phone.indexOf(")");	// 3 출력

split(String)

String[] 배열이름 = 문자열.split("구분할 문자열")
  • 구분할 문자열을 중심으로 쪼개어 앞뒤로 잘려진 문자열을 배열에 담아 반환
str1 = "김유신,강감찬,홍길동";
String[] arr = str1.split(",");		// arr = {김유신, 강감찬, 홍길동};
for ( String arrs : arr){
	System.out.print(arrs)	// 출력값: 김유신강감찬홍길동
    }
  • 구분할 문자열에 빈 문자열("")을 넣으면 무조건 한글자씩 쪼갬
str1 = "김유신,강감찬,홍길동";
String[] arr = str1.split("");
// arr = {김,유,신,강,감,찬,홍,길,동};

trim()

문자열.trim();
  • 문자열 좌우 공백 제거 후 반환
  • 좌우 공백만 제거되며 문자 사이의 공백은 사라지지 않음
    ex) 포털사이트 검색창
String str = "                자바             파이썬             "
System.out.println(str.trim());		// 출력값:자바             파이썬

문자열->기본형/기본형->문자열

문자열->기본형

  • Integer.valueOf("값")
  • Integer.parseInt("값")
  • Integer대신 Long, Double등 다양한 기본 자료형 타입 대입 가능

기본형->문자열

  • ""(빈문자열을 더함)
  • String.valueOf(값)

StringBuilder, StringBuffer

객체.append(메서드 or 값);
  • 문자열은 변화를 줄수록 불필요한 객체가 계속 생성됨
  • 효율적으로 메모리를 관리하기 위하여 StringBuilder(Buffer)를 이용
  • StringBuilder와 StringBuffer는 처리방식에 약간의 차이가 있는 것을 제외하면 완전히 같은 기능
1. String
String a = "홍길동" + 100 + 70;
"홍길동" / "홍길동100" / "홍길동10070"
이 세가지 값이 전부 메모리에 남아있지만
결국 최종적으로 얻고자 하는 값은 "홍길동10070" 뿐이므로
불필요한 객체로 인하여 메모리를 낭비하게 됨
2. StringBuilder(Buffer)
StringBuilder a = new StringBuilder();
a.append("홍길동");
a.append(100);
a.append(70);

  • StringBuilder(Buffer)를 이용하면 낭비하는 메모리 없이 StringBuilder a에 값이 축적됨

0개의 댓글