혼공자 1주차

다율·2023년 7월 9일
0

2023 혼공자

목록 보기
1/6

혼공자 1주차 기본미션


전체적으로 아는 내용 & 기본적인 내용은 생략

[01-2] 이클립스

  • 프로젝트 생성 (교재에서는 JavaSE-11로 작성)
    [File] - [New] - [Java ProJect] - 이후 module Create

    module-info.java에서 {} 안에 requires java.se;작성
    (다른 모듈에 있는 API를 사용하고 싶다면 등록)

  • 소스파일 생성 & 작성
    src 폴더 선택 - 우클릭 - [New] - [Package]
    만든 Package 선택 - 우클릭 - [New] - [class](public static void main .. 체크)

  • 명령 프롬포트나 터미널에서 직접 컴파일 & 실행 해야할 때 (교재 33p 참고)

  • Java 실행과정
    [소스 파일 작성(.java)] - [컴파일(javac)] - [바이트 코드(.class)] - [실행(java)]

[01-3] 클래스 & 메소드 (교재 37p 참고)

	public class Hello {
    }
    /*public class: 공개 클래스*/
    /*Hello: 클래스 이름(파일명과 동일)*/
	public static void main(String args[]) {
    }
    /*public static void main(String args[]): 메소드 선언부*/
    /*괄호 앞의 main: 메소드 이름*/
    /*main() 메소드를 실행 진입점이라고 부름*/

주석

/* 내용 */ : 도큐먼트 주석 (주로 javadoc명령어로 API 도큐먼트를 생성할 때 사용)

[02-1] 변수

<변수 선언 작성 규칙>

  • 첫 글자는 문자 or $, _ 숫자로 시작할 수 없음
  • 영어 대소문자를 구분함
  • 첫 문자는 영어 소문자로 시작하되 다른 단어가 붙을 경우 첫문자를 대문자로 해야 함(camel)
  • 문자 수 길이 제한은 없음
  • 자바 예약어는 사용할 수 없음 (예약어 교재 50p 참고)

변수 초기화 예제 (51p)

package sec01.exam01;

public class VariableInitializationExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int value;
		
		int result = value + 10;
		
		System.out.println(result);
		// value변수 초기화를 안해서 컴파일 오류 (..initialized)
	}
}

변수 사용 예제 (53p)

package sec01.exam02;

public class VariableUseExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int hour = 3;
		int minute = 5;
		System.out.println(hour + "시간 " + minute + "분");
		
		int totalMinute = (hour*60) + minute;
		System.out.println("총 " + totalMinute + "분");
		
	}

}
/* 실행 결과
3시간 5분
총 185분 */

변수값 교환 예제 (53p~54p)

package sec01.exam03;

public class VariableExchangeExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int x = 3;
		int y = 5;
		System.out.println("X: " + x + ", y: " + y);
		
		int temp = x;
		x = y;
		y = temp;
		System.out.println("X: " + x + ", y: " + y);
	}

}
/* 실행 결과
X: 3, y: 5
X: 5, y: 3 */

변수 사용 범위

  • 로컬 변수: 메소드 블록 내에서 선언된 변수
    (메소드 블록 내에서만 사용되고 메소드 실행이 끝나면 자동으로 없어짐)
  • 기본적으로 변수는 선언된 블록 내에서만 사용할 수 있음(선언 위치 주의하기)

변수의 사용 범위 (55p)

package sec01.exam04;

public class VariableScopeExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int v1 = 15;
		if(v1>10) {
			int v2;
			v2 = v1 - 10;
		}
		int v3 = v1 + v2 + 5;	// v2 변수를 사용할 수 없기 때문에 오류 발생
	}

}

[02-2] 8가지 기본 타입 (call by value)

  • 정수 기본형: int
  • 실수 기본형: double


예제 하나하나 하려고 했지만.. 앞에 기본적으로 아는 내용들은 정리만 하고 넘어가려고 한다..




리터럴(literal): 소스코드에서 프로그래머에 의해 직접 입력된 값

정수 리터럴

