14일차 강의 정리


StringBuffer 클래스 (StringBuilder도 동일)

*StringBuffer 와 StringBuilder의 차이점 : StringBuffer 는멀티 쓰레드 상태에서 동기화를 지원

1. 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Ex01 {
    public static void main(String[] args) {
        //String Buffer 클래스
        StringBuffer sb =new StringBuffer("java");
        StringBuffer sb2 = sb.append("World");        //sb에 붙여서 sb2 새로선언
        sb.append("자바");                            //sb에 추가
        
        System.out.println(sb2);
        System.out.println("--------------------");
 
        //StrtingBuffer 와 비교
        String st = new String("java");
        String st2 = st.concat("World");              //st에 붙여서 st2 새로선언
        st.concat("자바");                            //st에 추가
 
        System.out.println(st2);
        System.out.println("--------------------");
    }//main end
}//class end
cs

결과

2. append()

1
2
sb.append(new char[]{'a','b','a'});
sb.append(123456);
cs

결과

3.  insert()

1
sb.insert(4"월드");        //4번째 글자뒤에 추가
cs

결과

4. replace() - 변경

1
sb.replace(46" world ");    //4번째에서 6번째 까지의 글자를 "__"로 변경
cs

결과

5. reverse() 

1
sb.reverse();                //거꾸로 출력
cs

결과

6. replace() - 삭제

1
sb.replace(911"");        //"바자" 를 지워
cs

결과

7. delete() - 6.과 동일

1
sb.delete(911);
cs



초기 버퍼 할당량 = 16

1
2
StringBuffer sb2 = new StringBuffer();
System.out.println("sb2 size: "+sb2.capacity());    //할당된 버퍼 사이즈 (기본:16)
cs

결과

소스

1
2
3
4
5
6
7
sb2.append("abc12");        //추가해줘도 16까지는 버퍼 사이즈는 변경되지않는다
sb2.append("abc12");
sb2.append("abc12");
sb2.append("a");        //17자가되면 버퍼 사이즈는 34(17*2)가 된다
    
System.out.println("------------------------");
System.out.println("sb2 size: " + sb2.capacity());    //할당된 버퍼 사이즈 (기본:16)
cs

결과

소스

1
2
3
4
5
6
7
sb2.append("abc12");        //추가해줘도 16까지는 버퍼 사이즈는 변경되지않는다
sb2.append("abc12");
sb2.append("abc12");
sb2.append("ab");        //17자가되면 버퍼 사이즈는 34(17*2)가 된다
    
System.out.println("------------------------");
System.out.println("sb2 size: " + sb2.capacity());    //할당된 버퍼 사이즈 (기본:16)
cs

결과

소스(16+초기값 버퍼 길이)

1
2
StringBuffer sb3 = new StringBuffer("abc");        //초기값 버퍼 길이 19(16+3)
System.out.println("sb3 size: "+sb3.capacity());
cs

결과

소스(앞뒤 공간 제거)

1
sb3.trimToSize();    //앞뒤공간 제거해서 버퍼 사이즈는 3으로 변경
cs

결과

소스(메모리 할당)

1
2
3
4
System.out.println("------------------------");
StringBuffer sb4 = new StringBuffer();
sb4.ensureCapacity(20);        //내가 원하는 메모리 할당량(디테일하게는 x)
System.out.println(sb4.capacity());
cs

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY15 String " "기준으로 불러오기  (0) 2016.07.25
DAY14 Lotto(객체지향)  (0) 2016.07.25
DAY13 주민등록번호로 신분확인  (0) 2016.07.21
DAY13 String 2  (0) 2016.07.21
DAY13 String 1  (0) 2016.07.21

주민등록번호 입력 

jumin="901230-1837264" 로 입력받음


Q1. 정확히 입력했는지 확인(자릿수 확인, -입력확인)

Q2. 생년월일 출력

Q3. 성별을 확인하고 출력

Q4. 미성년자 확인

Q5. 나이 출력

Q6. 정확히 입력했는지 확인(공백처리, 정확한 숫자입력확인)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import java.util.Scanner;
 
