일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 예외처리
- 추상메서드
- 생성자오버로드
- EnhancedFor
- 예외미루기
- 메소드오버로딩
- cursor문
- 환경설정
- 사용자예외클래스생성
- 컬렉션프레임워크
- 참조형변수
- GRANT VIEW
- NestedFor
- 제네릭
- 인터페이스
- 오라클
- 객체 비교
- 한국건설관리시스템
- Java
- 정수형타입
- 자바
- 다형성
- exception
- 컬렉션 타입
- 어윈 사용법
- 집합_SET
- oracle
- abstract
- 대덕인재개발원
- 자동차수리시스템
- Today
- Total
거니의 velog
230712 자바 강의 본문
[배열]
(1) 선언 => 타입명[ ] 배열명;
- 배열선언타입 대로만 배열요소로 값을 입력받을 수 있다.
int[] score;
- 배열요소 => 배열명[인덱스], “일반변수”이다.
score[0] = 100; 값 배정 가능.
(2) 생성 => 타입명[] 배열명 = new 타입명[크기];
- 힙 메모리에 크기만큼의 공간을 생성하고 호출 스택 메모리에 배열명을 가리킴(주소값을 전달).
- int[] score = new int[10]; => 40 바이트 확보, 인덱스 0~9 배정.
- length. 배열 요소의 개수.
(3) 초기화 => 배열에 기본값 세팅해 주는 것.
- 배열요소 = 값;
score[0] = 10; score[1] = 50; score[2] = 70; ....
- 반복문 사용. 규칙적으로 변하는 값이나 똑같은 값을 저장할 때 사용.
- 배열타입명[] 배열명 = {데이터, 데이터, 데이터...};
int[] score = {10, 30, 70, 90, 20};
- 타입명[] 배열명 = new 타입명[ '여기에 개수 쓰면 오류!' ]{데이터, 데이터, 데이터...};
int[] score = new int[]{10, 30, 70, 90, 20};
[향상된 for문]
for(타입명 변수명 : 배열명 or 자바 컬렉션 프레임워크 객체[리스트류]) {
반복문
}
같은 타입으로 맞춰줘야 함. 배열의 값을 꺼내 변수에 넣어주면서 반복 실행.
[ArrayExample.java]
package ddit.chap05.sec01;
import java.util.Arrays;
public class ArrayExample {
public static void main(String[] args) {
int[] num = null; // 배열 선언.
System.out.println("num = " + num); // num = null
num = new int[5]; // 배열 생성.
System.out.println("num = " + num); // num = [I@32d992b2. 16진수 형태의 4바이트 표현 주소 출력. 참조형 변수.
num[0] = 50;
num[1] = 20;
num[2] = 90;
num[3] = 80;
num[4] = 60;
System.out.println("num = " + Arrays.toString(num)); // num = [50, 20, 90, 80, 60]
// 향상된 for문(Enhanced for), 배열이나 컬렉션 프레임워크(리스트류)
for(int a : num) {
System.out.printf("%3d", a); // 50 20 90 80 60
}
System.out.println();
// for(int i=0; i<=num.length; i++) { // Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
for(int i=0; i<num.length; i++) {
System.out.printf("%3d", num[i]); // 50 20 90 80 60
}
}
}
[ArrayExample02.java]
package ddit.chap05.sec01;
public class ArrayExample02 {
public static void main(String[] args) {
// 5명의 친구 이름을 배열로 저장(name)하고 3번째 저장된 친구 이름을 출력.
// String[] name = new String[5]; // 초기화
// name[0] = "홍길동";
// name[1] = "김태호";
// name[2] = "장호리";
// name[3] = "아이린";
// name[4] = "정몽주";
// String[] name = new String[]{"홍길동", "김태호", "장호리", "아이린", "정몽주"};
String[] name = {"홍길동", "김태호", "장호리", "아이린", "정몽주"};
System.out.println("3번째 저장된 친구 이름 : " + name[2]); // 3(index : n-1)번째 저장된 친구 이름 : 장호리
}
}
[ArrayExample03.java]
package ddit.chap05.sec01;
import java.util.Arrays;
import java.util.Scanner;
public class ArrayExample03 {
Scanner sc = new Scanner(System.in); // 멤버변수(필드)
public static void main(String[] args) {
// 정수배열 10개(score)를 선언하고 키보드를 통하여 입력된 값으로 초기화한 수
// 최대값과 최소값을 구하시오.
int[] num = new ArrayExample03().setData(); // 반환된 정수형 배열을 받기 위해 변수 타입도 정수형 배열로 선언.
new ArrayExample03().getMaxMin(num); // 매개변수로 int[] num 을 가져가야 함.
}
public int[] setData() { // 정수형 배열 반환.
int[] number = new int[10];
for(int i=0; i<number.length; i++) {
// System.out.print(i+1 + "번째 자료 입력 : ");
System.out.print("number["+ i +"] = ");
number[i] = Integer.parseInt(sc.nextLine());
}
// System.out.println("number : " + Arrays.toString(number));
return number; // 나를 호출한 위치(main())에 값을 반환.
}
public void getMaxMin(int[] num) { // 매개변수 선언. 객체형 변수이므로 매개변수(int[] num)와 main() 변수(int[] num)의 주소가 틀리다(주의!)
// 임시 최대값, 임시 최소값을 [배열의 첫 번째 요소]로 설정.
int tmax = num[0]; // 임시 최대값
int tmin = num[0]; // 임시 최소값
for(int i=1; i<num.length; i++) {
if(tmax<num[i]) tmax = num[i];
if(tmin>num[i]) tmin = num[i];
}
System.out.println("원본 배열 : " + Arrays.toString(num));
System.out.println("최대값 : " + tmax);
System.out.println("최소값 : " + tmin);
}
}
[ArrayExample04.java]
package ddit.chap05.sec01;
import java.util.Scanner;
public class ArrayExample04 {
public static void main(String[] args) {
// 키보드로 1000원 단위의 돈을 입력받아 그 액수 만큼의 로또번호를 출력하시오.
int[] lotto = new int[45];
for(int i=0; i<lotto.length; i++) {
lotto[i] = i+1;
}
// System.out.println("lotto : " + Arrays.toString(lotto));
// shuffle(lotto);
// System.out.println("lotto(shuffle) : " + Arrays.toString(lotto));
Scanner sc = new Scanner(System.in);
System.out.print("구입액수(1000원 단위) : ");
int money = sc.nextInt();
getLottoNumber(lotto, money);
}
public static void shuffle(int[] lotto) {
for(int i=0; i<100000000; i++) {
int rand = (int)(Math.random()*lotto.length); // 0-44 사이의 난수.
int temp = lotto[0];
lotto[0] = lotto[rand];
lotto[rand] = temp;
}
}
public static void getLottoNumber(int[] lotto, int money) {
for(int i=0; i<money/1000; i++) {
shuffle(lotto);
System.out.print(((i+1)*1000)+ "원 : ");
for(int j=0; j<6; j++) {
System.out.printf("[%2d]", lotto[j]);
}
System.out.println();
}
}
}
[Bubble Sort : n개로 구성된 배열]
(1) n-1 회전수행.
(2) 각 회전에서 인접된 두 자료 비교한 후 교환.
- descending : 내림차순. 큰 값에서 작은 값 순으로.
- ascending : 오름차순. 작은 값에서 큰 값 순으로. 기본값.
(3) 각 회전이 끝나면 가장 오른쪽에 있는 자료는 다음 비교 회전 대상에서 제외
27, 15, 38, 62, 7, 43 => 최소 5회전
[1회전] : 15, 27, 38, 7, 43 => 62 제외
[2회전] : 15, 27, 7, 38 => 43, 62 제외
[3회전] : 15, 7, 27 => 38, 43, 62 제외
[4회전] : 7, 15 => 27, 38, 43, 62 제외
[5회전] : 7 => 15, 27, 38, 43, 62 제외
[SortExample.java]
package ddit.chap05.sec02;
import java.util.Arrays;
public class SortExample {
public static void main(String[] args) {
BubbleSort bubbleSort = new BubbleSort();
bubbleSort.sort(); // [정렬된 데이터] : [7, 15, 27, 38, 43, 50, 62, 65, 74, 80]
}
}
class BubbleSort {
// 멤버변수
private int[] number;
// 생성자(constructor). 멤버변수 초기화.
BubbleSort() {
number = new int[] {27, 15, 38, 62, 7, 43, 80, 65, 50, 74};
}
public void sort() {
boolean flag = true;
System.out.println("[원본 데이터]");
System.out.println(Arrays.toString(number));
for(int i=0; i<number.length-1; i++) { // n-1 회전수행
flag = true; // 회전 시작시 true
for(int j=0; j<number.length-1-i; j++) { // j=>8번 인덱스(j<number.length-1-i), j+1=>9번 인덱스
if(number[j]>number[j+1]) {
int temp = number[j];
number[j] = number[j+1];
number[j+1] = temp;
flag = false; // 자리 바꿈이 한 번이라도 일어나면 false
}
}
if(flag) break; // 자리 바꿈이 한 번도 일어나지 않았다면(flag = true;) 완료되었으므로 반복문을 빠져나와라.
}
System.out.println("[정렬된 데이터]");
System.out.println(Arrays.toString(number));
}
}
'대덕인재개발원 > 대덕인재개발원_Java' 카테고리의 다른 글
230714 자바 강의 (0) | 2023.07.14 |
---|---|
230713 자바 강의 (0) | 2023.07.13 |
230711 자바 강의 (0) | 2023.07.12 |
230710 자바 강의 (0) | 2023.07.12 |
230707 자바 강의 (0) | 2023.07.12 |