배열단점
선언방법
자료형[] 배열명 = new 자료형[개수];
//int형 3개짜리 배열 객체 생성
int[] aaa = new int[3];
System.out.println(aaa); //배열객체 .toString()이라는 기능이 자동 발동 -> 설명 글 나옴
//배열참조변수끼리의 대입
double[] ggg = new double[] {3.14,2.48,7.23};
double[] hhh = ggg; //객체 대입이 아니라 주소값을 복사한 것 => 하나의 객체를 공유하게됨
for(int i=0;i<ggg.length; i++) {
System.out.print(ggg[i] + ", "); //3.14, 2.48, 7.23,
}
System.out.println();
for(int i=0;i<hhh.length; i++) {
System.out.print(hhh[i] + ", "); //3.14, 2.48, 7.23,
}
System.out.println();
System.out.println();
/*공유된 객체를 참조하는 참조변수 중 하나를 이용하여 요소값 변경하여
다른 참조 변수의 값도 영향을 받는 것을 확인해보자 */
hhh[1] = 6.49;
for(int i=0;i<ggg.length; i++) {
System.out.print(ggg[i] + ", "); //3.14, 6.49, 7.23,
}
System.out.println();
for(int i=0;i<hhh.length; i++) {
System.out.print(hhh[i] + ", "); //3.14, 6.49, 7.23,
}
결과창과 해시코드 => 같은 객체 바라봄
int[] mmm = {50,60,70};
int[] nnn = new int[mmm.length]; //mmm배열과 같은 개수의 값이 0인 배열객체 생성
//반복문으로 nnn에 값 카피
for(int i=0; i<nnn.length;i++) {
nnn[i] = mmm[i];
}
//nnn과 mmm의 참조하는 배열 객체는 서로 다른 객체
//해시코드 확인
System.out.println(mmm);
System.out.println(nnn);
해시코드 결과창
public class Main {
public static void main(String[] args) {
String[] sss=new String[3]; //String참조변수 3개짜리
System.out.println(sss[0]); //참조변수에 값을 넣지 않으면 0에 해당하는 값 : null
//배열 객체의 요소들(참조변수)에 값(객체) 대입
//배열안의 참조변수들은 각각 개발자가 대입한 주소를 가르키고 있다
sss[0] = new String("sam");
sss[1] = "배고파"; //new String() 생략 가능
sss[2] = "종려";
for(int i=0; i< sss.length;i++) {
System.out.println(sss[i]);
}
//각각 배열요소(Stirng 참조변수)의 기능 메소드 사용해보기
System.out.println("배열릐 길이 값 : " + sss.length); //얜 배열
//얘네는 Stirng참조변수
System.out.println(sss[0].length());
System.out.println(sss[1].length());
System.out.println(sss[2].length());
System.out.println();
char ch = sss[1].charAt(0);
System.out.println(ch);
//참조형 배열객체 초기화
String[] uuu = new String[] {new String("android"),new String("ios")};
uuu = new String[] {"android", "ios", "web"};
String[] zzz = {"android", "ios", "web"}; //배열 참조변수 초기화하면서 배열객체 초기화 할때는 축약표현 가능
for(int i=0; i<zzz.length; i++) {
System.out.println(zzz[i]);
}
//개발자가 만든 class도 배열로 만들 수 있다
Person p =new Person();
p.name = "sam";
p.age = 20;
p.show();
Person[] people = new Person[3];
people[0] = new Person();
people[1] = new Person();
people[2] = new Person();
people[0].name = "yong";
people[0].age = 10;
people[0].show();
people[1].show();
people[2].show();
}
}
//사용자 정의 클래스
class Person {
String name;
int age;
void show() {
System.out.println(name+" : "+age);
}
}
public class Main {
public static void main(String[] args) {
int[] nums = new int[] {10,20,30};
//반복문 이용하여 요소값들 출력
for(int i=0; i<nums.length; i++) {
System.out.println(nums[i]);
}
System.out.println();
//A
for(int i=0; i<nums.length; i++) {
int t = nums[i]; //요소 하나하나를 잠깐 들고 있는 t
System.out.println(t);
}
System.out.println();
//확장된 for문으로 배열의 요소값을 간결하게 출력해보기
for( int t : nums ) { //A의 임시변수 t와 같은 친구
System.out.println(t);
}
double[] xxx = {3.14, 2.56, 8.79};
for(double t : xxx) {
System.out.println(t);
}
String[] rrr = {"aaa","react","cccc"};
for(String t : rrr) {
System.out.println(t+" : "+t.length() );
}
}
}
선언방법
자료형[][] 배열명 = new 자료형[봉지][몇개씩];
public class MainMuliArray {
public static void main(String[] args) {
//Java의 2차원 배열 - 1차원 배열 참조변수를 여러개 가진 것
//2차원 배열 객체
int[][] aaa = new int[3][]; //1차원 배열 참조변수 3개짜리 배열객체
System.out.println(aaa[0] ); //참조변수 기본값 null나옴
//이차원배열요소(참조변수)에 값(배열 객체) 대입
aaa[0] = new int[4];
aaa[1] = new int[2];
aaa[2] = new int[5];
//1차원 배열객체들의 요소(int변수)의 정수값 대입
aaa[0][0] = 10;
aaa[0][1] = 20;
aaa[0][2] = 30;
aaa[0][3] = 40;
aaa[1][0] = 100;
aaa[1][1] = 200;
aaa[2][0] = 1000;
aaa[2][1] = 2000;
aaa[2][2] = 3000;
aaa[2][3] = 4000;
aaa[2][4] = 5000;
//출력 - 반복문 사용
//반복횟수에 사용될 배열의 길이값 확인해 보기
System.out.println(aaa.length); //참조변수 개수
System.out.println(aaa[0].length); //각각 참조변수가 가르키는 length
System.out.println(aaa[1].length);
System.out.println(aaa[2].length);
System.out.println();
//반복문
for(int i=0; i<aaa.length; i++) { //봉지 수
for(int j=0;j < aaa[i].length ;j++) { //각각 다르게 들어있는 귤 수
System.out.print(aaa[i][j] + ", ");
}
System.out.println();
}
System.out.println();
//확장 for문 으로 해보기
for(int[] t : aaa) { //헷갈리지 말자 임시변수는 꺼내려는 변수의 자료형!!
for(int a : t) {
System.out.print(a + ", ");
}
System.out.println();
}
System.out.println();
//각 봉지마다 개수가 다 똑같으면...쉽게 2차원 배열 생성 가능
int[][] bbb = new int[2][3];
for(int i=0; i<bbb.length; i++) { //봉지 수
for(int j=0;j < bbb[i].length ;j++) { //각각 다르게 들어있는 귤 수
System.out.print(bbb[i][j] + ", ");
}
System.out.println();
}
//2차원 배열의 초기화
int[][] ccc = new int[][] {new int[] {10,20}, new int[] {10,20,30,40}};
int[][] ddd = new int[][] {
{10,20},
{10,20,30,40}
};
//초기화의 축약표현
int[][] eee = {
{10,20},
{10,20,30,40}
};
for(int[]t : ddd) {
for(int e : t) {
System.out.print(e + ", ");
}
System.out.println();
}
}
}
2차원배열 참조변수를 여러개 가진 배열객체
int[][][] abc = new int[2][][];//2차원 배열 참조변수가 2개짜리 배열객체
abc[0] = new int[3][];
abc[1] = new int[4][];
abc[0][0] = new int[2];
abc[0][1] = new int[5];
abc[0][2] = new int[1];
abc[1][0] = new int[7];
abc[1][1] = new int[3];
abc[1][2] = new int[2];
abc[1][3] = new int[6];
abc[0][1][2] = 50;
c언어 배울때 아파트 층 호수로 이해 했을 땐 다차원 배열이랑 가까워 졌는데 역시나 호락호락한 애가 아니였다 다시 오만보 멀어짐 참나...