2진수: 0b 또는 0B로 시작하고 0과 1로 구성됨
8진수: 0으로 시작하고 0~7로 구성됨
10진수: 소수점이 없는 0~9 숫자로 구성됨
16진수: 0x 또는 0X로 시작하고 0~9 숫자와 A~F 또는 a~f로 구성됨

  • 기본 int
  • long 타입 사용법 : 뒤에 l 또는 L를 붙임
	long balence = 300000000L;

문자 리터럴

: 하나의 문자를 작은따옴표(')로 감싼 것 (유니코드로 변환되어 저장됨)

  • char 타입
	char var1 = 'A';		// 유니코드 65가 저장됨
    char c = 65;			// 정수 타입에 속하기 때문에 가능
    
    int var2 = 'A'			// 유니코드 65가 저장됨
  • String 타입
    문자열: 큰따옴표(")로 감싼 문자들
	String A = "홍길동동동";
	문자열 내부에 이스케이프 문자(\ 역슬래시가 붙은 문자) 사용 가능함

\": "출력
\t: tab만큼 띄움
\n: 줄바꿈
ex)

	String B = "나는 \"자바\"를\t좋아\n합니다.";
   	System.out.println(B);
    /*실행결과: 나는 "자바"를	좋아
    합니다.*/
    

실수 타입

  • 기본 double
  • float 사용법: 뒤에 f 또는 F를 붙임
	float var1 = 3.14F;

논리 타입

  • boolean에 저장(1byte)
    ex)
	boolean stop = true;
    if(stop) {			 // stop이 true면 실행
    	System.out.println("멈춤");
    }
    else {
    	System.out.println("출발");
    }

[02-3] 타입 변환

자동 타입 변환

작은 범위 => 큰 범위

기본 타입) byte < short < int < long < float < double
ex) byte -> int, long -> float(실수 값은 정수보다 허용 범위가 크기 때문에 무조건 자동 변환), char -> int
예외적으로 byte타입은 char로 자동변환할 수 없음 (byte타입의 허용범위는 음수를 포함하고 char타입은 음수를 포함하지 않기 때문)

  • 정수 연산에서의 자동 타입 형 변환
    int 타입보다 작은 byte, short 타입의 변수는 자동으로 int 타입 변환되어 연산을 수행함 (두 연산자 중 허용 범위가 큰 타입으로 변환되어 연산을 수행)
    ex)
	byte x = 10;
    byte y = 20;
    int result1 = x + y;	// byte에 저장하면 컴파일 에러
    
    byte result2 = 10 + 20;		// 이때는 int 타입으로 변환하지 않음
  • 실수 연산에서의 자동 타입 변환
    정수 연산과 같이 두 연산자 중 허용 범위가 큰 타입으로 변환되어 연산을 수행
    ex)
	int x = 10;
    double y = 5.5;
   	double result1 = x + y;	// int가 double 값으로 변환되어 연산 수행
    // 만약 꼭 int 타입으로 연산을 해야한다면 double result = x + (int)y;
    
    float result2 = 1.2f + 5.5f;	// float 타입으로 하려면 +f, 안하면 에러, 기본적으로는  double 타입
	int x = 1;
    int y = 2;
    double result = x / y;
    System.out.println(result);
    /* 실행 결과: 0.0 (x /y 연산이 먼저 실행되기 때문) 
       그러므로 0.5가 나오게 하려면 연산 과정에서 x, y 둘 중 하나 or 둘 다를 
       강제 형 변환 시켜야 함. 
    */
  • 연산에서의 문자열 자동 타입 변환
    ex)
	int value = 3 + 7;		// 10 덧셈
    String str1 = "3" + 7;	// "37" 결합
    String str2 = 3 + "7";	// "37"	결합

강제 타입 변환

큰 범위 => 작은 범위 (강제적으로)

캐스팅 연산자 () 괄호를 사용

	int var1 = 30;
    byte var2 = (byte)var1

ex) int -> byte, int -> char, double -> int (String -> char 안됨)

  • 문자열을 기본 타입으로 강제 타입 변환

    일반화: 타입 변수명 = 대문자 타입명 줄이지 않고 다 씀.parse대문자 타입명(변수명);
    ex)
	String str = "33";
	int x = Integer.parseInt(str);
    Double y = Double.parseDouble(str);
  • 반대로 기본타입을 문자열로 변환
    String str = String.valueOf(기본타입값);
    ex)
	String str = String.valueOf(3);		// 결과: "3"