public class Ex02 {
 
    static String myNum;
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        for(int i=0;i<5;i++){
            System.out.print("주민등록번호 입력(000000-0000000): ");
            myNum = sc.nextLine().trim();    //앞뒤 공백 제거
            
            String err = "정확하지가 않습니다.다시 입력해주세요";
            if(myNum.indexOf("-")!=6 || myNum.length()!=14){        //6번째 자리에 '-'가 없거나 총길이가 14개가 아니면 오류
                System.out.println(err);
            }else if(Integer.parseInt(myNum.substring(2,4))>12 || Integer.parseInt(myNum.substring(4,6))>31){    //월 12이상,일 31이상 일경우 오류
                System.out.println(err);
            }else if(Integer.parseInt(myNum.substring(7,8))>6){        //성별을 나타내는 숫자가 6이상이면 오류
                System.out.println(err);
            }
            else{
                birth();    //생년월일
                mf();        //성별
                bebe();        //미성년자 & 나이
                break;
            }
            if(i==4){
                System.out.println("종료합니다. 정확히 확인 후 다시 이용해 주십시오.");
            }
        }
    }//main end
    
    public static void birth(){    //생년월일 출력
        int y = 0;
        System.out.print("생년월일: ");
        System.out.println(myNum.substring(0,2)+"년"+myNum.substring(2,4)+"월"+myNum.substring(4,6)+"일");
    }//birth end
    
    public static void mf(){    //성별
        char c = myNum.charAt(7);
        
        System.out.print("성별: ");
        if(c=='1'||c=='3'){
            System.out.println("남자");
        }else if(c=='2'||c=='4'){
            System.out.println("여자");
        }else{
            System.out.println("외국인");
        }
    }//mf end
    
    public static void bebe(){        //미성년자확인 & 나이 출력
        int age = Integer.parseInt(myNum.substring(0,2));
                
        if(age<=16){
            age = Integer.parseInt(20+myNum.substring(0,2));    //년도가 16년보다 작으면 2000년대 출생
        }else{
            age = Integer.parseInt(19+myNum.substring(0,2));    //년도가 16년보다 크면 1900년대 출생
        }
        
        age = 2016-age+1;
        if(age>=19){
            System.out.println("성년 입니다.");
        }else{
            System.out.println("미성년자 입니다.");
        }
        System.out.println("나이: "+age);
    }//bebe end
}//class end
cs


결과

다른방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.util.Scanner;
 
public class Ex02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input=null;
        int cnt =0;
        boolean ck = false;
        while(cnt++<5){
            System.out.println("주민번호를 입력해주세요");
            System.out.println("\tex)901230-1837264");
            System.out.print(">>");
            input = sc.nextLine().trim();
            for(int i=0; i<input.length(); i++){
                if(i==6){continue;}
                switch (input.charAt(i)) {
                    case '0'case '1'case '2'case '3'case '4'
                    case '5'case '6'case '7'case '8'case '9':
                        if(i==0){ck=true;}else{ck = ck&&true;} break;
                    default : ck=false;
                } 
            }
            if(ck&&input.length()==14&&input.charAt(6)=='-'){break;}
            System.out.println(cnt+"회 입력이 잘못되셨습니다");
            if(cnt==5){return;}
            System.out.println("확인후 재입력 바랍니다\t");
        }
        System.out.println("당신의 생년월일:");
        String[] st = {"년","월","일"};
        String[] st2 = {"","",""};
        for(int i=0; i<6; i++){
            st2[i/2]+=input.charAt(i);
        }
        for(int i=0; i<st2.length; i++){
            st2[i]+=st[i];
        }
        for(int i=0; i<st2.length; i++){
            System.out.print(st2[i]);
        }
        System.out.println();
        System.out.print("당신의 성별은 ");
        if(input.charAt(7)=='1'){
            System.out.print("남자");
        }else if(input.charAt(7)=='2'){
            System.out.print("여자");
        }else{
            System.out.print("외계인");
        }
        System.out.println("입니다");
        int age=0;
        if(input.charAt(0)=='0'){
            age = 2016-(2000+(input.charAt(1)-'0'))+1;
        }else if(input.charAt(0)==1){
            age = 2016-(2000+10+(input.charAt(1)-'0'))+1;
        }else{
            age = 2016-(1900+(input.charAt(0)-'0')*10+(input.charAt(1)-'0'))+1;
        }
        System.out.println("당신의 나이는 "+age+"세 입니다");
        if(age<19){
            System.out.println("미성년자이시네요 담배,술 금지 입니다");
        }
    }
 
}
cs

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY14 Lotto(객체지향)  (0) 2016.07.25
DAY14 StringBuffer  (0) 2016.07.21
DAY13 String 2  (0) 2016.07.21
DAY13 String 1  (0) 2016.07.21
DAY13 학생 성적관리 프로그램  (0) 2016.07.21

