배열
- 같은 데이터타입의 연속된 데이터 묶음
- 데이터의 순서가 존재함
- 배열의 데이터들은 들어오는 순서대로 인덱스(번호표)를 부여받게 되며 이때문에 순서를 유지할 수 있다.
- 불필요한 변수 선언을 방지할 수 있다.
- 같은 데이터타입의 연속된 데이터 처리가 편리해진다.
- 길이는 고정이다.
1.배열 변수 선언
데이터타입[] 변수명
데이터타입 변수명[]
int intArray1[];
int[] intArray2;
byte[] byteArray;
String[] strArray;
2.배열 데이터 생성
1)리터럴 사용
- 배열변수 선언시에만 리터럴로 생성할 수 있다.
- {}(중괄호)를 사용하여 콤마 구분자로 연속된 데이터를 표현한다.
String[] strArray2 = {"java","css","html"};
2)new 연산자 사용
- 배연 선언시 선언 후 새로운 배열 생성 가능
- 배열의 길이만으로 배열 생성 가능
- 배열의 길이만으로 배열을 생성하게 되는 경우 각 원소는
기본타입은 0으로 초기화되며 참조타입은 null로 초기화된다.
//원소를 모두 알고 있는 경우
intArray = new int[] {1,2,3,4,5};
//원소는 모르나 배열의 길이를 알고 있는 경우
intArray = new int[10];
double[] doubleArr;
doubleArr = new double[5];
doubleArr = new double[] {100.0, 89.5, 93.7};
3.배열 원소에 접근
- 인덱스를 사용한다.
배열변수[인덱스번호]
String[] strArr = {"사과","딸기","포도","키위"};
System.out.println(strArr[2]);
//strArr 2번 인덱스의 원소값을 "망고"로 변경
strArr[2] = "망고";
System.out.println(strArr[2]);
numberArr의 0번부터 19번 원소에 30부터 49까지 순서대로 하나씩 증가하는 값을 담으세요
1)number 선언하고 30부터 더한다
int[] numberArr = new int[20];
int number = 30;
for(int i = 0; i < numberArr.length; i++) {
numberArr[i] = number++;
System.out.print(numberArr[i] + " ");
}
2)선언없이 안에서 더한다
int[] numberArr = new int[20];
for(int i = 0; i < numberArr.length; i++) {
numberArr[i] = i + 30;
System.out.print(numberArr[i] + " ");
}
numberArr의 모든 원소의 합과 평균
numberArr = new int[] {10,13,24,65,77};
int sum = 0;
for(int i = 0; i < numberArr.length; i++) {
sum += numberArr[i];
}
System.out.println("numberArr 원소의 합: " +sum);
System.out.println("numberArr 원소의 평균: "+ ((double)sum/numberArr.length));
strArray중 "ja"를 포함하고 있는 원소의 갯수를 출력하는 실행문을 작성하세요
1) .indexOf() 사용
--존재하면 인덱스번호 반환하고, 존재하지 않으면 -1반환하기 때문에 -1이 아닐 경우 count를 1씩 더해주면
포함하고 있는 원소의 갯수 확인 가능
strArray = new String[] {"java","jadu","html","javascript","aws"};
int count = 0;
for(int i = 0; i < strArray.length; i++) {
if(strArray[i].indexOf("ja") != -1) {
count++;
}
}
System.out.println("ja를 포함하고 있는 원소의 갯수:"+count);
2) .contains() 사용
-- 존재하면 true, 존재하지 않으면 false를 반환. true일 경우만 count를 1개씩 더해주면 원소의 갯수 확인 가능
strArray = new String[] {"java","jadu","html","javascript","aws"};
int count = 0;
for(int i = 0; i < strArray.length; i++) {
if(strArray[i].contains("ja")) {
count++;
}
}
System.out.println("ja를 포함하고 있는 원소의 갯수:"+count);
참조타입 배열은 원소를 인덱스에 직접 담지 않고 다른곳에 생성 후 주소를 참조하는 형태이다.
//주소값을 가지고 있기 때문에 true
String[] strArray3 = {"홍길동","가","홍길동","나"};
System.out.println(strArray3[0] == strArray3[2]);
//new String() 다른 주소이기 때문에 false
String[] strArray4 = {"홍길동","가",new String("홍길동"),"나"};
System.out.println(strArray4[0] == strArray4[2]);
향상된 for문
- 배열에 쉽게 접근할 수 있도록 문법이 향상된 for문을 의미함
for(String str : strArray3) {
System.out.println(str);
}
최대값 구하기
int[] array = {1,5,3,8,2};
int max = 0;
for(int num : array) {
if(num > max) {
max = num;
}
}
System.out.println("최대값:" + max);
배열과 향상된 for문, 일반 for문
Scanner sc = new Scanner(System.in);
boolean flag = true;
int max = 0;
int sum = 0;
int[] scores = null;
while(flag) {
System.out.println("--------------------------------------------");
System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
System.out.println("--------------------------------------------");
System.out.print("선택>");
int choice = sc.nextInt();
switch(choice) {
case 1:
System.out.print("학생수>");
int member = sc.nextInt();
scores = new int[member];
break;
case 2:
for(int i = 0; i < scores.length; i++) {
System.out.print("scores["+ i + "] >");
scores[i] = sc.nextInt();
}
break;
case 3:
for(int i = 0; i < scores.length; i++) {
System.out.println("scores["+ i + "] :" + scores[i]);
}
break;
case 4:
for(int num : scores) {
if(num > max) {
max = num;
}
sum += num;
}
System.out.println("최고 점수:" + max);
System.out.println("평균 점수:" + ((double)sum/scores.length));
break;
case 5:
flag = false;
System.out.println("프로그램 종료");
break;
default :
System.out.println("다시입력해주세요.");
}
}
sc.close();
실행결과)
열거(Enum)
- 한정된 값을 갖는 타입
- 메소드 영역에 등록됨
public enum Week {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
public class Ex04_enum_use {
public static void main(String[] args) {
/*
* String day = "금요일";
*
* String day2 = new String("금요일");
*/
Week day = Week.FRIDAY;
System.out.println(day);
}
}
'Java' 카테고리의 다른 글
[Java] 인스턴스 멤버, 정적 멤버, 정적 필드, 정적 메소드, 상수, 패키지, 접근제한자, 싱글톤 (0) | 2024.08.01 |
---|---|
[Java] class, 필드, 생성자, 메소드, 오버로딩 (0) | 2024.07.31 |
[Java] String, String이 제공하는 기능들 (0) | 2024.07.28 |
[Java] null, NullPointerException, 참조타입 (0) | 2024.07.27 |
[Java] Scanner, while, do-while, break, continue (2) | 2024.07.26 |