[02-4] 변수와 시스템 입출력

  • 표준 입출력
	System.in.read();
	System.out.println();
  • 모니터로 변수값 출력하기
  1. println(내용); : (ln은 line의 줄임) 괄호 안의 내용을 출력하고 행을 바꿈

  2. print(내용); : 괄호 안의 내용을 출력만

  3. printf("형식 문자열", 값1, 값2); : 괄호 안의 첫 번째 문자열 형식대로 출력
    전체 출력 자릿수와 소수 자릿수를 제한할 수 있음
    %와 conversion(변환문자)는 필수로 작성하고 나머지는 생략할 수 있음, 쉼표로 나열
    ex)

	// 정수 %d, 실수 %f, 문자열: %s
	System.out.printf("이름: %s", "김자바");		// 이름: 김자바
    
    // 값이 두개 이상일 경우 순번을 알려줘야 함. (1$, 2$)
   	System.out.printf("이름: %1$s, 나이: %2$d", "김자바", 25); // 이름: 김자바, 나이: 25
  • 자주 사용되는 형식 문자열 (교재 91p 참고)
    ex) %6d, %10.3f, %-6s, \t 등

  • 키보드에서 입력된 내용을 변수에 저장하기

	package sec04.exam02;

	public class KeyCodeExample {

	public static void main(String[] args) throws Exception/*예외 처리 코드*/ {
		// TODO Auto-generated method stub
		int keyCode;
		
		keyCode = System.in.read();
		System.out.println("keyCode: " + keyCode);
	}

}
/* 실행 결과: A
keyCode: 65 */

-> 키코드를 하나씩 읽음 (단점)

  • Scanner 클래스 제공
    Scanner sc = new Scanner(System.in);
    String inputData = scanner.nextLine
    ex)
	package sec04.exam05;

	import java.util.Scanner;

	public class ScannerExample {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		String inputData;
		
		while(true) {
			inputData = scanner.nextLine();
			System.out.println("입력된 문자열: \"" + inputData + "\"");
			if(inputData.equals("q")) {
				break;
			}
		}
		System.out.println("종료");
	}

}
/*
a
입력된 문자열: "a"
abc
입력된 문자열: "abc"
자바는 재미있다.
입력된 문자열: "자바는 재미있다."
q
입력된 문자열: "q"
종료
*/
	

-> 문자열이 비교할 때는 equals() 메소드 사용

확인문제

  • Scanner를 이용해서 키보드로 입력한 두 수를 덧셈하여 결과를 출력하는 프로그램
	package sec04.verify.exam02;

	import java.util.Scanner;

	public class Exam02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("첫번째 수: ");
		String strNum1 = scanner.nextLine();
		
		System.out.print("두번째 수: ");
		String strNum2 = scanner.nextLine();
		
		int num1 = Integer.parseInt(strNum1);
		int num2 = Integer.parseInt(strNum2);
		int result = num1 + num2;
		
		System.out.println("덧셈 결과: " + result);
		
	}

}
/*
첫번째 수: 2
두번째 수: 4
덧셈 결과: 6
*/

[03-1] 연산자와 연산식

연산자, 조건문, 반복문은 기본적인 내용이므로 +기본내용, 알게 된 내용 정리

  • 연산자 종류
  • 연산자 순서
  • 하나의 결과를 산출하므로 값 대신 연산식 사용 가능
  • int 타입으로 변환되어 연산 수행

[04-1] 조건문: if문, switch문

  • if문 기본 형식
	if (조건식1) {
		true면 실행문 실행;    
    }
    else if (조건식2) {
    	true면 실행문 실행;
    }
    else {
		조건식1false면 실행문 실행;
    } 

ex)
(int)(Math.ramdom() * 6) + 1; => 6개 중 1개의 정수를 랜덤으로

