Daily coding

Java Basic : day 3 - String 데이터 타입 / String 메소드 본문

Language/Java_basic

Java Basic : day 3 - String 데이터 타입 / String 메소드

sunnnkim 2019. 11. 20. 19:21

String

: 문자열 저장, 편집, 정보 
  == Array of char []


String str;
// String == class ---> 설계
// str == Object(객체), instance(주체)
// str = new String(); // 할당하는 정석의 방법

 

str = "hello"; 

// 많이 쓰여서 new로 할당하지 않아도 대입연산자로 바로 데이터를 넣을 수 있음 

// str(객체)은 stack 메모리에, "hello"(값)은 heap에 저장됨.

str을 출력했을때 원래는 주소값이 나와야 함

- 많이 사용하는 클래스이기 때문에 기본형 데이터타입처럼 toString을 통해 데이터가 바로 나옴

 


//String과 동일한 역할을 수행하는 문자 배열
char cArr[] = {'h','e','l','l','o'};
str = "hello";
// 이 두개의 코드는 같은 데이터

// Sting 생성자로 문자배열 호환 가능함
String str1 = new String(cArr);
System.out.println("str1 = " + str1);

 


// 아래처럼 String 생성 가능
String str2 = new String("hello world");


* Operator 사용 가능 ( + ) : 문자열 합치기
str1 = "hello ";
str2 = "world!";
String str3 = str1 + str2;
String str4 = str3 + " Java";
System.out.println(str3);

// helloworld!
System.out.println(str4);
// helloworld!


String Method

* 표시는 중요하거나 빈번하게 사용

// 비교함수

 

 equals() *
String str5 = null, str6 = "";
// null로 초기화하면 동적할당 안되어 있고, ""은 동적할당 되어있는 것
// 동적할당 안되어있고 ""로 문자열 할당해도 함수 사용 가능
// 예 : "안녕하세요".length() 


// equals()
// : boolean 반환
// 같은 문자열인 경우 true
str5 = "world";
str6 = "worl";
str6 = str6 + "d"; // world
if(str5.equals(str6)) {
System.out.println("str5와 str6는 같은 문자열 입니다.");
}else {
System.out.println("다른 문자열입니다.");
}


 indexOf *
// 특정 문자가 몇 번째 위치에 있는지 앞에서부터 검사하여 위치를 숫자로 리턴
String str7 = "abcdabcd";  
int n = str7.indexOf("c");
System.out.println(n);

 

 lastIndextOf

// 특정 문자가 몇 번째 위치에 있는지 뒤에서 부터 검사하여 위치를 숫자로 리턴
n = str7.lastIndexOf("c");
System.out.println(n);



 length()
// 문자열의 길이
int len = str7.length();
System.out.println(len);



 replace(수정) *
// 웹에서 크롤링하여 데이터를 긁어 왔을 때
// 필요없는 글자들 지우기 위해 많이 사용함
String str8 = "A*B*C*D";
String repStr8 = str8.replace("*", ":");
System.out.println(repStr8);
// 결과 - A:B:C:D



 split() * 
// 문자열을 자르는 메소드
/*
  name:홍길동
  age:24
  birth:00/01/01
  address:서울시
 
  // 디비에서는 토큰 ( - ) 으로 각각의 데이터 연결해서 불러옴
  홍길동-24-00/01/01-서울시
 
  split사용하면 각각의 데이터를 나눠줄 수 있음
 */

String str9 = "홍길동-24-00/01/01-서울시";
String splits[] = str9.split("-");
// String 배열을 선언하고, 자르려는 데이터에 split 메소드를 호출한다.
// 자르기 위한 구분자(토큰)을 ()안에 넣어준다.
// tokenizer 라는 함수도 존재함.
System.out.println("splits = "+ Arrays.toString(splits));
// 결과 : splits = [홍길동, 24, 00/01/01, 서울시]


 substring() * 
// -> substr(DB에서 사용)
// 원하는 부분의 문자열만 산출함
// substring("시작위치의 index 0~", "찾는 문자 마지막 인덱스 +1");
// 예 : abcde - substring(1,4); --> bcd 출력

String subStr = str9.substring(4,6); // "홍길동-24-00/01/01-서울시";
System.out.println(subStr); // 24

subStr = str9.substring(3);
// "홍길동-24-00/01/01-서울시" 
// 3번째 인덱스부터 끝까지 반환 
System.out.println(subStr);
//-24-00/01/01-서울시



 toUpperCase()
// 문자를 모두 대문자로
str9 = "adcDEF";
String upStr = str9.toUpperCase();
System.out.println("upStr: " + upStr);


 toLowerCase()
// 문자를 모두 소문자로
String lowStr = str9.toLowerCase();
System.out.println("lowStr: " + lowStr);


 trim() *
// 공백을 없애주는 메소드 (앞, 뒤의 공백 없애줌)
// 사용하는 곳 : 
// 사용자가 검색창에서 검색어 입력할 때 앞 뒤 공백이 있어도 자동으로 지우고 검색함

String str10 = "              java   java  java   java          ";
String trimStr = str10.trim();
System.out.println(trimStr);
//결과 : java   java  java   java



 valueOf( )
// 숫자 -> 문자열
//  123(int) -> "123"(Stirng)
//  123.4567 -> "123.4567"
// 대화창 등에 있는 숫자 데이터를 문자열로 바꿔줌

int num = 123;
long lo = 12345L;
double d = 1234567;
String iStr = String.valueOf(num);
String lStr = String.valueOf(lo);
String dStr = String.valueOf(d);

System.out.println(iStr);
System.out.println(lStr);
System.out.println(dStr);
// valueOf잘 안쓰는 이유
String _str = num + "";
// 위에 코드처럼 뒤에 + "" 를 해주면 자동으로 문자열로 바뀐다.



 contains(String) *
// --> boolean
// 문자열 탐색
// 알고리즘 4대 요소 : 정렬, 셔플, 트리, 탐색
String str11 = "서울시 강남구 ";
String findStr = "강남";

boolean containStr = str11.contains(findStr);
if(containStr) {
System.out.println("검색한 문자열이 있습니다.");
}else {
System.out.println("검색한 문자열이 없습니다.");
}




 charAt(int) *
// --> char
// String 타입을 배열처럼 사용할 수 있는 함수
char ch = str11.charAt(0);
//서울시 강남구
//String 변수에 index 번호에 있는 문자를 가져옴
System.out.println(ch); // 서



 concat()
// 두 문자열을 합쳐주는 메소드

String str12 = "안녕하세요";
String str13 = "반갑습니다";
String conStr = str12.concat(str13);
System.out.println(conStr);
// 굳이 concat쓰지 않아도 
// + 연산자를 이용하면 편하고 쉽게 문자열 붙일 수 있음



}
}