
확장for문 : for(String a : b) / 하나의 데이터(b)을 가져와서 String a에게 하나씩 넣겠다
ex) for (int a : b) {
System.out.printf("%4d", su);
}
String - 클래스
시간을 비교하는 String클래스
- StringBuffered
- StringBuilder
String - 메서드
- 클래스복사본.split(",") : 문자열 나누어서 배열로 변환하는 것
- equals : string은 무조건 equals로 비교
- equalsIgnoreCase( ) : 대소문자 구분x
- 클래스복사본.indexOf( ) : 괄호안 내용을 index에서 찾는 것
- 클래스복사본.lastIndextOf( ) : 괄호안 내용 뒤에서부터 찾기
- 클래스복사본.indexOf(해당내용이 없는경우) : 일치되는 문자가 없으면 -1출력
- 클래스복사본.replaceAll(a,b) : 치환 메서드(a를 b처럼)
- 클래스복사본.trim( ) : 앞뒤 공백 삭제
- 클래스복사본.replaceAll(" ",""); : 공백 지워서 치환
- ex) char ch = "abcde".charAt(2) : index 2번째에 있는 문자 저장
- ex) "abcdd".startsWith("abc") : 시작 문자 abc 맞나요?
- ex) "abcde".length( ) : 문자 개수
- ex) String s1 = "abcd"; / String s2 = "aade";
출력시 s1.compareTo(s2); / s2.compareTo(s1);
: ASCII값 비교
📌 Note Code
Test1. String 클래스를 이용한 시간비교
💻 입력
public class Test1 {
public void stringTime() {
System.out.println("String...");
// long start = System.currentTimeMillis();
long start = System.nanoTime();
String str = "A";
for (int i = 1; i < 50000; i++) {
str += "A";
}
long end = System.nanoTime();
System.out.println("실행시간 " + (end - start) + "ms");
}
public void stringBuilder() {
System.out.println("StringBuilder...");
long start = System.nanoTime();
StringBuilder str = new StringBuilder("A");
for (int i = 1; i < 50000; i++) {
str.append("A");
}
long end = System.nanoTime();
System.out.println("실행시간 " + (end - start) + "ms");
}
public void stringBuffer() {
System.out.println("StringBuffer...");
long start = System.nanoTime();
StringBuffer str = new StringBuffer("A");
for (int i = 1; i < 50000; i++) {
str.append("A");
}
long end = System.nanoTime();
System.out.println("실행시간 " + (end - start) + "ms");
}
public static void main(String[] args) {
Test1 obj = new Test1();
obj.stringTime();
obj.stringBuffer();
obj.stringBuilder();
}
}
String...
실행시간 309064600ms
StringBuffer... //Buffer가 조금 느림
실행시간 1326200ms
StringBuilder...//Builder가 조금 빠름
실행시간 1139600ms
📌 Note Code
Test2. 같은 자료형끼리 형변환 해보기
💻 입력
public class Test2 {
public static void main(String[] args) {
// StringBuffer
StringBuffer sb = new StringBuffer();
sb.append("서울"); //append = 누적
sb.append("부산");
System.out.println(sb);
String str = sb.toString(); //sb메소드에 있는 값을 문자로 변환해서 str에 대입해라
System.out.println(str);
// Integer = int
int a = 10;
System.out.println(a);//숫자 10
System.out.println(Integer.toString(a)); // 문자 10
System.out.println(Integer.toString(a, 2)); // 2진수 1010
System.out.println(Integer.toString(a, 16)); // 16진수 a
}
}
서울부산
서울부산
10
10
1010
a
📌 Note Code
Test3. String의 자주 사용하는 메서드
💻 입력
import java.util.Iterator;
public class Test3 {
public static void main(String[] args) {
String s1 = "서울, 부산, 대구";
String ss[] = s1.split(","); // split : 나누어라
for (String s : ss) { // 확장 for문
System.out.print(s);
}
System.out.println();
String s2 = "seoul";
String s3 = "Seoul";
System.out.println(s2.equals(s3)); // 내용 비교 (대문자라서 false)
System.out.println(s2.equalsIgnoreCase(s3)); // 대소문자 구분없이 비교
String s4 = "abc.def.hij";
System.out.println(s4.indexOf(".")); // 인덱스에서 "."를 찾는 것. 3 출력.
System.out.println(s4.lastIndexOf(".")); // 뒤에서부터 인덱스 찾기. 7 출력.
System.out.println(s4.indexOf("def")); // 일치되는 문자열의 첫번째 인덱스 반환 / 4출력.
System.out.println(s4.indexOf("x")); // 일치되는 문자가 없으면 -1 출력
String s5 = "우리나라 대한민국 좋은나라 대한민국";
String s6 = s5.replaceAll("대한", "大韓"); // 치환 메서드
System.out.println(s6);
String s7 = " a b c ";
System.out.println(s7);
System.out.println(s7.trim()); // 앞뒤 공백 삭제
System.out.println(s7.replaceAll(" ", "")); // 공백을 지워서 치환
char ch = "abcde".charAt(2); // 인덱스 2번째에 있는 c 저장
System.out.println(ch);
System.out.println("abcdefg".startsWith("abc")); // 시작 문자 abc 체크.
System.out.println("abcdefg".length()); // 문자 갯수
// 사전식 배열 (아스키값 비교)
String s8 = "abcdefg";
String s9 = "abcdbfg";
System.out.println(s8.compareTo(s9)); // 3
System.out.println(s9.compareTo(s8)); // -3
}
}
서울 부산 대구
false
true
3
7
4
-1
우리나라 大韓민국 좋은나라 大韓민국
a b c
a b c
abc
c
true
7
3
-3
📌 Note Code
-BufferedReader 쓸 때 값을 받게끔 = br.readLine( );
Test4. String의 메서드를 사용해서 계산기 만들기
💻 입력
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test4 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("수식 입력[ex. 3+5]: ");
String str = br.readLine();
str = str.replaceAll(" ", ""); // 공백 입력시 공백 제거
String op[] = { "+", "-", "*", "/", "%" };
for (String oper : op) {
int pos = str.indexOf(oper); // str에서 op배열의 연산자 넘버 확인
// System.out.println(pos);
if (pos > -1) {
int num1 = Integer.parseInt(str.substring(0, pos)); // 0부터 pos까지 앞자리 추출
int num2 = Integer.parseInt(str.substring(pos + 1)); // pos 다음부터 끝까지
int result = 0;
char operator = str.charAt(pos);
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
case '%':
result = num1 % num2;
break;
}
// System.out.printf("%d %c %d = %d", num1, operator, num2, result);
String s = String.format("%d %c %d = %d", num1, operator, num2, result); // 변환
System.out.println(s);
}
}
}
}
수식 입력[ex. 3+5]: 5 6+17
56 + 17 = 73
📌 Note Code
wrapper 클래스
① : 자료형을 참조형 데이터로 사용할 수 있게 한다.
②-1 자료형) boolean, byte, char, short, int, long, float, double
②-2 : 참조형 자료형) Boolean, Byte, Character, Short, Long, Float, Double
같은 자료형일 때
Test5. String의 메서드를 사용해서 계산기 만들기
💻 입력
public class Test5 {
public static void main(String[] args) {
int n1 = 10;
int n2;
Integer num1;
Integer num2 = new Integer(20);
num1 = n1;
n2 = num2;
System.out.println(n1 + ":" + num1);
System.out.println(n2 + ":" + num2);
}
}
10:10
20:20
📌 Note Code
Test6. Calendar 현재 컴퓨터 시스템의 날짜,시간을 다루는 클래스
💻 입력
import java.util.Calendar;
public class Test6 {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
String yoil[] = { "일", "월", "화", "수", "목", "금", "토" };
int y = now.get(Calendar.YEAR);
int m = now.get(Calendar.MONTH) + 1; // 0~11이여서 +1로 달 설정 (index -0부터 시작)
int d = now.get(Calendar.DATE);
int w = now.get(Calendar.DAY_OF_WEEK); // 1~7까지 계산, 1=일요일
System.out.printf("%d-%d-%d-%s", y, m, d, yoil[w - 1]); // 년, 월, 일, 주
System.out.println();
int startDay = now.getActualMinimum(Calendar.DATE);
int endDay = now.getActualMaximum(Calendar.DATE);
System.out.println("startDay: " + startDay + " endDay: " + endDay);
System.out.printf("%tF\n", now);
System.out.printf("%tT\n", now); // 시간출력
System.out.printf("%1$tF %1$tT", now);
now.set(2024, 10 - 1, 10); //index -0부터 시작
y = now.get(Calendar.YEAR);
m = now.get(Calendar.MONTH) + 1; // 0~11이여서 +1로 달 설정
d = now.get(Calendar.DATE);
w = now.get(Calendar.DAY_OF_WEEK);
System.out.println();
System.out.println(y + "-" + m + "-" + d + "-" + yoil[w - 1]);
}
}
2023-11-28-화
startDay: 1 endDay: 30
2023-11-28
17:07:38
2023-11-28 17:07:38
2024-10-10-목
📌 Note Code
Test7. 디데이 날짜를 나타내는 시스템 코드를 짜여라
💻 입력
import java.util.Calendar;
import java.util.Scanner;
public class Test8 {
public static void main(String[] args) {
// 년도: 2020
// 월: 5
// 일: 20
// 몇일후? 100일후
// 만난날:2020년 5월 20일 x요일
// 100일후:2020년 x월 x일 x요일
String yoil[] = { "일", "월", "화", "수", "목", "금", "토" };
Calendar now = Calendar.getInstance();
Scanner sc = new Scanner(System.in);
System.out.println("년도?");
int y = sc.nextInt();
System.out.println("월?");
int m = sc.nextInt();
System.out.println("일?");
int d = sc.nextInt();
now.set(y, m - 1, d); // 사용자에게 받은 날짜
int w = now.get(Calendar.DAY_OF_WEEK);
System.out.println("만난날: " + y + "년 " + m + "월 " + d + "일 " + yoil[w - 1] + "요일");
System.out.println("몇일 후?");
int dd = sc.nextInt();
now.add(Calendar.DATE, dd); // DATE에 dd더한다
y = now.get(Calendar.YEAR);
m = now.get(Calendar.MONTH) + 1; // 0~11이여서 +1로 달 설정
d = now.get(Calendar.DATE);
w = now.get(Calendar.DAY_OF_WEEK);
System.out.println("만난날: " + y + "년 " + m + "월 " + d + "일 " + yoil[w - 1] + "요일");
}
}
년도?2020
월?5
일?20
만난날: 2020년 5월 20일 수요일
몇일 후?100
만난날: 2020년 8월 28일 금요일