728x90

 

1. 브랜치(branch) 생성 : branch

$ git branch 브랜치명

예시

$ git branch test1

2.브랜치(branch) 변경 : checkout

$ git checkout 브랜치명

 

 ※ 브랜치(branch) 생성 및 변경 한번에

-b 추가

$ git checkout **-b** 브랜치명

3.Merge

$ git **merge** <commit>

 

4. 브랜치(branch) 삭제 : branch -d

$ git **branch -d** 브랜치명

 

 

 

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository
$ git init
Initialized empty Git repository in D:/Git_Repository/.git/

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch -b test1
error: unknown switch `b'
usage: git branch [<options>] [-r | -a] [--merged] [--no-merged]
   or: git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-point>]
   or: git branch [<options>] [-l] [<pattern>...]
   or: git branch [<options>] [-r] (-d | -D) <branch-name>...
   or: git branch [<options>] (-m | -M) [<old-branch>] <new-branch>
   or: git branch [<options>] (-c | -C) [<old-branch>] <new-branch>
   or: git branch [<options>] [-r | -a] [--points-at]
   or: git branch [<options>] [-r | -a] [--format]

Generic options
    -v, --verbose         show hash and subject, give twice for upstream branch
    -q, --quiet           suppress informational messages
    -t, --track[=(direct|inherit)]
                          set branch tracking configuration
    -u, --set-upstream-to <upstream>
                          change the upstream info
    --unset-upstream      unset the upstream info
    --color[=<when>]      use colored output
    -r, --remotes         act on remote-tracking branches
    --contains <commit>   print only branches that contain the commit
    --no-contains <commit>
                          print only branches that don't contain the commit
    --abbrev[=<n>]        use <n> digits to display object names

Specific git-branch actions:
    -a, --all             list both remote-tracking and local branches
    -d, --delete          delete fully merged branch
    -D                    delete branch (even if not merged)
    -m, --move            move/rename a branch and its reflog
    -M                    move/rename a branch, even if target exists
    -c, --copy            copy a branch and its reflog
    -C                    copy a branch, even if target exists
    -l, --list            list branch names
    --show-current        show current branch name
    --create-reflog       create the branch's reflog
    --edit-description    edit the description for the branch
    -f, --force           force creation, move/rename, deletion
    --merged <commit>     print only branches that are merged
    --no-merged <commit>  print only branches that are not merged
    --column[=<style>]    list branches in columns
    --sort <key>          field name to sort on
    --points-at <object>  print only branches of the object
    -i, --ignore-case     sorting and filtering are case insensitive
    --recurse-submodules  recurse through submodules
    --format <format>     format to use for the output


csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch test1
fatal: not a valid object name: 'master'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git help
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [--super-prefix=<path>] [--config-env=<name>=<envvar>]
           <command> [<args>]

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone     Clone a repository into a new directory
   init      Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add       Add file contents to the index
   mv        Move or rename a file, a directory, or a symlink
   restore   Restore working tree files
   rm        Remove files from the working tree and from the index

examine the history and state (see also: git help revisions)
   bisect    Use binary search to find the commit that introduced a bug
   diff      Show changes between commits, commit and working tree, etc
   grep      Print lines matching a pattern
   log       Show commit logs
   show      Show various types of objects
   status    Show the working tree status

grow, mark and tweak your common history
   branch    List, create, or delete branches
   commit    Record changes to the repository
   merge     Join two or more development histories together
   rebase    Reapply commits on top of another base tip
   reset     Reset current HEAD to the specified state
   switch    Switch branches
   tag       Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)
   fetch     Download objects and refs from another repository
   pull      Fetch from and integrate with another repository or a local branch
   push      Update remote refs along with associated objects

'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch test
fatal: not a valid object name: 'master'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch test1
fatal: not a valid object name: 'master'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch master
fatal: not a valid object name: 'master'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git checkout test1
error: pathspec 'test1' did not match any file(s) known to git

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git checkout test
error: pathspec 'test' did not match any file(s) known to git

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch a
fatal: not a valid object name: 'master'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ ls -al
total 20
drwxr-xr-x 1 csy62 197609 0 Jul 31 03:18 ./
drwxr-xr-x 1 csy62 197609 0 Jul 14 08:20 ../
drwxr-xr-x 1 csy62 197609 0 Jul 31 03:17 .git/
-rw-r--r-- 1 csy62 197609 0 Jul 31 03:18 a.txt

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch test
fatal: not a valid object name: 'master'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch 'test'
fatal: not a valid object name: 'master'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git commit -m 1
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        a.txt

nothing added to commit but untracked files present (use "git add" to track)

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git add a.txt

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git commit -m 1
[master (root-commit) 0505a6a] 1
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch test

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (master)
$ git branch -m test1

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git branch
  test
* test1

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git checkout test
Switched to branch 'test'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test)
$ git checkout -b test2
Switched to a new branch 'test2'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git branch
  test
  test1
* test2

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git checkout test
Switched to branch 'test'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test)
$ git branch -m test0

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test0)
$ git branch
* test0
  test1
  test2

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test0)
$ git branch -d test2
Deleted branch test2 (was 0505a6a).

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test0)
$ git checkout -b test2
Switched to a new branch 'test2'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git checkout test1
Switched to branch 'test1'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git merge test2
Already up to date.

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git checkout test2
Switched to branch 'test2'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git add .

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git commit -m 1
On branch test2
nothing to commit, working tree clean

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git branch
  test0
  test1
* test2

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git branch -d test2
error: Cannot delete branch 'test2' checked out at 'D:/Git_Repository'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git checkout -b test3
Switched to a new branch 'test3'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test3)
$ git checkout test2
Switched to branch 'test2'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git branch -d test3
Deleted branch test3 (was 0505a6a).

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git add .

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git checkout test2
Already on 'test2'
A       "a - \353\263\265\354\202\254\353\263\270.txt"

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git checkout test1
Switched to branch 'test1'
A       "a - \353\263\265\354\202\254\353\263\270.txt"

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git merge test2
Already up to date.

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git checkout test2
Switched to branch 'test2'
A       "a - \353\263\265\354\202\254\353\263\270.txt"

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git add .

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git commit -m 1
[test2 76d033f] 1
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "a - \353\263\265\354\202\254\353\263\270.txt"

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git checkout test1
Switched to branch 'test1'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git merge test1
Already up to date.

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git checkout test2
Switched to branch 'test2'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git merge test3
merge: test3 - not something we can merge

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git merge test1
Already up to date.

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git branch
  test0
  test1
* test2

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git merge master
merge: master - not something we can merge

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git add .

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git show
commit 76d033f78943e8d9856b60b2c323dd80098a23fe (HEAD -> test2)
Author: neverGiveUpppppp <csy6219@naver.com>
Date:   Sun Jul 31 03:30:07 2022 +0900

    1

diff --git "a/a - \353\263\265\354\202\254\353\263\270.txt" "b/a - \353\263\265\354\202\254\353\263\270.txt"
new file mode 100644
index 0000000..e69de29

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git status
On branch test2
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   "a - \353\263\265\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270.txt"


csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git commit -m 1
[test2 c0f83ba] 1
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "a - \353\263\265\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270.txt"

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git merge
fatal: No remote for the current branch.

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git test1
git: 'test1' is not a git command. See 'git --help'.

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git checkout test1
Switched to branch 'test1'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git merge test2
Updating 0505a6a..c0f83ba
Fast-forward
 ...65\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270.txt" | 0
 "a - \353\263\265\354\202\254\353\263\270.txt"                            | 0
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "a - \353\263\265\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270.txt"
 create mode 100644 "a - \353\263\265\354\202\254\353\263\270.txt"

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git status
On branch test1
nothing to commit, working tree clean

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git show
commit c0f83baab10cff7a90120db6ba4f3975c3e743f7 (HEAD -> test1, test2)
Author: neverGiveUpppppp <csy6219@naver.com>
Date:   Sun Jul 31 03:32:43 2022 +0900

    1

diff --git "a/a - \353\263\265\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270.txt" "b/a - \353\263\265\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270.txt"
new file mode 100644
index 0000000..e69de29

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git branch
  test0
* test1
  test2

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git checkout test2
Switched to branch 'test2'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git add .

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git commit -m 2
[test2 d4529f8] 2
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "a - \353\263\265\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270.txt"

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git checkout test1
Switched to branch 'test1'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git add .

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git commit -m 3
On branch test1
nothing to commit, working tree clean

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git branch
  test0
* test1
  test2

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git checkout test3
error: pathspec 'test3' did not match any file(s) known to git

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git checkout test2
Switched to branch 'test2'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test2)
$ git checkout test1
Switched to branch 'test1'

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git branch -d test2
error: The branch 'test2' is not fully merged.
If you are sure you want to delete it, run 'git branch -D test2'.

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git merge test2
Updating c0f83ba..d4529f8
Fast-forward
 ...65\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270.txt" | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 "a - \353\263\265\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270 - \353\263\265\354\202\254\353\263\270.txt"

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git branch -d test2
Deleted branch test2 (was d4529f8).

csy62@DESKTOP-QNAHH4K MINGW64 /d/Git_Repository (test1)
$ git branch
  test0
* test1
728x90
반응형
728x90

 

이벤트 추가 : addEventListener
이벤트 삭제 : removeEventListener

 

addEventListener(연결이벤트, 실행할 함수)
 
 
마우스가 버튼에 올라가면 올라갔다고 콘솔로그 뜨고 클릭하면 클릭했다고 뜨고
클릭 후 이벤트가 삭제되면서 mouseover만 작동하고 click은 지우는 js코드 연습
 
 
    <h3>addEventListener</h3>
    <div id="first" class="div0"></div>
    <button id="do1">do1 확인</button>
    <button id="do2">do2 확인</button>
    <script>
        var do1 = document.getElementById('do1');
        var do2 = document.getElementById('do2');
        // var div0 = document.getElementByClass('div0');

        function dodo1_1(){
            console.log("click");
        }
        function dodo1_2(){
            console.log("in");
        }   
        function div0_1(){
            console.log("dvi0");
            div0.innerText = "hi";

        }

        do1.addEventListener('click',dodo1_1);
        do1.addEventListener('mouseover',dodo1_2);

        do2.addEventListener('click',function(){
            console.log('do2 실행. 제거하기');
            do1.removeEventListener('click',dodo1_1);

        // div0.addEventListener('click',div0_1);

        })

    </script>
728x90
반응형
728x90

 

하나의 값만 저장하는 공간인 변수는 하나만 저장이 가능하기에 배열이 만들어짐

 

배열이란?

같은 자료형의 데이터의 여러개의 값을 저장할 수 있는 공간

 

배열 선언

자료형[] 배열명; // 자바식. 대부분 이쪽 사용
자료형 배열명[]; // C언어식.

int[] arr;

배열은 선언만해서는 쓸 수 없고 할당까지 해야함

배열은 기본자료형이 아니며 참조자료형처럼 사용

구조가 참조자료형처럼 되어있어 주소값을 갖는다

기본형, 참조형 구분 기준 : call by value & call by reference

즉, 주소값을 가져오느냐 값 자체를 그대로 복사해서 가져오느냐

 

* Stack 영역에 공간 생성

 


 

배열 할당

heap 메모리 영역에 공간을 생성하는 것

(변수의 선언 : stack에 공간 차지)

자료형[] 배열명 = new 배열명[배열길이]
자료형 배열명[] = new 자료형[배열길이]

메모리 영역에 공간을 생성해주는 역할을 new 연산자가 실행

new 연산자가 배열 할당하는 역할+heap영역에 생성된 공간에 대한 주소값을 발생시킴

 

배열의 크기 변경 가능할까?

배열은 크기 변경 불가

새로운 배열을 만들고 바꿔치기하거라 주소값이 바뀐다(0x100→0x200)

System.out.print("새로 할당할 배열의 길이 입력 : ");
		int size = sc.nextInt();
		
		double[] dArr = new double[size];
		System.out.println("dArr의 길이 : "+dArr.length);
		System.out.println("dArr의 주소값 : "+ dArr); // [D@74a14482
		
		dArr = new double[5];
		System.out.println("변경 후 dArr의 길이 : " + dArr.length);// 배열 길이 변경 가능
		System.out.println("변경 후 dArr의 주소값 : " + dArr);		 // but 길이 변경 후 주소값 달라짐 [D@1540e19d
		System.out.println();								 // 
		// 주소값하면 new 연산자가 떠올라야. 
		// dArr[30]에서 new연산자가 쓰이면서 새로운 공간생성과 함께 주소값 생성하기에 주소값이 달라짐

그래서 주소값이 바뀌는 것(0x100→0x200)

기존 배열 유지x

new연산자에 의해 heap영역에 새로운 배열의 공간이 생성되고 그에 따라 stack에 있는 변수명 dArr의 참조 변수값(주소값)도 0x100→0x200 바뀜

 

new 연산자 역할

1)배열 할당 : heap 메모리 영역에 공간 생성

2)heap 영역에 생성된 공간에 대한 주소값 생성

-배열 한칸이 아닌 배열 한덩이 전체에 대한 주소값

ex)주소값 0x100

heap이 컴퓨터와 사용자가 같이 사용하는 공간인 것

배열명에 담긴게 heap메모리 영역에 생성된 주소값을 담은 것

주소를 통해서 실제 데이터를 가리키는 것이다.

 


 

배열 초기화

1)인덱스 이용

  1. 중괄호{}를 이용
  2. for문 이용

1)인덱스 이용

배열명[인덱스] 값;
ex) 
int[] iArr = new int[3];
iArr[0] = 1;
iArr[1] = 2;
iArr[2] = 3;
iArr[3] = 4; // error : 배열이 3칸 할당됬는데 없는 4칸째에 값을 할당하려해서 

 

2) 중괄호{} 이용

자료형[] 배열명 = {값,값};
ex)
int[] arr = {1,2,3,4}; // 값 수에 따라 알아서 배열 칸 지정하고 생성함

 

3) for문 이용

내가 초기화할 값에 ‘규칙’이 존재할 경우 사용가능

for문 인덱스 이용한거라 int만 가능

for(int i=0; i<str.length; i++) {   
    arr[i] = i + 1;
}

 


배열 삭제

null 상태로 만드는게 삭제

**dArr = null;**

null을 넣으면 0x100→0x200 바뀐주소가 null로 바뀌면서 0x200과 연결이 끊어지면서 0x200의 데이터는사리지고 사실상 삭제 효과가 나타난다

 

728x90
반응형
728x90

 

배열 선언 
배열 할당
배열 초기화 : 인덱스,중괄호,for문
배열 삭제 : null
배열 값 출력하는 방법 2가지 : for문, Arrays.toString()
배열 복사 : shallow copy & deep copy

 

코드 익히기 & 배운 것들


배열 크기 변경 불가(삭제하고 새로 만들기에 주소값이 변경됨)
배열 안 값이 최대길이보다 짧으면 값만큼만 출력되서 나옴(여분공간에 다른값x)
dArr[3] = 3; // 3.0으로 출력 -> 자동형변환(int to double) 
초기화 for문 방법은 int만 가능하나, 실수로 형변환 가능한 int면 for문 가능 -> int인 i가 실수로 변환 가능한 수이기에 

 

public void arrayPractice() {
    // 배열 선언 
    // 배열 할당
    // 배열 초기화 : 인덱스,중괄호,for문
    // 배열 삭제 : null
    // 배열 값 출력하는 방법 2가지 : for문, Arrays.toString()
    // 배열 복사 : shallow copy & deep copy
    //
    // 		배열 크기 변경 불가(삭제하고 새로 만들기에 주소값이 변경됨)
    //		배열 안 값이 최대길이보다 짧으면 값만큼만 출력되서 나옴(여분공간에 다른값x)
    //		dArr[3] = 3;	// 3.0으로 출력 -> 자동형변환(int to double) 
    // 		초기화 for문 방법은 int만 가능하나, 실수로 형변환 가능한 int면 for문 가능 -> int인 i가 실수로 변환 가능한 수이기에 
    // 		null인 배열값 확인 시, for문방법은 널포인트익셉션 쓰므로 Arrays.toString() 사용해야함

    //배열 선언
    String[] arr; // Stack 영역에 공간 생성

    //배열 할당
    String[] sArr1 = new String[3];
    String sArr2[] = new String[3];

    // 배열 초기화
    // 방법1 : 인덱스
    sArr1[0] = "a";
    sArr1[1] = "b";
    sArr1[2] = "c";

    // 방법2 : 중괄호 {} 이용
    // 선언과 동시에 초기화
//		sArr2 = {"a","b","c"}; // error : 중괄호 타입은 자료형부터 풀로 적어주는 형태에만 가능
    String[] sArr3 = {"a","b","c"};

    // 방법3 : for문
    // 배열이 int타입인 경우만 사용가능
    // 		double로 형변환 가능한 int면 for문 가능할까?  
    // 		가능. int인 i가 실수로 변환 가능한 수이기에
    int[] intArr = new int[5];
    for(int i=0; i < intArr.length;i++) {
        intArr[i] = i + 1;
    }
    for(int i=0; i < intArr.length; i++) {
        System.out.print(intArr[i]+" "); 	// 1 2 3 4 5
    }

    // 배열 삭제
    intArr = null;
    System.out.println(Arrays.toString(intArr)); // null

    // 배열 값 출력하는 방법
    //  1)for문
    //  2)Arrays.toString()

    // 1)for문
//		int[] baseArr = {1,2,3,4,5};
//		for(int i=0; i<baseArr.length;i++) {
//			System.out.print(baseArr[i] + " "); // 1 2 3 4 5
//		}
    //  2)Arrays.toString()
//		System.out.println(Arrays.toString(baseArr)); // [1, 2, 3, 4, 10]


/******************************practice 2nd ************************************/

    // 배열 선언
    char[] cArr;

    // 배열 할당
    char[] cArr1 = new char[3];
    char[] cArr2 = new char[3];

    // 배열 초기화(추가)
    // 방법1 : 인덱스
    cArr1[0] = 'a';
    cArr1[1] = 'b';
    cArr1[2] = 'c';
//		cArr1[3] = 'd';
//		System.out.println(Arrays.toString(cArr1));
    // 방법2 : 중괄호
    char[] cArr11 = {'a','b','c'};
    char[] cArr22 = {'ㄱ','ㄴ','다'};
    char[] cArr3 = {'a','b','c'};
    // 방법3 : for문
    // int배열만 사용가능
//		char[] cArr4 = new char[4];
//		for(int i=0; i < cArr4.length; i++) {
//			cArr4[i] = i + 1; // int배열만 사용가능하기에 error : Type mismatch: cannot convert from int to char
//			System.out.print(cArr4[i] + " ");
//		}

    int[] cArr4 = new int[4];
    for(int i=0; i < cArr4.length; i++) {
        cArr4[i] = i + 1;
        System.out.print(Arrays.toString(cArr4)+'\n'); // [1, 0, 0, 0][1, 2, 0, 0][1, 2, 3, 0][1, 2, 3, 4]
    }
    System.out.println(Arrays.toString(cArr4)); // [1, 2, 3, 4]

    // 배열 삭제
    cArr4 = null; 
    System.out.println(Arrays.toString(cArr4));
    System.out.println(Arrays.toString(cArr3));
    cArr3 = null;
    System.out.println(Arrays.toString(cArr3));


System.out.println("===practice 3rd===");		


/******************************practice 3rd ************************************/
    // 배열 선언
    float[] fArr;
    float[] floatArr;	// Stack 영역에 공간 생성

    // 배열 할당
    float[] fArr1 = new float[5];
    double[] dArr = new double[5];

    // 배열 초기화
    // 방법 1 : 인덱스
    dArr[0] = 0.1;
    dArr[1] = 0.2;
    dArr[2] = 3.0;
    dArr[3] = 3;	// 3.0으로 출력 -> 자동형변환
    System.out.println(Arrays.toString(dArr));

    // 방법2 : 중괄호
    double[] dArr2 = {0.1,0.2,0.3};
    System.out.println(Arrays.toString(dArr2)); // [0.1, 0.2, 0.3] -> 배열 안 값이 최대길이보다 짧으면 값만큼만 출력되서 나옴(여분공간에 다른값x)
    // 방법3 : for문
    double[] dArr3 = new double[3];
    // double로 형변환 가능한 int면 for문 가능할까?  
    // 가능. int인 i가 실수로 변환 가능한 수이기에
    for(int i=0; i < dArr3.length; i++) {
        dArr3[i] = i + 1;
        System.out.print(dArr3[i]+" "); // 1.0 2.0 3.0 
    }
    System.out.println();


    dArr3 = null;
//		for(int i = 0; i < dArr3.length; i++) {
//			System.out.println(dArr3); // null인 배열값 확인 시, for문방법은 널포인트익셉션 쓰므로 Arrays.toString() 사용해야함
//		}
    System.out.println(Arrays.toString(dArr3)); // null


}
728x90
반응형
728x90

 

객체(Object)

 

객체 선언 및 호출

중괄호{}를 사용하여 객체를 생성하고, 속성에는 모든 자료형이 올 수 있음 객체는 키 값을 사용하여 속성 식별

 

<button onclick="test1();"> 객체 생성 </button>
<script>
    function test1(){
        var product = {         // 중괄호 { } : 객체
            pName: 'Dry Mango',
            type: 'pickle',
            ingredient:['mango', 'sugar'],
            origin: 'Philippines'
        };
        console.log(product);

 

 

 

객체 안의 속성 접근 2가지 방법

1)객체명['속성명']
2)객체명.속성명

1)객체명['속성명']

console.log(product['pName']);
console.log(product['type']);
console.log(product["ingredient"]);
console.log(product["origin"]);

2)객체명.속성명

console.log(product.pName);
console.log(product.type);
console.log(product.ingredient);
console.log(product.origin);

 

 

 

속성접근 방법 차이

방법2의 접근법은 키 안이 완벽한 상태여야 사용가능
띄어쓰기가 있으면 키 자체가 불완전해서 사용불가
띄어쓰기는 [ ] 대괄호 접근방법 사용

var objTest = {
    'k$ey':'value1',
    'k_ey':'value2',
    'k ey':'value3',
};

console.log(objTest['k$ey']);       //  객$체명
console.log(objTest['k_ey']);       //  객_체명
console.log(objTest['k ey']);       //  객 체명

console.log(objTest.k$ey);
console.log(objTest.k_ey);
//console.log(objTest.k ey);    //  에러 
// 키에 특수문자 대괄호로 감싸줘야함
// 키로써 모든게 완벽할 때 .쓸 수있지만, 띄어쓰기는 키 자체가 불완전하기 때문에 에러
// 띄어쓰기 쓸려면 []로 속성에 접근해야함

 

 

 

객체의 메소드 속성

function test2() {
    var satoori = {         // 중괄호{ } : JS의 객체
        area1:'전라도',     // area1:'전라도'을 필드라고 볼 수 있음
        area2:'경상도',
        song: function(act){    // 함수. song은 함수를 가지고 있기 때문에 메소드 역할을 함
            var area2 = '강원도'; 
            console.log(this.area1 + '와 ' + this.area2 + '는 ' + act); // 객체 안의 area1 ,area2, 매개변수로 받아온 act 출력
        }   // this를 붙이기 싫으면 변수 선언을 이 안에서 해줘야함.
    };      // this가 있어야 객체 안에있는 속성을 찾음. 
            // this를 붙이면 경상도, 안붙이면 강원도 

    satoori.song('사이가 좋다'); // area1 is not defined 에러
    // 객체를 변수satoori에 넣었고, 이 변수를 호출 했는데 에러발생
    // why? 
    // 객체 안에서 내 속성을 호출할 때는 반드시 앞에 this.가 들어가있어야함
    
    // 객체 내에서 쓰면 내 속성을 호출하는거기 때문에 
    // 여기에서는 객체 안에서 쓰면 외부에 있는 내 속성을 호출할 때 쓰는 것
    // this를 안붙이고 쓸려면 function(act)안에 area1,2가 존재해야한다
    // this가 있어야 객체 안에 속성을 찾음 -> 객체 안 함수의 내에서 함수 밖이자 객체 안의 속성값을 쓸려면 this를 붙여야한다
    
    // this 있으면 함수 외부(객체의 속성)
    // this 없으면 함수 내부

 

 


 

 

객체와 반복문

객체의 속성을 살펴볼때는 단순 for문으로는 불가능하고 for in문 사용해야함
‘배열’을 가지고 사용할 때, 앞에 있는 변수(i)에 담기는 값은 배열의 인덱스가 담김 ’객체’를 가지고 사용할 때, 앞에 있는 변수(i)에 담기는 값은 객체의 키가 담기게 됨.

function test3() {
    var movie = {
        title:'신비한 동물들과 덤블도어의 비밀',
        release: '2022-04-13',
        director: '데이빗 예이츠',
        mainActor: ['에디 레드메인','주드 로','매즈 미켈슨','댄 포글러','앨리슨 수돌'],
        screening : true
    };

// for in문에서 배열을 가지고 사용할 때, 앞에 있는 변수(i)에 담기는 값은 배열의 인덱스가 담김
// for in문에서 객체를 가지고 사용할 때, 앞에 있는 변수(i)에 담기는 값은 객체의 키가 담기게 됨  
    for(var i in movie) {
        console.log(i); // 객체의 key값들이 찍힘. title release director mainActor screening
        console.log(i + " : " + movie[i]); // i = 키값 + movie[i] = 밸류값
    }
    // 비어있는 객체
    // {}
}

 

 


 

 

객체 속성 추가 및 제거

처음 객체 생성 이후 속성을 추가하거나 제거하는 것을
'동적으로 속성을 추가/제거한다'라고 함

1)객체 속성 추가

// 설명
student.name                //스튜턴드의 네임을 가져오는 코드
student.name = '강건강';    //스튜턴드의 네임을 가져온 것에 강건강을 집어넣은 것
                            //속성도 만들어주고 값도 집어넣는 것

 

방법1

.으로 객체 안 속성 접근하는 방법

// 객체 속성 추가 방법1 : .으로 객체 안 속성 접근하는 방법
student.name = '강건강';    // {name:강건강} // key=name value='강건강'
	// student.name 코드는 원래는 스튜던트에있는 name을 가져오는거였는데,
	// = 으로 값을 대입하고 있으니
	// student라는 객체의 name 이라는 속성에 
	// 강건강을 집어넣음. 
	// 이런식으로 값도 넣을 수 있다는것임.
student.hobby = '운동'; // {hobby:운동}

 

방법2

대괄호[]로 객체 안 속성 접근하는 방법

function test4() {
    var student = {};   // 비어있는객체

		// 객체 속성 추가 방법2 : 대괄호[]로 객체 안 속성 접근하는 방법
		student['strength'] = '100m 달리기'; // 객체{} 안에 
    student['dream'] = '체육관 관장';    // 키값 'strength'와 밸류값 100m 달리기'를 추가
		
}

// 객체 속성 추가 완료 및 확인
console.log(student); // {name: '강건강', hobby: '운동', strength: '100m 달리기', dream: '체육관 관장'}
student.toString = function() { // toString이라는 메소드를 만들어주는것.  
  var str = '';               // 그 객체의 대표값을 나타내는구나 알수 있으니 toString으로 이름을 해주는것. 
  
  for(var key in this){       // this는 student를 의미함
      if(key != 'toString'){  // 강의시간 11:19   // if문 추가이유 : toString 빼고 나머지 넣으라고 
          str += key + " : " + this[key] + " // ";  // this[key] : student의 속성을 가져온다는 의미 ex)'운동','100m 달리기'
      }
  }
  return str;

오른쪽 파란색 드래그영역 부분을 제외하고 출력하기 위해서 if문의 조건을 넣은 것

 

2)객체 속성 제거

delete(변수명.키명);

delete(student.hobby); // delete(변수명.키명);
  • 후에 공부할 것 : hoisting & prototype이게 왜 일어났는지 이 상황을 이해하려면 prototype(콘솔에서 나오는 그 프로토타입)과 hoising 공부해야함js를 깊게 공부하고 싶다면 hoising,prototype 공부 // 몰라도 js 사용가능hoisting : 선언과 할당을 나눠서 하는 것분리한거에 따라서 undefined가 뜰 수 있는데 hoising 때문
  • 나중에 그 값들을 채워넣는 것. 분리해서 하는걸 hoising이라고 함
  • 선언하고 할당을 분리시키는 것
  • 프로토타입은 많이 어려워서 먼저 공부할거면 hoising만 추천
  • 위에 삭제하기 전 console.log 호출했을 때, hobby가 삭제된채로 출력된게 왜 그렇게 적용이 된건지

 

 


 

 

객체 배열

배열 추가 : Array.push(), Array.unshift(), Array.splice()
배열 삭제 : Array.pop(), Array.shift(), Array.splice()

function test5(){
	var student0 = {name: '강건강', java:85, oracle:13, HTML:94, CSS:53, js:99};
  var student1 = {name: '남나눔', java:39, oracle:55, HTML:52, CSS:78, js:47};
  var student2 = {name: '도대담', java:42, oracle:87, HTML:85, CSS:14, js:74};

	var students = [];
  students.push(student0);    // Array.push() : 배열 추가
  students.push(student1);
  students.push(student2);

	for(var i in students) {    // i의 값 : 배열의 인덱스 
    // 학생 과목 총점 도출 함수
    students[i].getSum = function(){ // students[i] : i번째 student객체
        var sum = 0;
        for(var key in this) {   // 객체 안에 들어왔으니 this
             if(key != 'name' && key != 'getSum' && key != 'getAvg') {
                sum += students[i][key];    // students[i] : 배열 안에 있는 i번째의 객체
                                            // students[i][key] key라고 하는 객체의 속성값을 가져오겠다는 코드
            // 숫자들의 합이니 name, getSum 을 빼고 더하겠다. 과목들의 합을 더해서 sum에 담음.
            }
        }
        return sum; // 과목들의 합을 담은 sum 리턴
    }    
    
    // 학생 평점 도출 함수
    students[i].getAvg = function(){    
        return this.getSum() / 5;
    }

    // 전체 데이터 출력 기능(@override toString 같은 역할)
    for(var i in students) {
        console.log('이름 : ' + students[i].name + ", 총점 : " 
                + students[i].getSum() + ", 평균 : " + students[i].getAvg());
    }
  }
}

 

728x90
반응형
728x90

[GitBash] 브랜치 생성, 변경, 통합 등 이모저모

 

체크아웃으로 브랜치 옮겨다니고 

merge 기존에 만들어둔 브랜치를 합치려니까 컨플릭트 뜸

깃허브에서 pull request 했을 때 컨플릭트 뜬 건 resolve해봤는데

깃배쉬에서는 충돌나는 부분이 안떠서 어찌해야할지 구글링 했는데

깃배쉬 관련은 안나오고 전부 git이나 다른 프로그램 사용하는 거만 뜨는 중...

 

 

 

 

 

728x90
반응형
728x90

 

 

1. 브랜치(branch) 생성

$ git branch 브랜치명

예시

$ git checkout test1

 

2.브랜치(branch) 변경

$ git checkout 브랜치명

예시

$ git checkout test1

 

※ 브랜치(branch) 생성 및 변경 한번에

$ git checkout -b 브랜치명

 

 

3.’test1' 브랜치의 변경 사항을 'master' 브랜치에 병합하기 : Merge

브랜치 병합 명령어 : merge

이 명령어에 병합할 커밋 이름을 넣어 실행하면, 지정한 커밋 내용이 'HEAD'가 가리키고 있는 브랜치에 넣어집니다. 'HEAD'는 현재 사용중인 브랜치에 위치하게 됩니다. 위 그림에서는 'issue1' 커밋에 'HEAD'가 위치하고 있습니다.

$ git merge 커밋명

master브랜치에 원하는 브랜치를 머지하기 위해  master브랜치가 HEAD가 되도록 해야한다.

이때, checkout 명령어를 이용하여 현재 사용중인 브랜치를 master로 전환해야함

 

4. 브랜치(branch) 삭제 : branch -d

$ git branch -d 브랜치명

 

 

 

728x90
반응형
728x90

 

 

public class practice_everyday13 {
	public static void main(String[] args) {
		
		// 배열
		// 같은 자료형의 데이터의 여러개의 값을 저장할 수 있는 공간
		
		// 배열 선언
		int[] arr;
		
		// 배열 할당

		int[] arr1 = new int[3]; // 방법1 : 주로 Java에서 사용
		int arr2[] = new int[3]; // 방법2 : 주로 C에서 사용
		
		// 배열 초기화
		// 1)인덱스
		// 2)중괄호 {}
		// 3)for문 이용
		
		// 1)인덱스
		arr1[0] = 1;
		arr1[1] = 2;
		arr1[2] = 3;
		
		System.out.println(arr1[0]); // 1
		System.out.println(arr1[1]); // 2
		System.out.println(arr1[2]); // 3
		
		
		// 2)중괄호 {}
		int[] arr3 = {1,2,3};
//		int arr3[] = {1,2,3}; // error
		for(int i=0; i<arr3.length; i++) {
			System.out.print(arr3[i]+ " "); // 1 2 3
		}
		System.out.println();
		
		// 3)for문
		// 초기화할 값에 ‘규칙’이 존재할 경우 사용가능
		int[] arr4 = new int[3];
		for(int i=0; i<arr4.length; i++) {
			arr4[i] = i+3;
			System.out.print(arr4[i]+" ");
		}
		System.out.println();
		
		// 배열 수정(크기 변경)?
		int size = 5;
		int[] dArr = new int[size];
		System.out.println("dArr길이:"+dArr.length);
		System.out.println("dArr주소:"+dArr);// [I@6d06d69c
		dArr = new int[5]; // 같은 배열 길이
		System.out.println(dArr); // [I@7852e922 주소값이 다르다
		dArr = new int[4]; // 배열길이 4로 수정. 과연 주소값이 같을까?
		System.out.println(dArr); // [I@4e25154f
		// 전부 다른 주소값이 나왔다. 보이기에는 길이가 수정된 것처럼 보이나
		// 실제로는 새로 만든 값으로 대체시킨 것
		
		
		// 배열 삭제
		// 배열 삭제 = null
		dArr = null;
		// 배열에 null을 넣게되면 기존 주소값이 null로 바뀌면서 연결된 값도 끊어지면서
		// 사실상 삭제 효과가 나타난다
        
       }
}

 

728x90
반응형
728x90

 

자바 jdk 버젼 관련해서 실수로 최신 버젼을 깔았는데

호환성과 안정성 등 필요에 따라 구버젼을 사용해야할 때가 있을 것이다

혹은 버젼을 업그레이드 하고 싶던지 다운그레이드 하고 싶던지 

 

openjdk버젼이 다양한데

설치형 오픈 jdk가 있고 무설치로 경로 지정만 잘해주면 사용할 수 있는 두가지가 있다

 

 

open JDK 삭제

무설치형은 경로에 있는 파일을 제거하고 원하는 버젼으로 새로 세팅해주면 되고, 설치형은 아래와 같다

1)제거툴로 제거 하는 방법

https://www.java.com/ko/download/uninstalltool.jsp

2)프로그램 추가/제거에서 제거하는 방법

1)2) 둘 중에 하나를 하게되면 설치형은 제거가 된다

 

자바가 잘 지워졌는지or자바 버젼 확인 하는 방법

1)윈도우키+R을 눌러서 CMD치고 실행시킨다

2)cmd에 java -version이라고 친다

없으면 없다고 나오던가 현재 구동되는 runtime 버젼이 뜰 것이다

 

필자는 자바17최신버젼과 이클립스도 21-12 최신버젼에서 구버젼 1.8.0과 이클립스 20-03 설치(아래 링크)로 바꿨다 

https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html

 

Downloads for Amazon Corretto 8 - Amazon Corretto

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

https://www.eclipse.org/downloads/packages/release/2020-03/r

 

2020-03 R | Eclipse Packages

442 MB 6,634 DOWNLOADS The Modeling package provides tools and runtimes for building model-based applications. You can use it to graphically design domain models, to leverage those models at design time by creating and editing dynamic instances, to collabo

www.eclipse.org

 

 

자바 버젼 설치 후 이클립스에 적용시키기

1. [window] - [Preferences] - [java탭] - [Installed JREs]

2. [window] - [Preferences] - [java탭] - [Complier] 

 

1. [window] - [Preferences] - [java탭] - [Installed JREs]

[window] - [Preferences] - [java탭] - [Complier] 까지 들어가서 아래 화면처럼 Add 클릭

가운데 네모 박스는 add 후에 추가되는 자바 버젼을 체크해야한다. 저는 이미 있으니 패스

 

standard VM에 체크하고 next

 

 

디렉토리 누르고 막 설치했던자바 버젼이 깔려있는 곳을 지정해주면 된다.

 

추가 되고나면, 아래처럼 체크해주고 나머지는 remove해주자

(언제든 다른 버젼 추가가능)

 

 

2.[window] - [Preferences] - [java탭] - [Complier] 

[window] - [Preferences] - [java탭] - [Complier] 까지 들어가서 

Compiler compliance level에서 쓸려는 자바 버젼을 지정해준다

그 아래 use default compliance settings은 기본값으로 저 버젼에 맞춰준다는 것이니 체크해두자

 

 

 


 

 

 이클립스에서 기존에 사용하던 프로젝트 파일의 버젼 설정

 

위의 세팅으로 새로 생성되는 프로젝트들은 새로 설치한 버젼으로 만들어지지만 이전 버젼들은 따로 설정해야줘야한다

 

1.[사용할려는 프로젝트 위에서 우클릭] - [Properties] - [Java Build Path]

2.[사용할려는 프로젝트 위에서 우클릭] - [Properties] - [Java Compiler]

 

1.[사용할려는 프로젝트 위에서 우클릭] - [Properties] - [Java Build Path]

그림 중앙의 파일은 add 후 생긴 파일이고, Add library를 눌러주자

 

JRE System Library 선택

 

Workspace default JRE 선택

아까 설치하고 기본값으로 세팅해준 그 자바 버젼을 쓴다는 의미이다

 

여기서도 쓸려는 버젼으로 변경하고 아래 apply 클릭

 

 

2.[사용할려는 프로젝트 위에서 우클릭] - [Properties] - [Java Compiler]

여기 Java Complier에서도 1.8 잘되어있는지 체크

 

 

이클립스 인코딩 세팅

인코딩 방식 UTF-8로 변환해두기

안하면 파일 다 깨져서 난리남...

https://parkjye.tistory.com/35

 

728x90
반응형

+ Recent posts