Daily coding
Java Basic : day 3 - String 데이터 타입 / String 메소드 본문
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쓰지 않아도
// + 연산자를 이용하면 편하고 쉽게 문자열 붙일 수 있음
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 3 - Example 01 : 최대값, 최소값 찾기 (Max / Min) (0) | 2019.11.20 |
---|---|
Java Basic : day 3 - 2차원 배열 (0) | 2019.11.20 |
Java Basic : day 2 - Example 02 : 데이터 입력과 합계/평균 구하기 (0) | 2019.11.20 |
Java Basic : day 2 - Example 02 : Array (배열의 범위) (0) | 2019.11.20 |
Java Basic : day 2 - Example 02 : For loop 반복문(별찍기,구구단) (0) | 2019.11.20 |