목록Java (256)
코드 그라데이션
생성자 : 객체를 생성할 때 필요한 함수 // 이 정도로 정리하면 충분. Class A{ int a; // 멤버변수(속성) void print(int a // 매개변수 또는 인자){ // 메소드(기능) int b; // 메소드변수 또는 지역변수 } // default 생성자 -> 선언을 안하면 자동 추가 A(){ } } 내가 생성자를 따로 선언할 수도 있다. 디폴트 생성자는 선언이 안 되어 있을 때 자동 추가되는 것이고, 만약 다른 것이 선언 되어 있으면, 추가되지 않는다. 생성자를 명시적으로 선언할 때, 디폴트 생성자와 동일한 형태로 만들 수도 있다. ???? A a = new A(); 생성자(default 생성자) Class B{ B(int a, int b){ } } 생성자의 형태를 따라줘야 객체를 ..
클래스 도입 전, 한 가지 알고 가야할 것 자바는 객체지향언어 입니다.(O) 자바는 클래스지향언어 입니다.(X) 등장배경 1. 개수 제한 => 배열은 크기가 한 번 정해지면 변동이 불가능 2. 똑같은 자료형만 사용가능(특히 배열)하므로, 여러 정보를 한 번에 가져다가 저장하기가 어렵다. 이걸 보완하기 위해 먼저 등장한 개념 "구조체" 구조체 =>여러 자료형 변수를 하나의 변수로 관리하는 매커니즘. 그런데, 구조체 역시 한계가 왔다. 그래서 구조체에 함수(메서드) 개념을 더하여 => 클래스가 등장했다. 클래스란... 클래스 속성(데이터) + 기능(메소드) 의 집합 예시) 개(dog) 개 -> 이름(String), 키(int), 나이(int) // 짖는다, 움직인다, 꼬리를 흔든다. 속성 (필드) 기능(메서..
재귀함수 : 내가 나를 부르는 함수 더 정확하게는 함수 내부에서 자기가 자기를 호출하면서 작업을 수행하는 방식. * 재귀함수는 특정한 종료 조건이 있어야 함. => 그렇지 않으면 함수가 무한히 호출되어 StackOverflowError와 같은 예외가 발생할 수 있음. 코드 예시 static int abc(int a){ if(a == 0){ return 0 } else { return abc(a-1) + a; } } 이러한 상황인 것인데, 먼저 abc(5)가 호출되면 0이 아니므로 abc(4) 가 되고 num에는 5가 저장 다음으로는 abc(4)가 호출되는데 0이 아니므로 abc(3)이 되고 num에는 4가 저장 다음으로는 abc(3)이 호출되는데 0이 아니므로 abc(2)가 되고 num에는 3이 저장 다..
1. main문만 짜기 import java.util.Scanner; public class StarAndGugu { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (true) { System.out.println("[원하시는 메뉴를 선택하세요]"); System.out.println("1. 구구단 출력"); System.out.println("2. 별 찍기 출력"); System.out.println("3. 종료"); System.out.print("번호 선택 > "); int num = sc.nextInt(); if(num == 1) { System.out.println("[다음 중에서 고르시오]"..
/* 함수(메서드) 만드는 절차 - 하나의 행동 단위가 무엇일지 고민해본다. - ? 메서드명 (?) { } 형태로 위나 아래에 만든다 - 메서드에서 입력을 받아야 하는 값인지 자기가 직접 구현해도 되는 값인지 판단한다. (파라미터 유무 판단) - 또한 그 형태에 따라 void일지 리턴타입이 있어야 할지를 결정한다. - 붙여 넣고 빨간 줄 나오는 부분을 하나씩 수정한다. */
소스코드 public class Q2 { static String inputString() { Scanner sc = new Scanner(System.in); System.out.print("문자열 입력하세요 : "); return sc.next(); } static int inputNum() { Scanner sc = new Scanner(System.in); System.out.print("1. 짝수 2 홀수 : "); return sc.nextInt(); } static void printHJ(int num,String str) { for(int i = num-1;i
소스코드 public class Q3 { // 주고 안받고 static int makeRandom() { Random r = new Random(); return r.nextInt(26); } // 주고 받고 static int intSum(int r) { return 65 + r; } // 주고 받고 static char makeChar(int result) { return (char)result; } // 안주고 안받고 static void run() { String result = ""; for(int i = 0;i
소스코드 package Day12; import java.util.Scanner; public class Q1_1 { static int add(int a, int b) { return a + b; } static void minus(int a, int b) { System.out.println("결과값 : "+(a-b)+" 입니다."); } static int mul() { Scanner sc = new Scanner(System.in); int[] array =input(sc); return array[0] * array[1]; } static void div() { Scanner sc = new Scanner(System.in); int[] array =input(sc); System.out.pri..
1. 리턴값은 다른 메서드가 main 메서드에게 주는 값이다 -> 좀 더 정확하게는 호출 당한 메서드가 호출한 메서드에게 주는 값이다. public class _01 { static int addTwoNumbers(int a, int b) { return a+b; } public static void main(String[] args) { int sum = addTwoNumbers(100,200); System.out.println(addTwoNumbers(100,200)); } } 이런 경우는 main 에게 준다고 할 수 있지만, public class _01 { static int addTwoNumbers(int a, int b) { return a+b; } static void hello() { a..
이 모양이 나오도록 2차원 배열 활용하기 풀이 IDEA * 열이 증가하고 -> 행이 증가하고 / 또는, 열이 감소하고 -> 행이 감소하고 ... => 이 논리가 한 세트가 될 수 있다. * 이 두 개가 하나의 쌍으로 동작한다. * 한 번 반복 할 때마다 방향이 바뀌어야 한다. ** 방향 바꾸는 가장 간편한 방법이 switch를 이용하는 것! (변수 선언해서 활용하는 방법이겠지.) *** 이 sw는 부호를 바꾸는 역할만 수행하면 된다. 즉 열이 증가하고 -> 행이 증가하고 // 스위치 // 열이 감소하고 -> 행이 감소하고 이 로직. 반복 횟수를 나타내는 변수 k도 선언해서, k--;를 반복이 끝날 때마다 해주고, k==0 이 되면 break. 그런데 이 세트가 왜 가운데에 있는가? 열과 행이 하나의 세트..