반응형

           

  JAVA Study






1. 배열(array) 
 

- 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것


- 저장공간이 연속적으로 배치되어 있음


- 배열의 선언

: 원하는 타입의 변수를 선언하고 대괄호를 붙임 ( ex. int[] arr;  int arr[]; )


- 배열의 생성

: 연산자 'new'와 함께 배열의 타입과 길이 지정 ( ex. int[] arr = new int[5]; )


배열의 요소 : 생성된 배열의 각 저장공간


- 인덱스

: 배열의 요소마다 붙여진 일련번호, 0부터 '배열길이-1'까지 

: 인덱스로 상수 대신 변수나 수식도 사용가능하다

for(int i=0; i<5; i++) {

score[i] = i*10;

 }

: 인덱스 범위를 벗어난 값을 인덱스로 사용하면 실행 시 에러 발생


- 배열의 길이

: 배열의 요소개수, 저장 가능한 공간의 개수

: 양의 정수로 작성해야 함

: 길이가 0인 배열 생성 가능


- 배열이름,length

: JVM이 모든 배열의 길이를 별도로 관리하며, '배열이름.length'를 통해 배열 길이 정보를 얻을 수 있음

: 배열은 생성 후 길이변경이 안되므로 '배열이름.length'는 상수


- 배열 길이 변경

: 배열에 저장공간이 부족할 경우 더 큰 길이의 새로운 배열 생성 후 기존배열의 값을 복사

: 기존 배열길이의 2배 정도의 길이로 생성하는 것이 유용


- 배열의 초기화

: 생성과 동시에 자동적으로 자신의 타입에 해당하는 기본값으로 초기화 됨     ( 변수 타입 별 기본값 확인하기 http://keepitupjk.tistory.com/231 )


: 배열의 생성과 초기화를 동시에 한 예

int[] score = new int[] {5,6,7,8,9}; 

int[] score = {5,6,7,8,9};  (new int[] 생략 가능)


: 매개변수로 배열을 받는 메서드를 호출할 경우 'new int[]'를 생략할 수 없음

int add( int[] arr ) { 메서드 내용  }

int result = add ( new int[] {1,2,3,4,5} );


- 배열의 출력

: Arrays.toString(배열이름)' 메서드 사용

int[] Arr = {1,2,3,4,5};

System.out.println( Arrays.toString (Arr) );  ( 타입@주소 형식으로 출력 )


char[] chArr={'a','b','c'};

System.out.printlnArrays.toString (chArr) ); (abc 출력) 


- 배열의 복사

: 기존 배열길이의 두배 긴 배열 생성 후 내용 복사

int [] arr = new int [5];


int[] tmp = new int [arr.length * 2];     (기존 보다 2배 긴 배열 생성)


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

tmp [i] = arr[i];    (arr[i]의 값을 tmp[i]에 저장)

}