// 주사위 번호 뽑기
	package sec01.exam04;

	public class IfDiceExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num = (int)(Math.random() * 6) + 1;
		
		if (num == 1) {
			System.out.println("1번이 나왔습니다.");
		}
		else if (num == 2) {
			System.out.println("2번이 나왔습니다.");
		}
		//3, 4, 5 진행
		else {
			System.out.println("6번이 나왔습니다.");
		}
	}
}
  • switch문 기본형식
    ex)
	switch(변수) {
    	case1:
        변수가 값 1일 경우 실행문 실행;
        break;
        
        case2:
        변수가 값 2일 경우 실행문 실행;
    	break;
        
        default:
        변수가 값 1, 2 아닐 경우 실행문 실행;
    }
  • if문과 switch문 서로 변형 가능
  • break문이 없으면 밑에도 차례로 다 실행
  • char, String 타입도 가능
	package sec01.exam07;

	public class SwitchCharExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char grade = 'B';		// char 타입
	    
	    switch (grade) {
			case 'A': 
			case 'a':
				System.out.println("우수 회원 입니다.");
				break;
			case 'B':
			case 'b':
				System.out.println("일반 회원입니다.");
				break;
			default:
				System.out.println("손님 입니다.");
	    }
	}

}
// 실행 결과: 일반 회원입니다.
    
	package sec01.exam08;

	public class SwitchStringExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String position = "과장";
		
		switch(position) {
			case "부장":
				System.out.println("700만원");
				break;
			case "과장": 
				System.out.println("500만원");
				break;
			default:
				System.out.println("300만원");
		}
	}

}
// 실행 결과: 500만원

[04-2] 반복문: for문, while문, do-while문

  • for문: 주어진 횟수만큼 실행문을 반복
    초기화식이 필요하지 않을경우 생략 가능
    증감식, 초기화식이 둘 이상 있을 경우 쉼표로 구분해서 작성
    초기화식에 선언된 변수는 for문 내에서만 사용 가능(로컬변수), 벗어나서 사용 -> 에러

  • 중첩(다중) for문
	// 구구단 출력하기
    package sec02.exam05;

	public class ForMultiplicationTableExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for (int i = 2; i <= 9; i++) {
			System.out.println("** " + i + "단 **");
			for (int j = 1; j <= 9; j++ ) {
				System.out.println(i + "X" + j + "=" + i*j);
			}
			System.out.println();
		}
	}
}
/*
** 2단 **
2X1=2
2X2=4
2X3=6
2X4=8
2X5=10
2X6=12
2X7=14
2X8=16
2X9=18

~3, 4, 5, 6, 7, 8단 출력~

** 9단 **
9X1=9
9X2=18
9X3=27
9X4=36
9X5=45
9X6=54
9X7=63
9X8=72
9X9=81
*/
  • while문: 조건식이 true일 경우에 계속해서 반복 실행
	// 1부터 10까지 출력
    package sec02.exam06;

	public class WhilePrintFrom1To10Example {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 1;
		while (i <= 10) {
			System.out.println(i);
			i++;
		}
	}
}
/* 실행 결과: 
1
2
3
4
5
6
7
8
9
10
*/
  • do-while문: 블록 내부의 실행문을 우선 실행하고 실행 결과에 따라서 반복 실행을 계속할지 결정함

  • break문: 반복문에서 실행 중지할 때 사용 (대개 if문과 같이 사용됨)
    ex) 주사위 번호를 랜덤으로 뽑고 6이 나오면 while문 종료

	package sec02.exam08;

	public class BreakExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		while(true) {
			int num = (int)(Math.random() * 6) + 1;
			System.out.println(num);
			if(num == 6) {
				break;
			}
		}
		System.out.println("프로그램 종료");
	}
}
/*
1
6
프로그램 종료
*/

반복문이 중첩되어 있을 경우 가장 가까운 반복문만 종료함