13일차 강의 정리


소스

1
2
3
4
5
6
7
8
9
10
11
12
13
String st1 = "java";
String st2 = "world";
String st3 = new String("java ");
String st4 = new String("world");
 
System.out.println("java world"==st1+st2);    //'+'을 사용한 것은 새로운 객체를 만들어 내는것이다
System.out.println(st1.concat(st2));
System.out.println(st3+st4);
System.out.println(st3.concat(st4));    //'+'랑 같은 의미
System.out.println(st1==st3);
System.out.println(st1);
System.out.println(st3);
System.out.println(st1.equals(st3));    //call by value(레퍼런스)
cs

결과

소스2

1
2
3
4
5
6
7
char[] ch = {'j','a','v','a'};
String st7 = new String(ch,0,3);    //jav까지 출력
byte[] by = {65,66,67};
String st8 = new String(by);
 
System.out.println(st7);
System.out.println(st8);
cs

결과2

소스3

1
2
3
4
5
6
7
8
9
10
11
12
String d="java world";
char chr1=d.charAt(0);            //1번째 문자
 
System.out.println(chr1);
 
char chr2[] = {d.charAt(0),d.charAt(1),d.charAt(2),d.charAt(3)};    //문자열 d의 1,2,3,4번째 문자열을 배열에 저장
String st9 = new String(chr2);
 
System.out.println(st9);
System.out.println(d.codePointAt(0));    //106
System.out.println((char)106);            //j
System.out.println(d.compareTo("java worlc"));    //d와 c는 1개 차이라서 1출력된다(char 단위)
cs

결과3

소스4

1
2
3
4
5
6
7
8
9
10
11
12
char[] cha2={'a','b','c'};
String st10 = String.copyValueOf(cha2);    //char를 복사해서 문자열로 저장
 
System.out.println(st10);
System.out.println(st10.startsWith("bc"));    //"bc"로 시작하는가?(t/f)
 
byte[] by2 = st10.getBytes();
char[] ch11 = new char[cha2.length];
"java".getChars(02, ch11, 0);
for(int i=0;i<by2.length;i++){
    System.out.println((char)by2[i]);
}
cs

결과4


'* Programming > JAVA' 카테고리의 다른 글

DAY14 StringBuffer  (0) 2016.07.21
DAY13 주민등록번호로 신분확인  (0) 2016.07.21
DAY13 String 1  (0) 2016.07.21
DAY13 학생 성적관리 프로그램  (0) 2016.07.21
DAY12 Lotto구매하기 결과발표(static메소드)  (0) 2016.07.21

13일차 강의 정리


String st1="java";    //선언


1. hashCode() - value 를 참조하기 위한 Key가 되는 유일한 값

소스 - System.out.println(st1.hashCode());   

결과 - 3254818

2. indexOf("a",2) - 2의 위치 부터 시작해서 a를 찾아 자리번호를 출력, 문자가 없으면 -1이 출력

소스 - System.out.println(st1.indexOf("a",2));

결과 - 3

3. isEmpty() - st1이 비어있는지 확인

소스 - System.out.println(st1.isEmpty());

결과 - false

4. matches("java") - 매치 하는지 확인

소스 - System.out.println(st1.matches("java"));

결과 - true

5. replace('a', 'b') - 재배치 a->b로 바꿔준다