arr = tmp;    (참조변수 arr이 새로운 배열을 가리키게 함

: System.arraycopy()를 이용해 지정된 범위의 값을 한번에 통째로 복사

System.arraycopy ( arr, 0 , tmp, 0, num.length);   (num[0] 에서 tmp[0]으로 num.length개 만큼 복사)


- 버블정렬 알고리즘 (bubble sort)

: 크기 순으로 배열 정렬

for( int i=0; i<numArr.length-1; i++ ){


changed = false;  // 매 반복마다 changed를 false로 초기화


for( int j=0; j<numArr.length-1-i; j++ ){

if ( numArr[j] > numArr[j+1] ){ // 왼쪽 값이 크면 자리를 바꿈

int tmp = numArr[j];

numArr[j] = numArr[j+1];

numArr[j+1] = tmp;


changed = true; // 자리바꿈 발생 시 true변환

}

}


if (!changed) break; // 자리바꾸면 반복문 탈출


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

System.out.print(numArr[k];  //정렬 결과 출력

System.out.println();

}



2. String배열
 

- String 배열 생성

String[] name = new String[3];


- String 배열 초기화

String[] name = new String[3];

name[0] = "kim";

name[1] = "Lee";

name[2] = "park";


String[] name = new String[]{"kim","Lee","park"};

String[] name = {"kim","Lee","park"};


- 참조형 배열의 경우 객체의 주소를 배열에 저장함


- String 클래스는 char 배열에 메서드를 추가한 것


- String 객체(문자열)는 읽기만 가능, 내용변경 불가


- String 클래스 주요 메서드

 메서드

설명 

char charAt(int index) 

문자열에서 해당 위치(index)에 있는 문자 반환 

 int length()

문자열 길이 반환 

String substring(int from,int to) 

문자열에서 해당범위(from~to바로 앞까지) 문자열 반환 

 boolean equals(String str)

문자열 내용이 같은지 확인, 같으면 true, 다르면 false 

char[] toCharArray() 

문자열을 문자배열(char[])로 변환해서 반환 


- char배열과 String 클래스의 변환

char chArr={'A','B','C'};

String str = new String(chArr);  // char -> String

char[] tmp = str.toCharArray(); // String-> char
 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class tistory {
 
    public static void main(String[] args) {
        
        String  src = "ABCDE";
        
        for(int i=0; i<src.length; i++){
            char ch = src.charAt(i); // src의 i번째 문자를 ch에 저장
            System.out.println("src.charAt("+i+"):" + ch);
        }
 
        // String을 char[]로 변환
        char[] chArr = src.toCharArray();
 
        // char배열(char[])을 출력
        System.out.println(chArr);
    }
}
cs



3. 다차원 배열
 

- 2차원 배열 선언

: 타입[][] 변수이름; int[][] abc;

  int[][] abc = new int[3][5];

: 각 요소에 접근하는 방법은 'abc[행 index] [열 index]'


- 2차원 배열 초기화

: int[][] abc = {{1,2,3,4,5},{10,20,30,40,50},{100,200,300,400,500}};


- for문을 통한 2차원 배열 초기화

for(int i=0; i<abc.length; i++){ // 행 index 값

for(int j=0; j<abc[i].length; j++){ // 열 index 값

abc[i][j] = 10; //모든 값을 10으로 초기화

}

}


- 가변배열

: 다차원 배열 생성 시 전체 배열 차수 중 마지막 차수의 길이를 지정하지 않고, 각기 다른 길이의 배열을 생성함으로 유동적 가변배열을 구성

int[][] score = new int[5][]; // 열의 개수 설정 안함

score[0] = new int[4]; // 행 0번에 열 4개생성

score[1] = new int[3]; // 행 1번에 열 3개생성

score[2] = new int[4]; // 행 2번에 열 4개생성

score[3] = new int[2]; // 행 3번에 열 2개생성

score[4] = new int[1]; // 행 4번에 열 1개생성


int[][] score = {

{1,2,3,4}, 

{1,2,3},

{1,2,3,4},

{1,2},

{1}

};





자바의 정석 저자 강의

- 배열



반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] 6 객체지향 프로그래밍1  (0) 2017.07.05
[JAVA] 배열 예제  (0) 2017.07.04
[JAVA] 제어구조 예제 6 - while문  (0) 2017.07.02
[JAVA] 제어구조 예제 5 - for문  (0) 2017.07.01
[JAVA] 제어구조 예제 4 - switch문  (1) 2017.06.30
반응형

세상에 나쁜개는 없다
탈출을 꿈꾸는 개남매










반응형
반응형

           

  JAVA Study





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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import java.util.Scanner;
 
public class tistory {
 
    public static void main(String[] args) {
        // while문
        int i=5;
        
        while(i--!=0){ // i를 1씩 감소시켜 0이 아니면 다음 문장 실행
            System.out.println(i+" - I can do it");
        } // i--가 후위형 이므로 조건식이 평가된 후에 i값이 감소 -> 4~0까지 출력
        
        // 카운트 다운
        int j = 11;
        
        System.out.println("카운트다운 시작");
        
        while(j--!=0){
            System.out.println(j);
            
            for(int k=0; k<2_000_000_000;k++){
                ; // 아무 내용 없는 빈 문장
            }
        }
        System.out.println("GAME OVER");
        
        // 사용자가 입력한 숫자 , 각 자리의 합을 구하는 예
        int num = 0, sum = 0;
        System.out.print("숫자를 입력하세요>>");
        
        Scanner scn = new Scanner(System.in);
        String tmp = scn.nextLine();
        num = Integer.parseInt(tmp);
        
        while(num!=0){
            sum +=( num%10); //num을 10으로 나눈 몫을 계속 더해 sum에 저장
            num = num/10// num값 재설정
        }
        System.out.println("각 자리수의 합 : "+sum);
        
        //do-while문
        int input1 = 0, answer1 = 0;
        
        answer1 = (int)(Math.random() * 100+1;
        Scanner scn1 = new Scanner(System.in);
        
        do{
            System.out.println("1과 100사이 정수를 입력하세요>");
            input1 = scn1.nextInt();
            
            if(input1 > answer1){
                System.out.println("더 작은 수로 다시 시도해보세요");
            } else if(input1 < answer1){
                System.out.println("더 큰 수로 다시 시도해보세요");
            }
        } while (input1 != answer1);
            System.out.println("정답입니다.");
        
            
        //break 문
        int s = 0;
        int a = 0;
        
        while (true){
            if(s<100)
                break;
            ++a;
            sum += a;
        }
        
        System.out.println("a="+a);
        System.out.println("sum="+sum);
        
        //continue문
        int menu = 0;
        int number = 0;
        
        Scanner scanner = new Scanner(System.in);
        while(true){
            System.out.println("(1) square");
            System.out.println("(2) square root");
            System.out.println("(3) log");
            System.out.print("원하는 메뉴(1~3)를 선택하세요.(종료 : 0)");
            
            String temp = scanner.nextLine();
            menu = Integer.parseInt(temp);
            
            if (!(1<=menu && menu <=3)){
                System.out.println("메뉴를 잘못 선택했어요.(종료 : 0)");
                continue
            } else if(menu == 0){
                System.out.println("프로그램을 종료합니다.");
                break;
            }
            
            System.out.println("선택하신 메뉴는 " + menu +"번 입니다.");
        }
    
    }
}
 
cs
반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] 배열 예제  (0) 2017.07.04
[JAVA] 5 배열 (Array)  (0) 2017.07.03
[JAVA] 제어구조 예제 5 - for문  (0) 2017.07.01
[JAVA] 제어구조 예제 4 - switch문  (1) 2017.06.30
[JAVA] 제어구조 예제 3 - if문  (0) 2017.06.29
반응형

           

  JAVA Study






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
71
72
73
74
75
import java.util.Scanner;
 
public class tistory {
 
    public static void main(String[] args) {
        // for문
        for(int i=1; i<=5; i++){
            System.out.print(i); //i의 값 12345 출력
        }
        
        int sum=0;
        for(int i=1; i<=10; i++){
            sum+=i;
        }
        System.out.println(sum); // 1~10까지의 합 출력
        
        // 중첩 for문
        int num=0;
        
        System.out.println("*을 출력할 라인의 수를 입력하세요>");
        
        Scanner scn = new Scanner(System.in);
        int number = scn.nextInt();
        
        for(int i=0; i<number;i++){ // 입력한 라인을 출력하기 위한 for문
            for(int j=0; j<=i; j++){ // *을 반복출력하기 위한 for문
                System.out.print("*");
            }
                System.out.println();
        }
    
        // 구구단 
        for(int i=2; i<10; i++){
            for(int j=2; j<10; j++){
                System.out.println(i+" * "+j+" = "+(i*j));
            }
        }
        
        // 배열
        for(int i=1; i<5; i++){ // 행
            for(int j=1; j<5; j++){ // 열
                 System.out.printf("["+i+","+j+"]");
            }
            System.out.println();
        }
        
        for(int i=1; i<=5; i++){
            for(int j=1;j<=5; j++){
                if (i==j){
                    System.out.printf("["+i+","+j+"]");
                } else {
                    System.out.print("     ");
                }
            }
            System.out.println();
        }
        
        // 향상된 for문
        int[] arr = {1,2,3,4,5};
        int sum1=0;
        
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        
        for(int tmp : arr){
            System.out.println(tmp);
            sum1+=tmp;
        }
        
        System.out.println("sum1 = "+sum1);
        
    }
}
 
cs
반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] 5 배열 (Array)  (0) 2017.07.03
[JAVA] 제어구조 예제 6 - while문  (0) 2017.07.02
[JAVA] 제어구조 예제 4 - switch문  (1) 2017.06.30
[JAVA] 제어구조 예제 3 - if문  (0) 2017.06.29
[JAVA] 제어구조 예제 2  (0) 2017.06.28
반응형

