반응형
- 연습 문제
이메일을 입력받고 @가 있는지 확인하는 프로그램
@가 없다면 올바르지 않은 이메일입니다 출력
- next() = 스페이스 즉 공백 전까지 입력받은 문자열을 리턴
- nextLine() = 엔터를 치기 전까지 쓴 문자열을 모두 리턴
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String email;
System.out.println("이메일을 입력하세요.");
email = sc.next();
System.out.println(email);
if(email.indexOf('@') != -1) {
System.out.println("올바른 이메일입니다.");
System.out.println("당신의 ID : " + email.substring(0, email.indexOf('@')));
System.out.println("당신의 이메일 서버 : "+ email.substring(email.indexOf('@')+1));
} else {
System.out.println("올바르지 않은 이메일입니다.");
}
}
}
- String 메소드
- 파라미터 (=매개변수) : 괄호 안에 있는 것들.
- 똑같은 변수명, 메소드, 클래스명 생성 불가
메소드 | 내용 |
substring() | 문자열 자르기 (시작, 끝) |
concat() | 병합 |
equals | 값이 같은지 확인 |
lastIndexOf() | 마지막에 등장하는 index 위치를 숫자로 반환 |
replace() | 문자를 바꿔줌 |
toUpperCase() & toLowerCase() | 대문자/소문자로 변환 |
trim() | 앞 뒤에 들어가있는 공백 삭제 |
split() | 글자 나누기 |
Stringtokenizer | 여러개의 토큰으로 분리 |
import java.util.Arrays;
import java.util.StringTokenizer;
public class String02 {
public static void main(String[] args) {
String email = "abcd@kakao.com";
System.out.println(email.indexOf('@')); // email 앞글자 수
System.out.println(email.substring(0)); // substring
System.out.println(email.substring(1)); // 문자열 자르기(시작위치)
System.out.println(email.substring(2));
System.out.println(email.substring(4));
System.out.println(email.substring(email.indexOf('@')+1)); // = 5
// 파라미터 : 괄호 안에 있는 것들. (= 매개변수)
int index = email.indexOf('@');
String subString = email.substring(index+1);
System.out.println(subString); // = 5
// 문자열 자르기 substring(시작, 끝);
System.out.println(email.substring(0,email.indexOf('@'))); // 처음부터 @전까지 = abcd
// concat = 병합
String text = email.concat("입니다.");
System.out.println(text);
// equals 값이 같은지 확인
System.out.println(email.equals(text));
// lastIndexOf() 마지막에 등장하는 index 위치를 숫자로 반환
System.out.println(email.lastIndexOf('m')); // char 타입
System.out.println(email.lastIndexOf("com")); // string 타입
// 똑같은 변수명, 메소드, 클래스명 생성 불가
System.out.println(email.length()); // 이메일 길이
// replace : 문자를 바꿔줌
System.out.println(email.replace('a', 'b')); // bbcd@kbkbo.com
System.out.println(email.replace("kakao", "daum")); // abcd@daum.com
text = "texttesttext";
System.out.println(text.replaceAll("test", "테스트")); // text테스트text
// toUpperCase() & toLowerCase()
System.out.println(email.toUpperCase());
System.out.println(email.toLowerCase());
// trim : 앞 뒤에 들어가있는 공백 삭제
text = " 안녕하세요. 좋은 아침! 퇴근하고싶다. ";
System.out.println(text.trim());
// split 글자 나누기
String emailArr[]= email.split("o");
System.out.println(Arrays.toString(emailArr)); // [abcd@kaka, .c, m]
String textArr[] = text.split(" ");
System.out.println(Arrays.toString(textArr));
String text1 = "85, 65, 100";
System.out.println(Arrays.toString(text1.split(",")));
// Stringtokenizer : 여러개의 토큰으로 분리
StringTokenizer st = new StringTokenizer("Hello, world, java, Spring", (", "));
System.out.println(st); // 바로 나오지 않음
while(st.hasMoreTokens()) { // 그 안에 찍어줄 값이 있으면 계속 반복
System.out.println(st.nextToken());
System.out.println(st.nextToken());
System.out.println(st.nextToken());
}
}
// 메소드 정의
public static void print() {}
public static void print(int number) {}
public static void print(String number) {}
public static void print(String number, int num) {}
public static void print(int num, String number) {}
// 파라미터의 수, 순서, 타입으로 결정됨.
}
- String = 동기화에 대해 신경 안 씀
- StringBuffer = 각 메소드별로 동기화 키워드가 존재, 멀티스레드 환경에서도 동기화 지원. (네트워크 환경)
- StringBuilder = 스레드에 안전한지 여부가 전혀 관계 없는 프로그램 개발 시 사용
단순히 성능만 놓고 본다면 연산이 많은 경우
StringBuilder > StringBuffer >>> String
import java.util.Arrays;
import java.util.StringTokenizer;
public class String03 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
// append 값 입력
sb.append("가나다라");
sb.append("마바사");
sb.append("자차카타파타하");
System.out.println(sb);
String text = sb.toString(); // String과 StringBuilder는 다름. toString 사용해야
System.out.println(text);
System.out.println(text.equals(sb)); // false
System.out.println(text.equals(sb.toString())); // true
// insert
sb.insert(0, "하"); // 0번 위치에 하 입력
sb.insert(sb.length(), "가"); // 길이 끝에 추가
System.out.println(sb);
// delete
sb.delete(0, 3);
System.out.println(sb);
// replace(시작위치, 끝위치, 바꿀 문자열)
sb.replace(11, 13, "입니다.");
System.out.println(sb);
// reverse 반대로 돌리기
sb.reverse();
System.out.println(sb);
// sb.subSequence
System.out.println(sb.subSequence(0, 3));
// toString
text = sb.toString();
System.out.println(text);
// sb의 저장용량 확인
sb.append("용량을 계속 늘려가는 capacity");
System.out.println(sb.capacity());
StringBuilder sb2 = new StringBuilder();
System.out.println(sb2.length()); // 0
System.out.println(sb2.capacity()); // 16
}
}
반응형
'개발 공부 Today I Learned' 카테고리의 다른 글
[국비 19일차 TIL] 자바 객체지향(속성, 생성자, 메소드), C언어, 파이썬 (0) | 2023.12.15 |
---|---|
[국비 18일차 TIL] 객체 지향 OOP (0) | 2023.12.14 |
[국비 16일차 TIL] JAVA 배열 복사 / 이중for문 / String (0) | 2023.12.12 |
[국비 15일차 TIL] 자바 반복문 while, do-while, switch, 동적가변배열 (1) | 2023.12.11 |
[국비 14일차 TIL] JAVA 2차원 배열 (1) | 2023.12.08 |
댓글