소스 - System.out.println(st1.replace('a', 'b'));

결과 - jbvb

6. replaceFirst("a", "b") - 첫번째 a만 바꿔준다

소스 - System.out.println(st1.replaceFirst("a", "b"));

결과 - jbva

7. substring(2) - 자리번호 2부터 출력(0부터 시작)

소스 - System.out.println(st1.substring(2));

결과 - va

8. substring(0,3) - 자리번호 0부터 3까지 출력

소스 - System.out.println(st1.substring(0,3));

결과 - jav

9. toCharArray() - 한글자씩 가져온다

소스 -    char[] ch = st1.toCharArray();

for(int i=0;i<ch.length;i++){

System.out.println(ch[i]);

}

결과 -    j

a

v

a


String st2 = "   ab cd EFG ";


10. toLowerCase() - 모두 소문자로

11. trim() - 문자의 앞뒤 공백 제거

소스 - System.out.println(st2.toLowerCase().trim());

결과 - ab cd efg

12. toUpperCase() - 모두 대문자로

소스 - System.out.println(st2.toUpperCase()); (공백제거 없음)

결과 -    AB CD EFG 

13. valueOf(i) - i=정수, 정수를 문자열로변경

소스 - int i = 100;

String a = String.valueOf(i)+1;

System.out.println(a);

결과 - 1001

'* Programming > JAVA' 카테고리의 다른 글

DAY13 주민등록번호로 신분확인  (0) 2016.07.21
DAY13 String 2  (0) 2016.07.21
DAY13 학생 성적관리 프로그램  (0) 2016.07.21
DAY12 Lotto구매하기 결과발표(static메소드)  (0) 2016.07.21
JAR로 export 하기  (0) 2016.07.19

학생의 명수와 그 명수에 해당하는 학생의 점수를 입력받아 총점과 평균을 계산하는 프로그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.util.Scanner;
 
public class Ex01 {
    final String ver;    //상수화
    public Ex01(){        //생성자
        ver = "2.0.0";
    }
    
    public static void main(String[] args) {
        Ex01 me = new Ex01();
        me.title();
        me.proStrt();
    }//main end
 
    public void title(){        //타이틀 출력
        System.out.println("-------------------------------------------");
        System.out.println("          학생성적관리(v"+ver+")");
        System.out.println("-------------------------------------------");
    }//title end
    
    public void proStrt(){
        Scanner sc = new Scanner(System.in);
        
        System.out.print("총학생의 수 : ");
        int tot = sc.nextInt();
        String[] sub = {"학번","국어","영어","수학","총점","평균"};
        int[][] stu = new int[tot][4];
        int num=0;
        //학생 점수 입력
        for(int j=0;j<stu.length;j++){
            stu[j][0]=++num;
            System.out.println(stu[j][0]+"번 학생 정보입력");
            for(int i=1;i<stu[j].length;i++){
                System.out.print(sub[i]+">>>");
                stu[j][i]=sc.nextInt();        //학생 점수 입력
            }
        }
        //학번과 과목이름 출력
        for(int i=0;i<sub.length;i++){
            System.out.print(sub[i]);    
            System.out.print("\t");
        }
        System.out.println();
        //점수와 총점, 평균 출력
        int sum=0;
        for(int m=0;m<stu.length;m++){
            sum=0;            //총점 초기화(다음학생의 총점을 위해)
            for(int n=0;n<stu[m].length;n++){
                if(n!=0){sum += stu[m][n];}        //학번을 제외하고 점수 총합
                System.out.print(stu[m][n]);    //출력
                System.out.print("\t");
            }
            System.out.println(sum+"\t"+(100*sum/3/100.0));        //총점과 평균 출력
        }
    }//proStrt end
}//class end

cs

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY13 String 2  (0) 2016.07.21
DAY13 String 1  (0) 2016.07.21
DAY12 Lotto구매하기 결과발표(static메소드)  (0) 2016.07.21
JAR로 export 하기  (0) 2016.07.19
DAY12 배열 문제  (0) 2016.07.19

+ Recent posts