반응형

Stack 


▶ 여러 개의 데이터 항목들이 일정한 순서로 나열된 자료구조

▶ 한쪽 끝에서만 새로운 항목을 삽입하거나 기존의 항목을 제거할 수 있다.

(L)ast (I)n (F)irst (O)ut ==> LIFO방식

▶Vector 클래스를 상속받아서 구현된다.



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
29
30
31
32
33
package stack;
 
import java.util.Stack;
import java.util.Vector;
 
public class StackTest {
    public static void main(String[] args) {
        // stack은 Vector를 상속받는다.
        //Vector<String> stack = new Stack<String>();
        
        Stack<String> s = new Stack<String>();
        
//        s.push("a");
//        s.push("b");
//        s.push("c");
//        
//        while(!s.isEmpty()) {
//            String value = s.pop();
//            System.out.println(value);
//        }
//        
//        s.pop(); // Exception occurs when stack is empty
 
        s.push("a");
        s.push("b");
        s.push("c");
        
        System.out.println(s.pop());
        System.out.println(s.peek()); // 제일 위에 어떤 값이 있는지 확인만 해줌, pop은 안함..
        System.out.println(s.pop());
    }
}
 
cs


Queue


▶ 리스트와 유사한 자료구조

▶ 항목들의 리스트에서 가장 마지막에 새로운 항목이 추가된다.

▶ 기존 항목의 제거는 리스트의 처음에서 일어난다.

(F)irst (I)n (F)irst (O)ut ==> FIFO방식

▶ LinkedList를 상속받아서 구현




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
package queue;
 
import java.util.LinkedList;
import java.util.Queue;
 
public class QueueTest {
    public static void main(String[] args) {
        // Queue는 LinkedList를 상속받는다.
        // Queue ==> (F)irst (O)ut (F)irst (I)n
        // Queue는 KAFKA(Message Queue)에서 많이 사용한다.
        Queue<String> q = new LinkedList<String>();
        
        //데이터 삽입
        q.offer("a");
        q.offer("b");
        q.offer("c");
        
        // 데이터 출력
        while(!q.isEmpty()) {
            String value = q.poll();
            System.out.println(value);
        }
    }
}
 
cs


반응형
반응형

final이 가진 의미는 필드, 메소드, 클래스에 따라 각각 달라진다.


1. 필드에 final이 붙으면?

1
public final int A = 1234;
cs

상수를 뜻한다.

개발자들끼리의 약속으로 상수는 모두다 대문자로 지정해야한다.



2. 메소드에 final이 붙으면?

1
2
3
public final void func() {
        // Override 금지
}
cs


Override 금지!!


3. 클래스에 final이 붙으면?


대표적인 final 키워드가 붙은 클래스이다.

클래스에 final 키워드가 붙는다면 다른 클래스에서 해당 클래스를 상속 금지한다.




끝-

반응형
반응형

접근 제한자(Access Modifier)는 외부에서 해당 클래스에 접근할 수 있는 정도를 말한다.


외부에서 모두 접근할 수 있는 public부터 자기 자신만 접근 가능한 private까지 4가지의 접근 지정자가 존재한다.



4가지의 접근 제한자를 그림으로 표현하면 다음과 같다.





1. 모두 다 접근 가능한 public


public은 내부 외부에서 모두 접근이 가능하다. 

적용할 수 있는 범위 >> 클래스, 필드, 생성자, 메소드



2. 자식만 접근 가능한 protected


protected는 상속 받은 자식 클래스에서만 접근이 가능하다.

자식 클래스가 아닌 다른 패키지에 소속된 클래스는 접근이 불가능하다.

적용할 수 있는 범위 >> 필드, 생성자, 메소드



3. 나의 패키지 내에서만 접근 가능한 default


클래스를 선언할 때 public을 생략했다면 알게 모르게 클래스는 default 접근 제한을 가진다.

default는 같은 클래스 내에서만 접근이 가능하다.

다른 클래스는 접근이 불가능하다.

적용할 수 있는 범위 >> 클래스, 필드, 생성자, 메소드



4. 나 빼고 아무도 안돼 private


private는 모든 외부 클래스에서 접근이 불가능하다.

적용할 수 있는 범위 >> 필드, 생성자, 메소드

필드를 private로 설정했다면 public 접근 제한자를 가진 getter, setter 메소드를 통해서만 외부와 공유 가능하다.



반응형

'Programming Language > JAVA' 카테고리의 다른 글

