참고
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);
이차원배열 : 행과 열로 이루어진 배열(바둑판)
// 선언 및 행렬 공간할당
자료형[][] 변수명 = 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);
}