github.com/whiteship/live-study/issues/5
목표자바의 Class에 대해 학습하세요. 학습할 것 (필수)
|
1. 클래스 정의하는 방법
클래스명 작성 규칙
하나 이상의 문자로 이루어져야 한다. |
첫 번째 글자는 숫자가 올 수 없다. |
'$' , '_' 외의 특수 문자는 사용할 수 없다. |
자바 키워드(예약어)는 사용할 수 없다. |
- 클래스 구성 멤버
- field : 객체의 데이터가 저장되는 곳 (변수 아님. 객체와 함께 생성+소멸)
- constructor : 객체 생성 시 초기화 역할 담당
- method : 객체의 동작에 해당되는 실행 블록
2. 객체 만드는 방법 (new 키워드 이해하기)
new 연산자 : 클래스로부터 객체를 생성시키는 연산자. new 키워드 뒤에는 생성자가 온다.
new 연산자로 생성된 객체는 메모리 힙(heap) 영역에 생성되며, 객체의 주소가 리턴된다.
클래스 변수 = new 클래스(); // new 연산자와 생성자로 새로운 객체 생성 후 주소값 리턴
3. 메소드 정의하는 방법
4. 생성자 정의하는 방법
만약 생성자를 따로 정의하지 않으면 컴파일러가 디폴트 생성자를 생성 해준다.
클래스 (매개변수선언, .. ) {
//객체의 초기화 코드
}
5. this 키워드 이해하기
this : 객체 자신을 가리킨다.
주로 객체 내부에서 인스턴스 멤버에 접근하기 위하여 사용
Car(String model) {
this.model = model; //this.model : 인스턴스 멤버, model : 매개변수
}
6. 과제
Node 클래스 정의
package exam;
public class Node {
public int val;
public Node left;
public Node right;
public Node(int val, Node left, Node right) {
this.val = val;
this.left = left;
this.right = right;
}
};
DFS & BFS
import java.util.ArrayList;
import java.util.List;
public class BinaryTree {
private Node BinaryTree(int data, Node nowNode) {
if(nowNode == null) return new Node(data);
if(nowNode.val > data) nowNode.left = BinaryTree(data, nowNode.left);
if(nowNode.val < data) nowNode.right = BinaryTree(data, nowNode.right);
return nowNode;
}
public void bfs(Node node) {
List<List<Integer>> answer = new ArrayList<>();
if(node == null) return answer;
ArrayList<Integer> list = new ArrayList<>();
list.add(node.val)
answer.add(list);
levelOrder(node, 1, answer);
for(List<Integer> iList : answer) {
for(int i : iList) {
System.out.print(i+" ");
}
}
}
public void levelOrder(Node node, int depth, List<List<Integer>> answer) {
if(answer.size() < depth + 1) {
ArrayList<Integer> list = new ArrayList<>();
if(node.left != null) list.add(node.left.val);
if(node.right != null) list.add(node.right.val);
if(list.size() != 0 ) answer.add(list);
}else {
List<Integer> list = answer.get(depth + 1);
if(node.left != null) list.add(node.left.val);
if(node.right != null) list.add(node.right.val);
}
if(node.left != null) levelOrder(node.left, depth + 1, answer);
if(node.right != null) levelOrder(node.right, depth + 1, answer);
}
public void dfs(Node node) {
if(node.left != null) dfs(node.left);
System.out.print(node.val+" ");
if(node.right != null) dfs(node.right);
}
}
출처 : 이것이 자바다 ( 신용권 저)
'Programming > Java' 카테고리의 다른 글
[whiteship 온라인 스터디] 7주차 과제 - 패키지 (0) | 2021.01.02 |
---|---|
[whiteship 온라인 스터디] 6주차 과제 - 상속 (0) | 2020.12.26 |
[whiteship 온라인 스터디] 4주차 과제: 제어문 (0) | 2020.12.26 |
[whiteship 온라인 스터디] 3주차 과제: 연산자 (0) | 2020.12.26 |
[whiteship 온라인 스터디] 2주차 과제: 자바 데이터 타입, 변수 그리고 배열 (0) | 2020.12.26 |