객체, 인스턴스의 개념을 이해하기 위해 정리하는 내용입니다. 클래스 (Class) 개념 객체를 만드는 설계도 또는 틀 /* 클래스 */ public class Car { ... } 객체 (Object) 개념 소프트웨어 세계에 구현할 대상 클래스에 선언된 모양 그대로 생성된 실체 설계도(클래스)에서 만들어낸 제품(?) 특징 모든 레퍼런스 타입을 객체라고 부르기도 한다. 객체는 모든 인스턴스를 포괄하는 의미를 갖는다. OOP 관점에서 클래스 타입으로 선언되었을 때 객체라고 부른다. public class Main { public static void main(String[] args) { Car santafe, tucson;// 객체 } } 인스턴스 (Instance) 개념 설계도를 바탕으로 소프트웨어 세계..
내가 너무 자바에 기초에 대해서 공부를 제대로 안했다고 생각해서 다시 정리하게 되었다.. Call By Value ? Call By Reference ? 메소드에서 인자값을 받을 때, 값에 의한 호출인지, 참조에 의한 호출인지 결론부터 말하자면 자바는 Call By Value 방식이다. public class Test{ static void changeString(String s){ s = new String("new"); } public static void main(String[] args){ String a = "old"; System.out.println(a); changeString(a); System.out.println(a); // old? new? 뭐가 출력될까 } } 실행결과 old ol..
학습 할 내용들 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 자바 상속의 특징 상속의 매우 치명적인 오해 : "상속은 코드의 재활용을 위한 문법입니다." (X) "연관된 일련의 클래스들에 대해 공통적인 규약을 정의할 수 있습니다." (O) 상속의 가장 기본적인 특성 부모클래스의 필드, 메소드만 상속되며, 생성자와 초기화 블록은 상속되지 않는다. 부모 클래스의 private, default로 설정된 멤버는 자식 클래스에서 상속 받지만 접근할 수는 없다. Animal 클래스 public class Animal { String name; String bark; public void..
www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 분석 퀸의 공격 방향 퀸의 특성상 한줄에 하나씩 밖에 둘수가 없게 된다. 일단 먼저 N이 4라고 가정하고, 퀸을 배치해보자. 4 X 4 체스판에 [0][0] 위치에 1번째 퀸을 둔다고 하면, 1번째 퀸, [0][0]에 두는 경우 다른 퀸을 배치하지 못하는 위치(퀸의 공격을 받을 수 있는 곳)은 위의 그림 처럼 된다. 그러면 2번째 퀸을 놓을 수 있는 곳은, [1][2] 와 [1][3] 두 가지 이렇게 [1][2]와 [1]..
int 형의 범위는 약 -21억부터 ~ 21억 까지 이다. 만약에 아래의 경우의 평균을 구하면 어떤 값이 나올까? (조건, num1과 num2는 각 각 int형의 최대값을 넘기지 않는다.) int num1 = 2_100_000_000; int num2 = 2_100_000_000; int avg = (num1 + num2) / 2; System.out.println("평균 값 : " + avg); 실행 결과 -47,483,648// 쓰레기 값이 나오게 된다.(오버플로우) 기대 했던 값은 20억이지만, 21억을 넘어가면서 오버플로우가 발생해서 -147.. 값이 나오게 되는 것이다. 그렇다면, 이를 방지할 평균 구하는 방법은 ? int num1 = 2_100_000_000; int num2 = 2_100_0..
이진탐색 트리 구조 이진탐색 트리의 조건 (이진 트리와 다르다) 모든 원소는 중복된 값을 가지면 안된다. 트리의 루트를 기준으로 왼쪽에 존재하는 노드들의 값은 루트의 값보다 작아야 한다. 반대로 오른쪽에 존재하는 노드들의 값은 루트의 값보다 커야 한다. 이진탐색 트리의 삽입 위에 이진트리의 조건을 이용해서 삽입을 위 그림 처럼 해주면 된다. 삽입 코드를 작성해 보면, public class BinaryTree { Node root; public void insertNode(int value) { /* root가 비었을 경우 */ if(root == null){ root = new Node(value); }else { Node temp = this.root; while(true) { /* 왼쪽으로 가야 하..