-
자바의 기본 API 클래스 (String, 기본)프로그래밍/JAVA 자바 2021. 7. 20.반응형
*이 붙으면 전부 가져오겠다는 뜻
import java.util.* << util 안에 있는 모든걸 임포트 하겠다.
toString / equals / hashCode
package ex0719; public class Ex02 { public static void main(String[] args) { // Object equals Test2 t1 = new Test2(); Test2 t2 = new Test2(); Test2 t3 = t1; //toString() 메소드는 Object 메소드로 "클래스명@해쉬코드" 를 반환 // 해쉬코드 : JVM이 해당 객체를 빠르게 검색할 수 있도록 만들어진 값 // 동일한 객체는 해쉬코드가 같지만, 해쉬코드가 같다고 동일한 객체는 아니다. // Object 클래스 : 모든 클래스의 최상위 클래스 // 상위 클래스의 public, protected 접근제어자의 메소드나 필드는 모든 하위 클래스에서 사용 가능 System.out.println(t1.toString()); System.out.println(t1); //t1.toString()과 동일한 결과 System.out.println(t1 == t2); // false 반환 객체에서 == 는 주소를 비교하는 거임 System.out.println(t1.equals(t2)); // Object의 equals() 메소드는 주소를 비교 System.out.println(t1 == t3); // true System.out.println(t1.hashCode()); //10 진수로 출력 System.out.printf("%h\n", t1.hashCode()); // 16진수로 출력 } } class Test2{ }
Object clone
package ex0719; public class Ex03 { public static void main(String[] args) { // Object clone Test3 t1 = new Test3(); t1.setName("홍길동"); t1.setAge(20); Test3 t2 = t1; // t1, t2 : 동일한 영역을 참조 System.out.println(t1 == t2); // true t1.print(); t2.print(); Test3 tt = new Test3(); tt.setName("홍길동"); tt.setAge(20); System.out.println(t1 == tt); // Object clone() : 새로운 객체를 생성하여 필드 값을 복사(객체 복제) Test3 t3 = (Test3) t1.clone(); System.out.println(t1 == t3); //false t3.print(); } } class Test3 implements Cloneable{ // Cloneable 인터페이스 구현 private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void print() { System.out.println(name+": "+age); } public Object clone() { Object obj = null; try { obj = super.clone(); } catch (Exception e) { } return obj; } }
객체의 복사본을 반환.
박싱, 언박싱, Wrapper
package ex0719; public class Ex04 { public static void main(String[] args) { // TODO Auto-generated method stub // null : 객체가 참조하는 영역이 없는 것을 나타내는 것 //int a = null; // 기본 자료형은 null을 가질수 없다. //int에 대응하는 Wrapper 클래스 Integer ii = null; int a = 10, b; ii = a; // 기본 자료형(int)이 Integer 형으로 자동 변환 // 실제로는 ii = new Integer(a); -> 컴파일할때(Autoboxing) b = ii; // Integer를 기본 자료형(int)로 자동 변환 // 실제로는 b = ii.intValue(); -> 컴파일 할때(Auto-unboxing) System.out.println(ii + "," + a + "," + b); } }
Integer 클래스
package ex0719; public class Ex05 { public static void main(String[] args) { // TODO Auto-generated method stub String s1, s2; int a, b; s1="123"; s2="456"; System.out.println(s1 + s2); //문자열 결합 //문자열을 정수(10진수)로 변환 a = Integer.parseInt(s1); b = Integer.parseInt(s2); System.out.println(a+b); //a = Integer.parseInt("1,234"); // 런타임 오류(NumberFormatException) 콤마, 점 들어가면 안됨 //a = Integer.parseInt("12.34"); // 런타임 오류(NumberFormatException) 콤마, 점 들어가면 안됨 //a = Integer.parseInt("b1"); // 런타임 오류(NumberFormatException) 영문자가 있어서 a = Integer.parseInt("b1",16); //16진수라고 해준다면 가능 System.out.println(a); //177 a = Integer.parseInt("1011"); System.out.println(a); //1011 a = Integer.parseInt("1011",2); System.out.println(a); // 11 a=123; s1 = Integer.toString(a); // 정수를 String으로 System.out.println(s1); s1=Integer.toBinaryString(a); // 2진수 문자열로 변환 System.out.println(s1); s1=Integer.toHexString(a); // 16진수 문자열로 변환 System.out.println(s1); System.out.println("정수 최대값 : "+ Integer.MAX_VALUE); System.out.println("정수 최소값 : "+ Integer.MIN_VALUE); } }
문자열 "123" 과 "456"을
Integer.parseInt로 정수형으로 바꿔주고
더해서 579라는 정수가 나오게 된다.
반대로 Integer.toString 을 사용하면 정수를 String으로 변환 가능하다.
package ex0719; public class Ex06 { public static void main(String[] args) { // TODO Auto-generated method stub //Long a1 = 10; // 컴파일 오류 Long a1 = 10L; long x1 = 10; Long a2 = new Long(10); int t = (int)x1; // long을 int로 캐스팅 // 클래스는 상속 관계에서만 캐스팅이 가능 // Long과 Integer는 상속 관계가 아니라서 캐스팅 불가능 //Integer s = (Integer) a1; // 컴파일 오류 System.out.println(a1 + "," + a2); System.out.println(x1); System.out.println(t); double d; d = Double.parseDouble("123.5"); // String을 double로 변환 System.out.println(d); d = Double.valueOf("123.5"); // String을 double로 변환 System.out.println(d); } }
Long 처럼 대문자를 사용할거면 숫자 끝에 L 붙여주기
Double.parseDouble를 사용하면 String을 double형으로 변환 가능
반대로 String을 double로 변환 하려면
Double.valueOF 사용
BigInteger
값이 큰 정수를 다루기 위해 제공되는 클래스
소수점 이동, 반올림 하기 안하기
유효 자리수 표기
package ex0719; import java.math.BigDecimal; public class Ex08 { public static void main(String[] args) { // TODO Auto-generated method stub BigDecimal a = new BigDecimal("123456789.123456789"); BigDecimal b = a.movePointLeft(3); // 소수점을 왼쪽으로 3칸 이동 BigDecimal c; System.out.println(b); //나누기 c = a.divide(b); System.out.println(c); // 1E+3 //나누기(반올림 안함) c = a.divide(b, BigDecimal.ROUND_DOWN); System.out.println(c); //1000.00000000 //나누기(유효 자리수 5자리, 반올림 안함) c = a.divide(b, 5, BigDecimal.ROUND_DOWN); System.out.println(c); //1000.00000 double d = c.doubleValue(); System.out.println(d); } }
String 관련 클래스
package ex0719; /* * String * 문자열 * 문자열은 상수풀(String constant Pool)에 저장 * 상수풀에서 intern() 메소드로 해당 문자열을 검색하여 문자열이 존재하면 해당 문자열의 주소를 반환 * 문자열이 존재하지 않으면 객체를 추가하여 새로운 참조값 반환 * 내용불면(Immutable) - Integer, Long 등의 Wrapper 클래스도 내용불변 * 내용이 변경되면 새로운 영역에 메모리를 할당 받아 처리하고 이전 공간은 가비지 컬렉터의 대상이 된다. */ public class Ex09_String { public static void main(String[] args) { // TODO Auto-generated method stub String s1 = "seoul"; String s2 = "seoul"; //상수풀에 동일한 객체가 존재하면 해당 문자열의 주소를 반환 String s3 = new String("seoul"); //새로운 객체를 생성하여 문자열을 설정 System.out.println(s1); System.out.println(s2); System.out.println(s3); System.out.println(s1==s2); //true : 주소비교, 동일한 객체 System.out.println(s1==s3); // false : 주소비교, 동일한 객체가 아님 //동일한 객체는 해쉬코드가 같지만 해쉬코드가 같다고 같은 객체는 아님 System.out.println("s1 : " + s1.hashCode()); System.out.println("s2 : " + s2.hashCode()); System.out.println("s3 : " + s3.hashCode()); //문자열은 불변 //즉, 문자열이 변경되면 기존의 문자열을 변경하는 것이 아니라 //새로운 메모리를 할당 받아서 처리함. s1 += "korea"; System.out.println(s1); // seoulkorea System.out.println(s2); // seoul } }
String 문자열 비교와 주소 비교 방법
package ex0719; public class Ex10_String { public static void main(String[] args) { // TODO Auto-generated method stub String s1 = "seoul"; String s2 = new String("seoul"); // 객체의 ==는 주소를 비교 System.out.println(s1 == "seoul"); //true System.out.println(s2 == "seoul"); // false //주소가 아닌 문자열을 비교 // String의 equals() : Object 클래스의 equals() 메소드를 재정의한 메소드로 문자열을 비교 System.out.println(s1.equals("seoul")); //true 문자열 비교 System.out.println(s2.equals("seoul")); //true 문자열 비교 } }
주소 비교할때 ==
문자열 비교할때 equals 사용
substring(문자열 추출)
startsWith(특정 문자열로 시작하는지 판단)
endsWith(특정 문자열로 끝나는지 판단)
compareTo(사전식 비교)
package ex0719; public class Ex11_String { public static void main(String[] args) { // TODO Auto-generated method stub // String 메소드 String s = "seoul korea"; String s2; int n; n = s.length(); System.out.println("문자열 길이 : " + n); //6번째 인덱스 부터 8번째 인덱스의 문자열 추출(인덱스는 0부터 시작) s2 = s.substring(6,9); // substring(s,e) => s인덱스에서 i-1 인덱스까지 문자열 추출 System.out.println("특정 위치의 문자열 추출 : " + s2); //6번째 인덱스부터 마지막까지 문자열 추출 s2 = s.substring(6); System.out.println("특정 위치부터 마지막 까지 : "+s2); //특정 위치의 한문자 추출 char c = s.charAt(6); System.out.println("한문자 : "+c); //문자열 비교 System.out.println(s.equals("seoul korea")); // true System.out.println(s.equals("Seoul korea")); //대소문자 비교함 S라서 안됨 false System.out.println(s.equalsIgnoreCase("Seoul korea")); //true 대소문자 구분 안함 //문자열이 특정 문자열로 시작하는지 판단 System.out.println(s.startsWith("seoul")); // true //문자열이 특정 문자열로 끝나는지 판단 System.out.println(s.endsWith("korea")); //true //문자열은 >,<,==으로 크기를 비교할 수 없다. // 특정 문자열과 크기 비교 // 문자열을 사전식으로 비교하여 차이를 반환 (아스키 코드 차이) System.out.println(s.compareTo("seoul corea")); //8('k' - 'c') } }
이름을 입력 받아 김씨의 인원수 출력. 입력 받은 입력이 end, End, END 등이면 인원수를 출력하고 종료
package ex0719; import java.util.Scanner; public class Ex12_String { public static void main(String[] args) { // 이름을 입력 받아 김씨의 인원수 출력. 입력 받은 입력이 end, End, END 등이면 인원수를 출력하고 종료 Scanner sc = new Scanner(System.in); int cnt = 0; String name; while(true) { System.out.print("이름 ?"); name = sc.next(); if(name.equalsIgnoreCase("end")) { break; } if(name.startsWith("김")) { cnt++; } } System.out.println("김씨 인원수 : " + cnt); sc.close(); } }
equalsIgnoreCase = 문자열 비교지만 대소문자 무시하고 비교한다
"end"라는 문자열을 비교한다고 했을때 end, END, eNd, 등 대소 문자 구분하지 않고 비교를 한다.
인덱스 찾기 / 문자열 대체
package ex0719; public class Ex13_Stirng { public static void main(String[] args) { // 인덱스 찾기 / 문자열 대체 String s = "seoul korea"; String s2; int n; //indexof() = 특정 문자 또는 문자열이 문자열에서 몇번째 존재하는지 인덱스 0부터 반환 // 0: 처음에 위치, 없으면 -1 n = s.indexOf("kor"); System.out.println(n); n = s.indexOf("KOR"); System.out.println(n); n = s.indexOf("o"); System.out.println(n); n = s.indexOf("o",3); System.out.println(n); n = s.lastIndexOf("o"); System.out.println(n); s = "우리나라 대한민국 대한독립 만세"; s2 = s.replaceAll("대한", "大韓"); // 정규식 사용 가능 System.out.println(s2); s2 = s.replace("대한", "大韓"); //정규식 사용 불가 System.out.println(s2); s = "우리 123 나라 456 대한"; // 정규식 패턴 = \\d = 숫자, \\s = 공백, \\w = 영문자,숫자, | = 또는 s = s.replaceAll("\\d|\\s", ""); //정규식 이용하여 숫자 또는 공백 제거 System.out.println(s2); // 0-9 : 숫자 s2 = s.replaceAll("[0-9]", ""); System.out.println(s2); s = "우리 12나라 ab대한HT민국"; //영문자만 없애려면? s2 = s.replaceAll("[A-Za-z]", ""); System.out.println(s2); s = "우리 12나라 ab대한HT민국"; //영문자 숫자 다 없애려면? s2 = s.replaceAll("[A-Za-z0-9]", ""); System.out.println(s2); s = "우리 12나라 ab대한HT민국"; //영문자 숫자 다 없애려면? s2 = s.replaceAll("\\w", ""); System.out.println(s2); s = "우리 12나라 ab대한HT민국"; //영문자 숫자 대한 없애려면? s2 = s.replaceAll("(\\w)|[대한]", ""); System.out.println(s2); } }
indexOf() = 특정 문자 또는 문자열이 문자열에서 몇번째 존재하는지 인덱스 0부터 반환
만약 없다면 -1을 반환한다.
s2 = s.replaceAll("대한", "大韓");
s 문자열의 모든 "대한"을 한자로 바꾼다.
s = s.replaceAll("\\d|\\s", "") // | << 또는
정규식 사용해서 숫자 또는 공백을 제거한다
영문자나 숫자는 \\w이다
package ex0719; public class Ex14_String { public static void main(String[] args) { // TODO Auto-generated method stub String p, s; p = "\\d{1,3}"; // 1~3자 이내의 숫자 s = "123"; System.out.println(s.matches(p)); // 정규식 패턴에 일치하는 반환 일치하면 true s = "1234"; System.out.println(s.matches(p)); // false; p = "^[가-힣]+$"; // ^ = 시작(대괄호 밖에 있을경우) / $ = 끝 / + = 하나 이상 (한자 이상의 한글만 가능) s = "홍ㅋ나"; System.out.println(s.matches(p)); s = "홍길동"; System.out.println(s.matches(p)); p = "^010-\\d{4}-\\d{4}$"; s = "010-1111-1111"; System.out.println(s.matches(p)); //true // 숫자가 아닌것은 모드 *로 변환 s= "우리 12 abc 67 & 79"; s = s.replaceAll("[^0-9]", "*"); // [^] : 반대 (대괄호 안에있으면 반대) 0-9가 아닌 나머지들 이라는 뜻 //숫자 빼고 다 지워라 System.out.println(s); } }
.matches() 정규식 패턴에 일치하면 true 반환
p = "^[가-힣]+$";
^ = 시작(대괄호 밖에 있을경우) / $ = 끝 / + = 하나 이상 (한자 이상의 한글만 가능)
// 숫자가 아닌것은 모두 *로 변환
s= "우리 12 abc 67 & 79";
s = s.replaceAll("[^0-9]", "*"); // [^] : 반대 (대괄호 안에있으면 반대) 0-9가 아닌 나머지들 이라는 뜻
//숫자 빼고 다 지워라package ex0719; public class Ex15_String { public static void main(String[] args) { // TODO Auto-generated method stub String s; s = " 자 바 "; System.out.println(":"+s+":"); System.out.println(":"+s.trim()+":"); //왼쪽과 오른쪽 공백 제거 System.out.println(":"+s.replaceAll("\\s", "")+":"); int n=30; // s=n; 컴파일 오류 // s = "" + n; // 정수를 문자열로 s = Integer.toString(n); System.out.println(s); n = 123456; s = String.format("%,d", n); //서식에 맞추어 문자열로 변환 // printf 와 사용법이 유사 System.out.println(s); // 123,456 s = "자바, 스프링, 오라클, HTML"; String[] ss = s.split(","); // 특정 패턴으로 문자열을 분리하여 배열로 반환 for(String a:ss) { System.out.println(a); } s = "KOREA"; byte[] bb = s.getBytes(); // 문자열의 아스키 코드값을 byte 배열로 반환 for(byte b : bb) { System.out.println(b); } } }
String.format << 서식에 맞추어 문자열로 변환
.split() << 특정 패턴으로 문자열을 분리
.getBytes() << 문자열의 아스키 코드값을 Byte로 변환
수식을 입력 받아 계산하는 프로그램
package ex0719; import java.util.Scanner; public class Ex16_String { public static void main(String[] args) { /* 수식을 입력 받아 계산하는 프로그램 * 실행 예 * 수시 ? 13 * 3 * 13 * 3 = 39 * 수식에는 부호없는 양수만 입력 한다는 가정하에 문제를 해결한다. * 연산자는 +,-,*,/ 만 가능하다. */ Scanner sc = new Scanner(System.in); String input; System.out.print("수식(3+5) ? "); input = sc.next(); // \\+ : + 문자열 자체를 나타냄(\\+ = +) if(! input.matches("^\\d+[\\+\\-\\*\\/]\\d+$")) { //처음에^ 숫자가\\d 하나이상 와야함 긜고 부호가 들어와야함 System.out.println("입력 형식 오류..."); sc.close(); return; // main을 빠져나감 프로그램 종료 } for(String op:new String[] {"+","-","*","/"}) { int pos = input.indexOf(op); //System.out.println(op + ":" + pos); if(pos > 0) { /* System.out.println(pos); System.out.println(input.charAt(pos)); System.out.println(input.substring(0,pos)); System.out.println(input.substring(pos+1)); */ int n1 = Integer.parseInt(input.substring(0,pos)); int n2 = Integer.parseInt(input.substring(pos+1)); int result = 0; switch(op) { case "+" : result = n1+n2; break; case "-" : result = n1-n2; break; case "*" : result = n1*n2; break; case "/" : result = n1/n2; break; } System.out.println(input + "=" + result); break; } } sc.close(); } }
//+ << 문자열 자체를 나타냄 곧 + 라는 뜻
1~100까지 수를 한줄에 10개씩 출력
숫자 중에서 3,6,9가 있는경우 해당 숫자 만큼 "*"만 출력한다.
1 2 * 4 5 * 7 8 * 10package ex0719; public class Ex17_String { public static void main(String[] args) { // 1~100까지 수를 한줄에 10개씩 출력 // 숫자 중에서 3,6,9가 있는경우 해당 숫자 만큼*만 출력한다. // 1 2 * 4 5 * 7 8 * 10 String s; for(int i=1; i<=100; i++) { //정수를 문자열로 변환 s=Integer.toString(i); // 3,6,9를 *로 치환 s = s.replaceAll("[369]", "*"); // *가 존재하면 숫자를 제거 if(s.indexOf("*")!=-1) { s = s.replaceAll("\\d", ""); } // 출력 System.out.printf("%5s",s); //문자열 5칸으로 찍어라 if(i%10 == 0) { System.out.println(); } } } }
통장 번호 늘리기 메소드
package ex0719; public class Ex18_String { public static void main(String[] args) { // 통장 번호 늘리기 String s; Test18 tt = new Test18(); // 마지막 7자리 다음의 문자열 만들기 s = "020-08-0000171"; System.out.println(s); s = tt.bankNum(); System.out.println(s); //020-08-0000172 s = tt.bankNum(); System.out.println(s); //020-08-0000173 } } class Test18 { // 마지막 7자리 다음의 문자열 만들기 private String bnum = "020-08-0000171"; public String bankNum() { String s1 = bnum.substring(0,bnum.lastIndexOf("-")+1); String s2 = bnum.substring(bnum.lastIndexOf("-")+1); int n = Integer.parseInt(s2) + 1; bnum = s1 + String.format("%07d", n); // %07d = 남는 자리는 0으로 채운다 return bnum; } }
정수를 입력받아서 몇자리 정수인지 출력
package ex0719; import java.util.Scanner; public class Ex19_String { public static void main(String[] args) { // 정수를 입력받아서 몇자리 정수인지 출력 Scanner sc = new Scanner(System.in); int n; System.out.print("정수 ? "); n = sc.nextInt(); String temp; if(n>0) { temp = Integer.toString(n); } else { temp = Integer.toString(n*-1); //음수면 양수로 바꾸려고 -1 곱함 } System.out.println(n + ":" + temp.length()+"자리 정수"); sc.close(); } }
package ex0719; import java.util.Arrays; public class Ex20_String { public static void main(String[] args) { // 사전식 배열 String[]ss = {"서울","부산","대구","인천","광주","대전","울산","세종"}; System.out.print("source data : "); print(ss); Arrays.sort(ss); System.out.print("sort data : "); print(ss); } public static void print(String[] ss) { for(String s : ss) { System.out.print(s+" "); } System.out.println(); } public static void bubbleSort(String[] ss) { boolean flag = true; String temp; for(int i=1; flag; i++) { flag = false; for(int j=0; j<ss.length-i; j++) { if(ss[j].compareTo(ss[j+1]) > 0) { // compareTo() : 사전식 배열, 차이를 아스키 코드로 변환 temp = ss[j]; ss[j] = ss[j+1]; ss[j+1] = temp; flag = true; } } } } }
입력 받은 문자열 중 대소문자를 구분하지 않고 abc로 시작하는 문자열의 수
package ex0719; import java.util.Scanner; public class Ex21_String { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String s; int cnt = 0; while(true) { System.out.println("문자열[end=종료]"); s = sc.next(); if(s.equalsIgnoreCase("end")) { break; } //입력 받은 문자열 중 대소문자를 구분하지 않고 abc로 시작하는 문자열의 수 if(s.toLowerCase().indexOf("abc")==0) { cnt++; } } System.out.println("abc로 시작하는 문자열 수 : " + cnt); sc.close(); } }
StringBuilder, StringBuffer : 가변적인 문자열을 처리하는 경우 String 보다 처리 속도가 빠르다.
// StringBuilder : 동시성 지원하지 않음 (StringBuffer 보다 속도 빠름)
// StringBuffer : 동시성 지원 동시성의 문제가 발생하는 경우 사용
// 가변적인 문자열을 처리하는 경우가 아니면 String 을 사용한다.
// StringBuffer 나 StringBuilder는 일반적으로 마지막에 String으로 변환되어 사용된다.package ex0719; public class Ex22_StringBuffer { public static void main(String[] args) { // StringBuilder, StringBuffer // : 가변적인 문자열을 처리하는 경우 String 보다 처리 속도가 빠르다. // StringBuilder : 동시성 지원하지 않음 (StringBuffer 보다 속도 빠름) // StringBuffer : 동시성 지원 동시성의 문제가 발생하는 경우 사용 // 가변적인 문자열을 처리하는 경우가 아니면 String 을 사용한다. // StringBuffer 나 StringBuilder는 일반적으로 마지막에 String으로 변환되어 사용된다. StringBuffer sb1 = new StringBuffer("seoul"); StringBuffer sb2 = new StringBuffer("seoul"); System.out.println(sb1); System.out.println(sb2); System.out.println(sb1==sb2); //false 주소 비교 System.out.println(sb1.equals(sb2)); //false 주소 비교 // 문자열을 비교하기 위해서는 String으로 변환하여 비교해야함 System.out.println(sb1.toString().equals(sb2.toString())); StringBuffer sb3 = new StringBuffer(); System.out.println("초기 버퍼 크기: " + sb3.capacity()); //15 sb3.append("java"); // 새로 메모리를 할당하지 않고 기존 메모리에 추가 sb3.append("oracle"); sb3.append("spring"); sb3.append("html"); sb3.append("css"); sb3.append("대한민국"); sb3.append("우리나라"); System.out.println("버퍼 크기 : " + sb3.capacity()); //34 버퍼 크기가 자동으로 증가 System.out.println(sb3); System.out.println("문자열 길이 : " + sb3.length()); // 31 } }
String 처리 속도 차이
package ex0719; public class Ex23_String_time { public static void main(String[] args) { // String 처리 속도 차이 Test23 ob = new Test23(); ob.stringTime(); ob.stringBufferTime(); } } class Test23 { public void stringTime() { System.out.println("\nString..."); long start = System.currentTimeMillis(); //시스템 시간을 밀리 세컨드 단위로 출력 String s = "a"; for(int i=0; i<100000; i++) { s += "a"; //가변 처리 안좋은거 } long end = System.currentTimeMillis(); System.out.println("길이 : "+ s.length() + ", 처리시간 :" +(end-start)+"ms"); } public void stringBufferTime() { System.out.println("\nStringBuffer..."); long start = System.currentTimeMillis(); StringBuffer sb = new StringBuffer("a"); for(int i=0; i<100000; i++) { sb.append("a"); } long end = System.currentTimeMillis(); System.out.println("길이 : "+ sb.length() + ", 처리시간 :" +(end-start)+"ms"); } }
차이가 꽤 많이 난다. 반응형'프로그래밍 > JAVA 자바' 카테고리의 다른 글
기타 API (0) 2021.07.22 Calendar API / StringBuilder (0) 2021.07.21 접근 제한자 / 성적 처리 코드 (0) 2021.07.19 참조 변수/ 생성자 / 생성자의 this문 / getter setter (0) 2021.07.16 메소드 정리, 재귀호출 (0) 2021.07.15