Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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
Tags
more
Archives
Today
Total
관리 메뉴

붓, 그리다

배열 Array 본문

JAVA/Basic

배열 Array

붓그린 2017. 6. 16. 17:09

[ 배열 ]
- 같은 자료형의 변수들의 집합체
<-> 같은 자료형의 변수를 여러개 나열하면 메모리 상에 랜덤으로 설정
1) 변수 이름이 많아지면 관리상의 어려움
2) 처리속도가 느려질 수 있다
=> 이러한 단점을 보완하기 위해 배열을 사용

배열형식)

자료형 배열[]=new 자료형[n(개수)]
자료형 []배열=new 자료형[n(개수)] // 5)


1. 배열의 특징
1) 여러개 변수 이름을 하나로 통합 : 인덱스 번호를 사용

2) 자바에서 배열은 객체이다. 기본자료형이 아님, 객체형(=참조형)
     - 앞의 자료형 int를 보고 헷갈리면 안된다. []로 객체형!

int su[]=new int[3]; // 0,1,2
                su[0]=10; su[1]=20;
                System.out.println("su[1]=>"+su[1]);
                System.out.println("su[2]=>"+su[2]);

3) 지역변수의 경우, 변수 선언하고 값을 입력하지 않고 출력하면 에러
-> 초기화 설정이 안되어 있다고 에러

4) 배열 구성요소인 변수의 경우에는 초기값을 설정하지 않아도 에러가 나지 않는다.
-> 기본값이 적용

int = 0
double = 0.0
boolean = flase
String = null


5) 배열의 기호 []는 배열의 앞 또는 뒤에 위치할 수 있다.




2. 배열의 종류
1) 정적 배열
- 개수가 정해짐

int su[]=new int[3];

2) 동적 배열
- 데이터 값을 입력하면 자동으로 늘어난다.
- 자바의 컬렉션은 모두 동적배열

메인 메서드 분석)

public static void main(String[] args) {
                // TODO Auto-generated method stub
        }

- public : 접근지정자
- static : 정적(클래스) 메소드 : 처음부터 객체를 만들 수 없기에?
- void : 반환값이 없다
- main : 메서드
- String[] args : 자료형[]배열




3. 에러의 종류
1) 물리적 오류(컴파일 에러)
- 오타 

2) 논리적 오류
- 실행의 에러

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at j0602.ArgTest2.main(ArgTest2.java:8)

-> 값이 아직 저장이 되지 않았기에

- 동적으로 값을 표시(Run 메뉴 > Run Configurations > Arguments > Program Arguments)


- 배열의 첨자를 벗어났다는 에러

int su[]=new su[2]
su[0]=10, su[1]=20, su[2]=30

ArrayIndexOutOfBoundsException:0 
-> 존재하지 않은 인덱스 번호 사용시


- 메인 메소드의 자료형은 변경 불가

오류: j0602.ArgTest2 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오.
   public static void main(String[] args)
또는 JavaFX 애플리케이션 클래스는 javafx.application.Application을(를) 확장해야 합니다.





[ 1차원 배열 ] 
- 한쪽면만 나열

package j0602;
// 1차원 배열
public class ArrayTest2 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int b[]= {56,38,12,36,41,27,26,32,59,16,18,28,21,17};
                //20대가 몇명? (20~29)
                int count=0; // 20대 사람수를 기억할 변수 선언

                for(int i=0;i<b.length;i++)
                        if(b[i]>=20 && b[i]<=29) {
                                count++;
                                System.out.println("b["+i+"]= "+b[i]);
                        }
                System.out.println("20대 인원수(count) : "+count+"명");
        }

}





[ Scanner 클래스 ]
- java.utill 폴더에 ㅡ들어가 있다. (java.util.Scanner;)
- 외부의 패키지에 들어가 있는 다른 클래스를 참조해서 불러오고 (import)
형식)

import 최상위패키지명.하위캐피키지명...불러홀 클래스명 or (*)


- 라이브러리 : 자바자체에서 제공하는 패키지(rt.jar)


* 새로 나오는 클래스가 나오면 API(Shift+F2)로 메소드 확인
- 생성자(Constructor Summary)를 먼저 찾아 볼 것(객체를 생성하는 방법을 알 수 있다)


1) 키보드를 통해 값을 입력
- 문자열을 입력 : nextLine() or next();
- 숫자를 입력받을 때 : nextInt(), nextDouble(), nextFloat();


EX)

package j0602;

//외부의 패키지에 들어가 있는 다른 클래스를 참조해서 불럼
// import 최상위패키미명.하위패키지명...불러올 클래스명 or (*)
import java.util.Scanner;

public class ArrayTest4 {
// 사용자로부터 직접 갑을 입력 : Scanner 클래스
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                //키보드를 통해 값을 입력
                // Scanner 클래스 객체 생성
                // 문자열을 입력 : nextLine() or next();
                // 숫자를 입력받을 때 : nextInt(), nextDouble(), nextFloat();
                Scanner sc=new Scanner(System.in);
                int jumsu[]=new int[5];
                int sum=0; //합계
                double avg=0.0; //평균
                System.out.println("5과목의 점수를 입력하세요.");
                //입력을 한번씩 할 때마다 배열의 요소에 값을 저장시키는 동시에
                // sum에 누적해서 저장
                for(int i=0;i<jumsu.length;i++) {
                        jumsu[i]=sc.nextInt();
                        sum+=jumsu[i]; // sum=sum+jumsu[i]
                }
                //최종평균, 합계
                avg=(double)sum/jumsu.length;
                System.out.println("총합 : "+sum+", 평균 : "+avg);
        }

}

실행 ==
5과목의 점수를 입력하세요.
20
30
40
50
60
5과목의 점수를 입력하세요.
20
30
40
50
60
총합 : 200, 평균 : 40.0
총합 : 200, 평균 : 40.0




'JAVA > Basic' 카테고리의 다른 글

접근제어자  (0) 2017.06.16
2차원 배열  (0) 2017.06.16
정적 메서드, API, 동적 메서드  (0) 2017.06.16
객체지향 프로그래밍  (0) 2017.06.16
제어문 2  (0) 2017.06.16
Comments