Loading the catalog…
Loading the catalog…
프로그램이 조금만 커져도 변수를 하나씩 만들고 같은 코드를 반복해서 작성하는 방식은 금방 한계가 온다. Java에서는 배열 로 같은 타입의 데이터를 묶고, 메소드 로 반복되는 동작을 하나의 기능 단위로 나눌 수 있다. 1. 배열이 필요한 이유 상품 가격이 다섯 개 있다고 해보자. int price1 = 12000; int price2 = 18000; int price3 = 9500; int price4 = 22000; int price5 = 15000; 값이 늘어날수록 관리가 어려워진다. 같은 자료형의 값을 하나로 묶으면 훨씬 다루기 쉽다. int[] prices = {12000, 18000, 9500, 22000, 15000}; 2. 배열 만들기 크기를 먼저 정할 수 있다. int[] statusCodes = new int[3]; 각 요소는 인덱스로 접근한다. 인덱스는 0부터 시작한다. statusCodes[0] = 200; statusCodes[1] = 404; statusCodes[2] = 500; 배열의 길이는 length 로 확인한다. System.out.println(statusCodes.length); // 3 범위를 벗어난 인덱스에 접근하면 ArrayIndexOutOfBoundsException 이 발생한다. System.out.println(statusCodes[3]); // 예외 3. 배열 초기화 방법 String[] environments = new String[] { "dev", "staging", "production" }; 선언과 동시에 값을 넣는다면 new String[] 을 생략할 수 있다. String[] environments = {"dev", "staging", "production"}; 일반적으로 String environments[] 보다 String[] environments 형태가 자료형을 더 명확하게 보여주므로 많이 사용한다. 4. 배열 순회 인덱스가 필요할 때 int[] latencies = {120, 85, 210}; for (int i = 0; i < latencies.length; i++) { System.out.println(i + ": " + latencies[i]); } 값만 필요할 때 향상된 for 문을 사용할 수 있다. for (int latency : latencies) { System.out.println(latency); } 인덱스를 직접 수정하거나 위치 정보가 필요한 작업이 아니라면 향상된 for 문이 간결하다. 5. 2차원 배열 행과 열처럼 데이터를 구성할 때 사용할 수 있다. int[][] traffic = { {120, 130, 140}, {200, 210, 220} }; System.out.println(traffic[0][1]); // 130 중첩 반복문으로 순회할 수 있다. for (int row = 0; row < traffic.length; row++) { for (int col = 0; col < traffic[row].length; col++) { System.out.println(traffic[row][col]); } } 각 행마다 길이가 다를 수도 있으므로 안쪽 반복문의 조건은 traffic[row].length 처럼 작성하는 것이 안전하다. 6. 문자와 숫자의 관계 Java의 char 는 숫자 값으로도 표현할 수 있다. char upperA = 'A'; int code = upperA; System.out.println(code); // 65 ASCII 기준으로 숫자 '0' 은 48, 대문자 'A' 는 65, 소문자 'a' 는 97부터 시작한다. 하지만 Java 문자열 전체를 ASCII로만 이해하면 안 된다. Java는 유니코드를 다루며 char 는 UTF-16 코드 단위를 표현한다. 7. 메소드는 기능을 이름 붙인 코드 묶음이다 같은 코드를 여러 번 사용해야 한다면 메소드로 분리할 수 있다. public static void printSeparator() { System.out.println("----------------"); } public static void main(String[] args) { printSeparator(); System.out.println("사용자 목록"); printSeparator(); } 메소드를 사용하면 중복이 줄고 코드의 의도가 이름으로 드러난다. 8. 매개변수와 인자 메소드가 외부 값을 받도록 만들 수 있다. public static void printUser(String name) { System.out.println("user=" + name); } printUser("kim"); 엄밀히 구분하면 메소드 선언부의 name 은 매개변수(parameter) , 호출할 때 전달한 "kim" 은 인자(argument) 다. 여러 값을 받을 수도 있다. public static void printOrder(String orderId, int amount) { System.out.println(orderId + ": " + amount); } 9. 반환값 계산 결과를 호출한 곳으로 돌려주려면 반환형과 return 을 사용한다. public static int calculateTotal(int price, int quantity) { return price * quantity; } int total = calculateTotal(15000, 3); System.out.println(total); // 45000 반환값이 없는 메소드는 void 를 사용한다. public static void log(String message) { System.out.println(message); } 10. 메소드 오버로딩 같은 이름이지만 매개변수의 개수나 타입이 다른 메소드를 여러 개 정의할 수 있다. public static int add(int a, int b) { return a + b; } public static int add(int a, int b, int c) { return a + b + c; } public static double add(double a, double b) { return a + b; } 반환형만 다르게 만드는 것은 오버로딩이 아니다. // 컴파일 불가 int parse(String value) { ... } double parse(String value) { ... } 호출 시 어떤 메소드를 사용할지 매개변수 목록으로 구분할 수 있어야 한다. 11. 메소드를 쓰면 무엇이 좋아질까? 예를 들어 주문 금액 검증이 여러 위치에서 반복된다고 해보자. if (amount < 0) { System.out.println("잘못된 금액"); } 이를 메소드로 분리하면 규칙을 한곳에서 관리할 수 있다. public static boolean isValidAmount(int amount) { return amount >= 0; } if (!isValidAmount(amount)) { System.out.println("잘못된 금액"); } 이렇게 하면 코드가 무엇을 검사하는지 더 잘 보이고, 규칙이 바뀌어도 메소드 하나만 수정하면 된다. 12. 변수의 범위: Scope 메소드나 블록 안에서 선언한 지역 변수는 해당 범위를 벗어나면 사용할 수 없다. public static void main(String[] args) { int count = 10; if (count > 0) { String message = "데이터 있음"; System.out.println(message); } // System.out.println(message); // 사용 불가 } 지역 변수의 범위를 필요 이상으로 넓게 잡지 않으면 코드의 상태를 추적하기 쉬워진다. 13. main 메소드의 역할 전통적인 Java 애플리케이션의 시작점은 다음 메소드다. public static void main(String[] args) { // 프로그램 시작 } public : JVM이 외부에서 호출할 수 있음 static : 객체를 만들지 않고 실행 가능 void : 반환값 없음 String[] args : 실행 시 전달받는 문자열 인자 명령행 인자를 사용할 수도 있다. public static void main(String[] args) { if (args.length > 0) { System.out.println("mode=" + args[0]); } } 핵심 정리 배열은 같은 자료형의 여러 값을 하나의 변수로 관리한다. 배열 인덱스는 0부터 시작하고 길이는 array.length 로 확인한다. 인덱스가 필요하면 일반 for , 값만 필요하면 향상된 for 가 편리하다. 2차원 배열은 array[row][col] 형태로 접근한다. 메소드는 특정 기능을 수행하는 코드 묶음이다. 매개변수로 값을 받고 return 으로 결과를 반환할 수 있다. 오버로딩은 같은 이름과 서로 다른 매개변수 목록을 가진 메소드를 정의하는 것이다. 지역 변수는 선언된 블록 안에서만 사용할 수 있다.
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
Java 배열과 메소드: 데이터를 묶고 코드를 재사용하는 방법. 프로그램이 조금만 커져도 변수를 하나씩 만들고 같은 코드를 반복해서 작성하는 방식은 금방 한계가 온다. Java에서는 배열 로 같은 타입의 데이터를 묶고, 메소드 로 반복되는 동작을 하나의 기능 단위로 나눌 수 있다. 1. 배열이 필요한 이유 상품 가격이 다섯 개 있다고 해보자. int price1 = 12000; int price2 = 18000; int price3 = 9500; int price4 = 22000; int price5 = 15000; 값이 늘어날수록 관리가 어려워진다. 같은 자료형의 값을 하나로 묶으면 훨씬 다루기 쉽다. int[] prices = {12000, 18000, 9500, 22000, 15000}; 2. 배열…
Open source