JAVA 6_2강 배열

YEONG EUN LEE (Chloe)·2023년 12월 15일

JAVA 기초

목록 보기
11/42
post-thumbnail

배열

  • 같은 자료형을 가진 여러 개의 요소를 묶어 높은 진합체

참고
new 키워드
1. 데이터를 저장할 수 있는 공간 생성
2. 해당 공간에 해당 자료형(참조자료형)의 내용을 복사해서 붙여넣기해주세요.

지역변수의 경우 값이 할당되어 있지 않은 상태에서 불러오면 에러를 일으킴.
지역이더라도 배열의 경우 공간을 할당할 경우 자동초기화값을 채움.
ex) byte, short, int -> 0, char -> '\u0000'(공백한칸), double -> 0.0
ex) float -> 0.0f, String(클래스급) -> null

형식

// 선언
자료형 [ ] 변수명 ; 또는 자료형 변수명 [ ];
// 예시
int[] a = new int[3];

// 공간 생성/ 초기화
변수명 = new 자료형 [ ] { 값1, 값2, ..., };

// 선언 및 공간 생성( 메모리 할당)
자료형 [ ] 변수명 = new 자료형 [방개수];

// 초기화
변수명[ 인덱스번호(방번호)] = 값;

// 단축형식 (선언 및 공간생성/초기화)
자료형[ ]  변수명 = {값1, 값2, ..., };
// new가 포함되어 있으면, 처음 설정한 값(요소)의 개수만큼 방크기가 고정된다.

코드

  public static void main(String[] args) {

  //		int a;
  //		System.out.println(a); // 초기화 안되면 에러를 발생시킴

          int[] b = new int[5];
          b[2] = 1;
          System.out.println(b);
          for(int i =0; i< b.length; i++) // 변수 값을 저장, 객체는 주소를 저장,반환도 주소값으로 함(첫번째 값이 저장되어있는 값의 주소를 반환)
              System.out.print(b[i] + " "); // 지역변수일 경우 반드시 초기값대입이 되어야 값을 출력할 수 잇음
          // 지역인 경우
          // 변수와 배열객체의 요소값의 차이점
          // **변수**는 지역일 경우 반드시 초기값 설정이 되어야함
          // **배열객체**는 지역일 경우 값이 없으면 자동으로 초기값이 대입됨
          // 자동초기화값
          // byte, short, int => 0, long => 0L, float => 0.0f, double => 0.0
          // char => '\u0000' 공백한칸
          // String 자료형 포함 모든 참조참료형 : null
          System.out.println();
          
        int[] c = {1,2,3,4,5};
		System.out.println(c);
		for(int i :c) {// 받아오는 값, Array명
			System.out.print(i + " ");
		}

      }
      
	int[] a = {95, 73, 100};
		int tot = 0;
		double avg;
		int i;
		
		for(i=0; i < a.length; i++)
			tot += a[i];
		
		avg = (double) tot /a.length;// casting 연산자 강제로 자료형을 변환시키는 것, .(점)은 접근연산자, length int값을 가짐.
		System.out.println("평균 = " + avg);
		
		avg = tot / a.length; // 값 손실이 일어남. 나누기를 할때 값 손실에 유의하여 자료형을 바꿔줘야함
		System.out.println("총합 = " + tot);
		System.out.println("평균 = " + avg);
        
		int []a = {95,73,100};
		int []b = {100,100,100};
		int tot = 0, tot1 = 0;
		int i;
		
		for (i = 0; i< a.length; i++) {
			tot += a[i];
			tot1 += b[i];
			
		}
		System.out.println("총합 = " + tot);
		System.out.println("총합 = " + tot1);
		int []score = {70,88,91,33,100,55,95};
		int max = score[0];
		int min = score[0];
		
		for (int i = 1; i < score.length; i++) {
			if (score[i] > max)
				max = score[i];
			
			if(score[i] < min)
				min = score[i];
			
		}
		System.out.println("최대값 : " + max);
		System.out.println("최소값 : " + min);

이차원배열 : 행과 열로 이루어진 배열(바둑판)

  • 행(row) : 줄
  • 열(column) : 칸
// 선언 및 행렬 공간할당
자료형[][] 변수명 = new 자료형[행개수][열개수];
int[][] a = ne int[][];
// System.out.println(a); 이렇게 하면 주소값을 반환함


// 초기화
변수명[행인덱스번호][열인덱스번호] = 값;

// 선언 및 행공간할당
자료형[][] 변수명 = new 자료형[행개수][];

// 열공간할당
변수명[행인덱스번호] = new 자료형[열인덱스번호];
//예시
a[0] = new int[2]; // 2칸의 공간을 할당
a[1] =new int[3]; // 3칸의 공간을 할당

// 초기화
변수명[행인덱스번호][열인덱스번호] = 값;

// 단축형식(선언 및 공간생성/ 초기화)
변수명[행인덱스번호][열인엑스번호] = {{값1. 값2, ... }, {값1. 값2, ... }, ... }

마지막 인덱스 구하기 = 길이( array이름.length) -1
string methods = .length()
array megthods = .length

string a = String.valueOf(1234); --> 숫자를 스트링 형태로 변환
int b = Integer.parseInt(문자); ---> 스트링을 숫자로 형태로 변환

보너스

int a = 1;
	for(int i = 1; i<=5; i++) {
		final int b = a+i;// b는 for문 안에서만 살아있는 값이므로 for문이 한번 돌때마다 없어진다고 생각해야함
		System.out.println(a+", "+b+", "+i);
	}

0개의 댓글