[Java] 배열, 향상된 for문, 열거

2024. 7. 29. 08:52·Java
목차
  1. 배열
  2. 향상된 for문 
  3. 열거(Enum)
반응형

배열

  • 같은 데이터타입의 연속된 데이터 묶음
  • 데이터의 순서가 존재함
  • 배열의 데이터들은 들어오는 순서대로 인덱스(번호표)를 부여받게 되며 이때문에 순서를 유지할 수 있다.
  • 불필요한 변수 선언을 방지할 수 있다.
  • 같은 데이터타입의 연속된 데이터 처리가 편리해진다.
  • 길이는 고정이다.

 

 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
  1. 배열
  2. 향상된 for문 
  3. 열거(Enum)
'Java' 카테고리의 다른 글
  • [Java] 인스턴스 멤버, 정적 멤버, 정적 필드, 정적 메소드, 상수, 패키지, 접근제한자, 싱글톤
  • [Java] class, 필드, 생성자, 메소드, 오버로딩
  • [Java] String, String이 제공하는 기능들
  • [Java] null, NullPointerException, 참조타입
초보개발자J
초보개발자J
초보개발자J
J의 코딩 노트
초보개발자J
전체
오늘
어제
  • 분류 전체보기 (126)
    • Java (49)
    • MySQL (10)
    • HTML, CSS (8)
    • JavaScript, jQuery, Ajax (12)
    • Spring (15)
    • Python (0)
    • Baekjoon [Java] (27)
    • Git (1)
    • Spring Boot (3)
    • Visual Studio Code (1)
    • 일상 (0)
    • 영어 (0)
반응형

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

hELLO· Designed By정상우.v4.5.3
초보개발자J
[Java] 배열, 향상된 for문, 열거

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.