// 바깥쪽 반복문까지 종료
	package sec02.exam09;

	public class BreakOutterExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Outter: for (char upper = 'A'; upper <= 'Z'; upper++) {
			for (char lower = 'a'; lower <= 'z'; lower++) {
				System.out.println(upper + "-" + lower);
				if (lower == 'g') {
					break Outter;
				}
			}
		}
		System.out.println("프로그램 실행 종료");
	}
}
/*
A-a
A-b
A-c
A-d
A-e
A-f
A-g
프로그램 실행 종료
*/
  • continue문: 블록 내부에서 실행되면 for문의 증감식, while문의 조건식으로 이동

    ex) 1부터 10까지의 짝수만 실행하는 프로그램
	package sec02.exam10;

	public class ContinueExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for (int i = 1; i <= 10; i++) {
			if (i % 2 != 0) {
				continue;
			}
			System.out.println(i);
		}
	}
}
/* 실행 결과: 
2
4
6
8
10
*/

160p 확인문제!! (추후 업데이트 예정)

[05-1] 참조 타입과 참조 변수

  • 데이터 타입은 크게 기본 타입과 참조 타입으로 분류 됨
    => 참조 타입은 객체의 번지를 참조하는 타입 (reference type)

메모리 사용 영역

- 메소드 영역
JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역
클래스들을 클래스 로드로 읽어 분류 후 저장 함
- 힙 영역
객체와 배열이 생성되는 영역
생성된 객체와 배열은 스택 영역의 변수나 다른 객체의 필드에서 참조함
JVM이 의미없는(참조하는 변수나 필드가 없는) 객체를 쓰레기로 취급하고 Garbage Collector를 실행시켜 자동으로 제거함
- JVM 스택 영역
메소드를 호출할 때마다 프레임을 추가(push)하고 메소드가 종료되면 해당 프레임을 (pop)하는 동작 수행
로컬 변수 스택: 변수가 push & pop 됨, 변수가 초기화 될 때 변수가 생성됨, 변수는 선언된 블록 안에서만 존재하고 블록을 벗어나면 스택에서 제거 됨 (for문 안의 int i = 0 생각하기)

기본 타입 변수는 스택 영역에 직접 값을 가지고 있지만 참조 타입 변수는 스택 영역에 힙 영역의 객체 주소를 가짐 (참고로 자바는 배열을 객체 취급)

참조 변수의 ==, != 연산

  • 참조 타입 변수 값은 힙 영역의 주소이므로 번지 값을 비교하는 것이 됨
  • 동일한 번지 값을 갖고 있다는 것은 동일한 객체를 참조한다는 의미
    ex) 참조 타입 변수 x,y,z에서 변수 x, y가 동일한 객체를 참조하고 있을 경우
    x == y ----> true , x != y ----> false

null과 NullPointerException

  • 참조 타입 변수는 객체를 참조하지 않는 다는 뜻으로 null을 가질 수 있음
  • null도 초기값으로 사용할 수 있음 (null로 초기화 된 참조 변수는 스택영역에 생성)
    ex) 변수가 null값을 가지는지 확인하려면
    x == null , x != y을 해보면 됨
  • 예외(Exception): 프로그램 실행 도중에 발생하는 오류
    NullPointerException:참조 타입 변수를 잘못 사용하면 발생하는 오류
    ex)
	int[] intArray = null;
    intArray[0] = 10;	// NullPointerException
    // intArray가 참조하는 배열 객체가 없기 때문에 오류 발생
    
    String str = null;
    System.out.println("총 문자수: " + str.length());	// NullPointerException
    // str 변수가 참조하는 String 객페가 없기 때문에 오류 발생

String 타입

  • 변수는 스택 영역에 생성, 문자열 리터럴은 힙 영역에 String 객체로 생성됨, 그 String 객체의 번지 값이 스택에 있는 변수에 저장됨
  • 그림과 같이 "남자"라는 동일한 문자열 리터럴을 참조할 경우 변수 a, b는 동일한 String 객체를 참조하게 됨
  • new 연산자: 힙 영역에 새로운 객체를 만들때 사용(new 연산자를 사용해 직접 String 객체를 생성시킬 수도 있음)
	String name = new String("추다율");

-> 문자열 리터럴로 생성하느냐, new연산자로 생성하느냐에 따라 비교 연산자의 결과는 달라질 수 있음(변수에 저장된 객체의 번지가 동일한지를 검사하기 때문)


=> 생성 과정에 상관없이 내부 문자열을 비교하고 싶을 경우에는 equals() 메소드를 사용

	boolean result = str1.equals(str2);

