붓, 그리다
배열 Array 본문
[ 배열 ]
- 같은 자료형의 변수들의 집합체
<-> 같은 자료형의 변수를 여러개 나열하면 메모리 상에 랜덤으로 설정
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