[Java]Overriding / Overloading이 뭐야? 같은거 아냐?  (2) 2018.12.27
[Java] final 넌 누구냐?!  (2) 2018.12.27
[급여관리 프로그램(Has~A 만)  (24) 2018.07.16
[Java]Enum  (0) 2018.07.12
클래스 구성요소  (0) 2018.07.10
반응형

[ 이클립스에서 Git에 Push하기 ]



예전에 Git을 배우기 위해서 팀원에게 어설프게 배운적이 있다.

이 당시엔 원격 저장소가 뭔지 로컬 저장소가 뭔지에 대해 개념이 잡히지 않은 상태에서 커밋 또는 풀/푸시를 하려니 저장소를 어디에 만들어야하는지 등 이러한 오류에 붙잡힌적이 있다.



Git이란?

컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일의 작업을 조율하기 위한 분산 버전 관리 시스템이다.

(출처 : 위키백과)



이클립스에서 git을 사용하는 방법을 알아보자.


1. 먼저 이클립스를 실행 시킨 후 Java Project를 생성해 준다.

2. Hello World 출력해준다.


3. 프로젝트 우클릭 → Team → Share Project 클릭



Use or create repository in parent folder of project를 체크v하게되면 생성한 프로젝트 폴더 내에 로컬 저장소를 생성하겠다는 의미이다.

만약 다른 폴더에 로컬 저장소를 생성하고 싶은 경우 체크를 하지 않고 create 클릭 후 경로를 지정해 주면 된다.

필자는 프로젝트 폴더 내에 로컬 저장소를 생성하겠다.



체크를 하면 화면이 바뀌는데 Create Repository를 선택하면 위의 Hello 프로젝트를 선택할 수 있다.


이것의 역할은 로컬 저장소와 현재 프로젝트를 공유를 하게 하는데 

여기서 공유란?

로컬 저장소에 현재 프로젝트를 zip파일로 만들어서 복사 붙여넣기를 하지 않고 즉각적으로 반영할 수 있게 하는 것이다.



Finish 클릭



4. Package Explore를 보면 Hello프로젝트에 없던 원기둥 모양이 생겼다.



5. Git Repositories를 열어서 공유된 Hello 프로젝트가 있는지 확인할 것이다.

필자는 이미 테스트 한 바 있으므로 Package Explorer 옆에 있다.(하단에 있던 것을 저기로 옮긴 것이다.) 

Window → Show View  git검색  Git Repositories 선택

이렇게 하면 하단에 Git Repositories가 생길 것이고 원하는 곳에다가 드래그 앤 드롭해서 두면 된다.


Git Repositories를 열어보자.

Hello가 존재하고 밑에 펼쳐보면 쭈루룩 뜬다.

Working Tree가 Hello 프로젝트의 워크스페이스와 같은 내용이다.


6. Github 사이트에 들어가서 Hello프로젝트가 저장될 Repository를 만들어보자.

사이트 들어가서 로그인 후 

Repositories 클릭


new 클릭


Repository name 입력 후 Create repository 클릭


밑줄 그어진 부분이 원격 저장소의 경로이다.

그냥 복사하거나 옆의 버튼을 눌러서 복사하자.


7. 다시 이클립스로 돌아와서 로컬 저장소와 원격 저장소를 연결해보자.

Hello Repository에 보면 Remote가 있다.

우클릭 → Create Remote 클릭

Remote name은 그대로 origin으로 하고 아래에 Configure push가 아니라 Configure fetch를 선택해준다.

Configure push는 원격 저장소에 push만 할 수 있는 역할이고

Configure fetch는 push뿐만 아니라 pull도 같이 할 수 있다.


그리고 Create 클릭

Github에서 복사한 원격 저장소의 경로를 넣어 줄 것이다.

Change를 클릭하면 

아까 복사한 원격 저장소의 경로와 아래의 사용자 Id, Password까지 나온다.

Finish하기 전에 Store in Secure Store를 체크v하게 되면 push할 때마다 매번 로그인 하지 않고 저장하고 사용한다.

Finish 클릭


Save and Fetch 클릭


창이 꺼지고 Git Repositories를 확인하면 Remote부분이 달라진 것을 볼 수 있다.


8. 이제 프로젝트를 Git에 업로드 해보자.

Git Repositories에서 Hello Repository 우클릭 → Show In → Git Staging 클릭



하단에 Git Staging 뷰가 나타난다.


Unstaged Changes에 프로젝트 파일이 올라가있고 Git에 올리고 싶은 파일을 선택해 Staged Changes로 드래그 하면된다.

※ 주의사항

프로젝트를 다른사람과 협업할 경우 소스 파일 외 classpath나 다른 파일을 같이 업로드 하면 다른 사람이 pull할 때 경로가 바뀔 수 있으니 주의해야한다.



올릴 파일을 Staged Changes에 드래그 한 후 Commit Message에 무엇이 바꼈는지 입력해 주고 Commit and Push를 클릭하자.


next클릭


Finish클릭


Git에 push가 완료되었음을 알려준다.

Close클릭



9. 마지막으로 원격 저장소에 Hello 프로젝트가 push되었는지 확인해보자.

Repository에 들어가서..

Commits를 클릭. (앞의 숫자는 해당 Repository에 얼마나 Commit했는지 보여준다.)


init Commit은 push할 때 Commit Message를 적었던 내용이다.

수정 상태를 보기 위해서는 Commit Message를 클릭하면 된다.


빨간 글자가 수정사항이라는 것을 알려준다.





이런식으로 Git을 사용하여 프로젝트를 관리하면 된다.


끝-

반응형

+ Recent posts