[05-2] 배열

  • 같은 타입의 데이터를 연속된 공간에 나열하고 각 데이터에 인덱스(index)를 부여해놓은 자료구조
    index란 배열 이름 옆 대괄호에 기입됨. 0부터 시작

<배열의 특징>
1. 같은 타입의 데이터만 저장할 수 있다.
2. 한번 생성된 배열은 길이를 늘리거나 줄일 수 없다.

  • 배열 선언
	// 데이터 타입[] 변수;
    int[] score;
    double[] x;
    String[] y;
    
    // 데이터 타입 변수[];
    int score1 [];
    double x2[];
    String y3[];

배열은 참조 변수에 속함(힙 영역에 생성되고 스택 영역의 배열 변수는 힙 영역의 배열 객체 참조), 참조할 배열 객체가 없다면 null 값으로 초기화 가능(그대로 사용하지 않도록 주의)

  • 배열 생성 (값 목록 이용 방법)
    값의 목록이 있을 때
	int[] score = {1, 2, 3};

{ } 중괄호는 안의 값들을 항목으로 가지는 배열 객체를 힙에 생성하고 배열 번지를 리턴함
-> 배열 변수는 리턴된 번지를 저장함 (참조)

	String[] names = {"신용권", "홍길동", "김자바"};
    // 신용권은 names[0], 홍길동은 names[1], 김자바는 names[2]
    
    // 홍길동 -> 홍삼원으로 수정시
    names[1] = "홍삼원";
	package sec02.exam01;

	public class ArrayCreateByValueListExample1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] scores = {83, 90, 87};
		
		System.out.println("scores[0]: " + scores[0]);
		System.out.println("scores[1]: " + scores[1]);
		System.out.println("scores[2]: " + scores[2]);
		
		int sum = 0;
		for(int i = 0; i < 3 ; i++) {
			sum += scores[i];
		}
		
		System.out.println("총합: " + sum);
		double avg = (double) sum / 3;
		System.out.println("평균: " + avg);
	}
}
/*
scores[0]: 83
scores[1]: 90
scores[2]: 87
총합: 260
평균: 86.66666666666667
*/

값 목록 생성에서 주의할 점
1. 배열 변수를 선언한 후에는 실행문에서 중괄호를 사용한 배열 생성이 허용되지 않음(컴파일 에러)
=> new 연산자 이용 (메소드의 매개값이 배열일 경우도)

	타입[] 변수;
    변수 = {0,1,2};	// 컴파일 에러!!
    
    // new 연산자 이용
    변수 = new 타입[] {0,1,2};
    
    // ex
     String[] names = null;
     names = new String[] {"신용권", "홍길동"};

ex)

	package sec02.exam02;

	public class ArrayCreatByValueListExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int scores[];
		scores = new int[] {83, 90, 87};
		int sum1 = 0;
		
		for (int i = 0; i < 3; i++) {
			sum1 += scores[i];
		}
		System.out.println("총합: " + sum1);
		
		int sum2 = add(new int[] {83, 90, 87});
		System.out.println("총합: " + sum2);
		System.out.println();
	}
	public static int add(int[] scores) {	// 총합을 계산해서 리턴하는 메소드
		int sum = 0;
		for (int i = 0; i < 3; i++) {
			sum += scores[i];
		}
		return sum;
	}

}
  • 배열 생성 (new 연산자 이용 방법)
    값이 목록을 가지고 있지 않지만, 향후 값들을 저장할 배열을 미리 만들고 싶을 때
	타입[] 변수 = new 타입[길이];
    
    // 배열 변수가 이미 선언 되었을 때
    타입[] 변수 = null;
    변수 = new 타입[길이];
    
    // ex
    int[] intArray = new int[5];	// 기본값 0으로 자동 초기화됨
    int[] scores = new int[30];
    
   	String[] names = new String[30];	// 기본값 null로 자동 초기화
    
    // 특정 인덱스에 값을 저장
    int[] scores 
  • 타입 별 배열의 초기값

글 전체 이미지 출처: 구글 검색 이미지

profile
새싹 개발자 🌱

0개의 댓글