일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- maven
- wrapper
- suvlet
- Scanner
- 언박싱
- 컬렉션
- 클래스
- Short
- 박싱
- https://start.spring.io
- boxing
- Jenkins
- 싱글톤
- start.spring.io
- unboxing
- dependency
- 자동형변환
- 제너릭
- bootstrap
- 인텔리제이
- 무한
- 내장객체
- 스프링
- 콜렉션
- Java
- 빌드
- 메소드
- 싱글턴
- 루프
- 제네릭
- Today
- Total
목록K-DigitalTraining 강의 (333)
Developer Gonie
* 재귀함수란? 자기가 자기 자신을 호출하는 것을 말함. 또한 함수는 return을 만나거나 마지막 괄호를 만나야 종료가 된다는 것을 고려하여 작성하면 좋음. 부메랑에 비유하면 부메랑이 돌아오려면 위와 같은 상황이 충족되어야 돌아올 수 있음. 코드 public class Ex05_08_재귀호출 { public static void main(String[] args) { show(3); } static void show(int cnt) { System.out.println("Hi~" + cnt); if(cnt == 1) return; show(--cnt); } } 실행결과 Hi~3 Hi~2 Hi~1 코드 public class Ex05_09_재귀호출 { public static void main(Strin..
* 매개변수로 배열을 넘길땐, 배열의 시작주소를 넘기는 것임. 참조변수는 배열의 시작주소를 담고있음. 코드 public class Ex05_06_배열넘기기 { public static void main(String[] args) { int[] arr = {1, 2, 3}; Ex05_06_배열넘기기 e = new Ex05_06_배열넘기기(); e.sub(arr); // 참조변수에는 주소가 담겨있는데 때문에 배열의 시작주소가 넘어감 } void sub(int[] x) { for(int t: x) { System.out.print(t+ " "); } } } 실행결과 1 2 3
* statc변수의 다른 이름은 클래스 변수이다. 객체가 생성되기 전부터 메모리에 올라가는 변수로, 같은 클래스로 객체를 여러개 생성하더라도 공유가 되어 아래와 같은 출력결과가 나오는 것이다. 코드 class Var{ static int a; // static 변수 int b; // instance변수 void increment() { int c=0; // 지역변수 a++; b++; c++; System.out.println("a:"+a); System.out.println("b:"+b); System.out.println("c:"+c); } }//Var public class Ex05_07_변수 { public static void main(String[] args) { Var v1 = new Var(..
* 클래스 내에서 멤버함수를 정의할 때, 앞의 'static'은 필요에 따라 있어도 되고, 없어도 되는데, 'static'을 붙이면 static변수(=클래스변수)와 동일하게 객체를 생성하기 전부터 메모리에 올라가 바로 클래스명으로 함수를 호출하는게 가능하다. 반대로, 만약 함수 정의시 'static'을 붙이지 않았다면 객체를 생성 후 객체를 통해 함수를 호출해야한다. * 위 원리로 컴파일될 때 객체를 만들지 않아도 main 함수가 호출될 수 있도록 static이 붙는 것임. * mian 함수 같은 "static 메서드는 static 메서드만 (바로) 호출할 수 있다." static이 아닌 메서드를 호출하고자 한다면 객체를 생성 후 호출해야 한다. Q. 첫번째 문제, 아래에서 뭐가 문제인지 찾고 올바른 수..
아래 예시는 이전 예시와 다르게 main함수가 포함된 클래스 내에서 멤버함수를 정의해서 사용하는게 아닌 그 밖의 클래스에서 멤버함수를 정의해서 사용하는 예시임. 코드 class Calculator { static int add(int x, int y) { return x + y; } static int sub(int x, int y) { return x - y; } int mul(int x, int y) { return x * y; } } public class Ex05_04_메서드 { public static void main(String[] args) { // main 메서드 정의 System.out.println("덧셈결과"+ Calculator.add(10, 20)); System.out.prin..
* 리턴타입이란? 함수작성할 때 함수명 왼쪽에 넣어주는 void, int, 등 * 매개변수(=파라미터) 함수 호출시 넘겨받은 인자를 담는 변수를 매개변수라고 함 * (전달)인자(=Argument) 함수 호출할때 넘겨주는 숫자 등 코드 public class Ex05_03_메서드 { public static void main(String[] args) { // main 메서드 정의 // static이 붙은 메서드는 바로 호출 가능 show(); add(3, 4); System.out.println("세 수의 뺄셈:" + sub(100, 11, 22)); // static이 붙지 않은 메서드는 객체를 생성후 호출가능 Ex05_03_메서드 e = new Ex05_03_메서드(); System.out.print..
* 아래의 두 변수들은 초기화 해주지 않아도 자동으로 0으로 초기화 되지만(boolean형 변수는 false로) 일반 지역변수의 경우는 자동으로 초기화 되지 않으므로, 초기화 해준 뒤에 사용해야 한다. * 멤버변수 = 인스턴스변수 '멤버변수'란 클래스 내부의 변수들인데, 인스턴스를 만들어야 변수에 대한 공간이 할당되므로 '인스턴스 변수'라고 부르기도 함. * static변수 = 클래스변수 객체를 생성하기 전부터 생성되어, 같은 클래스로 생성된 모든 객체가 공유하게 되는 변수인데, 클래스 이름으로 접근하는게 일반적이라서 '클래스변수'라고 부르기도 한다. 객체를 통해서도 접근해도 실행은 되지만 이 변수는 하나의 객체에 한정되어 존재하는게 아니기 때문에 경고 메세지가 뜰 것임. 코드 class Person {..
* 클래스란? 8가지의 기본자료형이 아닌 사용자 정의 자료형이다. * 멤버변수란? 클래스 내부에 있는 변수 * 객체란? 참조변수를 생성후 new를 통해 별도의 메모리 생성 과정을 거쳐 만들어진 것. class Person{ String name; int age; double height; } public class Ex05_01_클래스 { public static void main(String[] args) { Person p1; // 참조변수 생성 p1 = new Person(); // 참조변수를 생성하는 것 만으로는 데이터를 담을 수 있는 공간이 안생기는데 // new를 해주면 name, age, height를 담을 수 있는 공간이 생김 // 그리고 참조변수 p1은 이 공간의 시작주소를 가리키게 됨 ..
* 아래의 코드는 1차원 배열을 선택정렬을 이용하여 정렬한 것 [0]-[1],[2],[3],[4] 매번 비교해서 더 작은수를 찾을 때 마다 0번 자리랑 바꿈 [1]-[2],[3],[4] 매번 비교해서 더 작은수를 찾을 때 마다 1번 자리랑 바꿈 [2]-[3],[4] 매번 비교해서 더 작은수를 찾을 때 마다 2번 자리랑 바꿈 [3]-[4] 매번 비교해서 더 작은수를 찾을 때 마다 3번 자리랑 바꿈 코드 public class Ex04_07_정렬 { public static void main(String[] args) { int[] arr = {8, 3, 5, 2, 9}; for(int i = 0; i
코드 public class Ex04_05_2차원 { public static void main(String[] args) { int[][] arr = { { 80, 72, 63, 83 }, { 92, 21 }, { 99, 49, 59, 92 } }; System.out.println(arr.length); System.out.println(arr[0].length); for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j] + " "); } System.out.println(); } System.out.println(); // 확장 for문을 이용한 배열원소 전체출력 ..
코드 public class Ex04_05_2차원 { public static void main(String[] args) { // 첫번쨰 방법 : 열의 개수 4개, 2개, 4개 이런식으로 달라도 되는게 특징 int[][] arr = { { 80, 72, 63, 83 }, { 92, 21 }, { 99, 49, 59, 92 } }; // 두번쨰 방법 : 열의 개수 4개, 2개, 4개 이런식으로 달라도 되는게 특징 int[][] arr2 = new int[][] { { 80, 72, 63, 83 }, { 92, 21 }, { 99, 49, 59, 92 } }; // 세번쨰 방법 : 열의 개수가 4개, 4개, 4개 모두 같게 형성되는게 특징. int[][] arr3 = new int[3][4]; // {{0..
확장 for문 확장 for문은 index가 있는 타입일 땐 항상 사용이 가능하며, 일반 for문과 다르게 index가 없는 경우에도 원소를 하나씩 꺼내어 출력할 수 있다는 장점이 있다. index가 존재하는 배열이나 List 인터페이스를 상속받은 ArrayList 는 index가 있어 일반 for 문으로도 모든 원소에 접근이 가능하다. 반면, index가 없는 Set 인터페이스를 상속받은 HashSet 같은 경우엔 인덱스로 원소에 접근이 불가한데, 여기서 확장 for문이 빛을 보인다. 확장 for문은 index의 존재 여부에 상관없이 요소를 하나씩 꺼내서 처리할 수 있기에 특히 index가 없는 타입을 처리할 때 유용한 방식이다. public class Ex04_01_1차원 { public static ..