세상에 나쁜개는 없다
두 얼굴의 사나이 콩돌



이렇게 천사같은 얼굴로 무서운 이중인격을 보여주는 콩돌!!

갓형욱훈련사님은 어떤 솔루션을 보여줄까요??











반응형
반응형

세상에 나쁜개는 없다
식탐왕 멍군이



다이어트를 위해 매일 두시간씩 산책하는 식탐왕 멍군이
두시간이나 산책하는데 왜 살이 안빠지는지 영상으로 확인할까요??








반응형
반응형

           

  JAVA Study





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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
public class tistory {
 
    public static void main(String[] args) {
        
        //switch 문
        System.out.print("현재 월을 입력하세요>>");
        
        Scanner scn = new Scanner(System.in);
        int month = scn.nextInt();
 
        switch(month){
            case 3:
            case 4:
            case 5:
                System.out.println("현재 계절은 봄입니다.");
                break;
            case 6case 7:    case 8:
                System.out.println("현재 계절은 여름입니다.");
                break;
            case 9case 10case 11:
                System.out.println("현재 계절은 가을입니다.");
                break;
            default:
            //case 12: case 1: case 2:
                System.out.println("현재 계절은 겨울입니다.");
        }
 
 
        //switch 문
        System.out.print("가위 (1), 바위 (2), 보 (3) 중 하나를 입력하세요>>");
        
        Scanner scn1 = new Scanner(System.in);
        int user = scanner.nextInt(); // 화면으로 입력받은 값을 user에 저장
        int com = (int)(Math.random() * 3)+1// 1,2,3 중 하나가 com에 저장    
        
        System.out.println("당신은 "+user);
        System.out.println("컴은 "+com);
 
        switch(user-com){
 
            case 2case -1:
                System.out.println("당신이 졌음");
                break;
            case 1case -2:
                System.out.println("당신이 이겼음");
                break;
            case 0
                System.out.println("비겼음");
                break;
        
        }
 
        //switch 문
        System.out.print("당신의 주민번호를 입력하세요.(011234-1111222)>>");
 
        Scanner scn2 = new Scanner(System.in);
        String regNo = scn2.nextInt();
 
        char gender = regNo.charAt(7);
        
        switch(gender) {
 
            case '1'case '3':
                System.out.println("당신은 남자");
                break;
            case '2'case '4':
                System.out.println("당신은 여자");
                break;
            default : 
                System.out.println("유효하지 않은 주민번호 입니다.");
        }
 
        //switch문 중첩
        System.out.print("당신의 주민번호를 입력하세요.(011234-1111222)>>");
        
        Scanner scn3 = new Scanner(System.in);
        String regNo3 = scn3.nextInt();
        char gender3 = regNo3.charAt(7);
        
        switch(gender3) {
            case '1'case '3':
                    
                    switch(gender3){
                        case'1' :
                        System.out.println("당신은 2000년 이전 출생 남자");
                        break;
                        case'3' :
                        System.out.println("당신은 2000년 이후 출생 남자");
                        break;
                    }                
 
            break;
            case '2'case '4':
 
                    switch(gender3){
                        case'2' :
                        System.out.println("당신은 2000년 이전 출생 여자");
                        break;
                        case'4' :
                        System.out.println("당신은 2000년 이후 출생 자");
                        break;
                    }
 
            break;
            default : 
                System.out.println("유효하지 않은 주민번호 입니다.");
        }
 
    }
}
cs
반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] 제어구조 예제 6 - while문  (0) 2017.07.02
[JAVA] 제어구조 예제 5 - for문  (0) 2017.07.01
[JAVA] 제어구조 예제 3 - if문  (0) 2017.06.29
[JAVA] 제어구조 예제 2  (0) 2017.06.28
[JAVA] 제어구조 예제 1  (0) 2017.06.27
반응형

세상에 나쁜개는 없다
꼬리 무는 개 똘이














반응형

+ Recent posts