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

 

 

stack & heap의 쓰레기값(garbage value)

변수 아무 값도 넣지 않고 선언만 해뒀을 경우, 컴퓨터가 랜덤값을 넣어놓는데 이 값을 의미함

 

쓰레기값은 스택에서 발생

다시말해서, 스택에 공간 만들어두고 아무 값도 넣지 않는다면(초기화를 하지 않는다면) 어떤 값도 들어가 있을 수 있다

 

new를 연산자를 만들어서 heap 메모리 영역에 공간을 생성 했지만, 초기화를 하지 않아 값을 넣은 적이 없지만 값은 들어가 있게된다. 이때 들어가 있는 것이 쓰레기 값(garbage value)이다. 

 

※ 변수는 초기화 해둘 것을 권장!

변수를 선언만 하면 메모리에 있던 쓰레기 값이 변수 선언과 함께 생성되기 때문에 후에 문제의 원이 될 수 있는데, 

쓰레기값을 전에 다른 프로그램에서 사용하고 있었다면, 그 프로그램이 종료되었더라도 실제 메모리에 저장되었던 데이터가 남아 있기 때문에 변수를 초기화 하지 않으면 에러가 발생할 수 있다

728x90
반응형
728x90

 

변수란?

하나의 값을 저장할 수 있는 공간

메모리에 값을 저장할 수 있는 공간

변수는 상자

*전역변수 = 멤버변수 = 멤버필드 = 필드 : 클래스영역에 작성하는 변수

 

변수의 선언이란?

메모리 공간에 데이터를 저장할 수 있는 공간을 할당하는 것

변수의 선언 : stack에 뭔가 공간에 잡히는 것

  • stack : 컴퓨터가 사용하는 영역
  • heap :개발자가 사용하는 영역
  • static : 공용으로 사용할 수 있는 공간

선언하다 : stack에 변수명의 공간이 잡히는 것

int age; // 선언하면 stack에 4byte짜리(int 공간) 공간하나가 생긴다

값을 대입한다 : 변수에 값 저장

초기화 : 변수에다 값을 처음 넣는 것. 객체 선언을 하고 값을 최초로 할당하는 것

변수의 값 대입

대입연산자(=)**를 이용하여 오른쪽에 있는 값(리터럴)을 왼쪽에 넣는다(변수)

 

데이터타입 2가지

1.기본형(primitive)

  • boolean(논리), char(문자), String(문자열),
  • byte, short, int, long // double, float

2.참조형(non-primitive)

 

접미사

대소문자 모두 가능하나 관용적으로 long의 L은 대문자로

long = 0L

float = 0f

double = 0 또는 0d

 

위의 자료형명대소문자 구분 확실히!

-Double 대문자면 클래스로 쓰일 수도 있어 완전 쓰임새가 달라짐

 

int가 정수형의 기본이 된 이유

    - 4byte가 컴퓨터가 계산하기 좋은 크기라서라고 함

double이 실수형의 기본이 된 이유

    - 소수점이 있는 실수를 정확하게 계산할 수 없음(오차발생 필연적). 부동소수점. 최대한 오차를 줄이기 위해 double이 8바이트지만 기본형이 됨.

 

 


 

변수 명명규칙

(클래스명에도 적용됨)

1.대소문자 구분되며, 길이 제한이 없다

길이 제한이 없는 이유 :예약어(reserved word) 때문

 

2.예약어(reserverd word)를 사용하면 안된다

ex) true, final, String 등

 

3.숫자로 시작하면 안된다

ex)age1은 가능하지만 1age불가

 

4.특수문자는 ‘_’와 ‘$’만을 허용한다

-’$’는 내부 클래스에서 사용

-’_’ 사용 시 컴파일 에러는 없지만 관례상 사용하지 않는 것이 좋음

ex)sh@rp는 불강하지만 $harp는 가능

 

5.여러 단어 이름은 단어의 첫글자를 대문자로 한다

(단, 첫 시작 글자는 소문자로 하는 것이 관계)

ex)ageOfVampire,userName

 

클래스명 첫글자 대문자

세미콜론( ; )의 의미 : 한문장의 마침을 알림

 

 

 

※ 변수, 인자, 매개변수 구분

  • 변수 인자 매개변수 구분인자는 값을 넣는 쪽
  • 파라미터는 값을 받는 쪽
  • 각각 변수의 종류

 

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

 

ch6-38 변수의 초기화

<변수의 초기화>

지역변수(lv)는 수동 초기화 해야함

멤버변수(iv,cv)는 자동초기화된다

 

지역변수(lv)는 수동 초기화 해야함

class InitTest {
    int x;        // 인스턴수변수(iv)
		int y = x;    // 인스턴스변수(iv)
   
    void method1() {
         int i;      // 지역변수
         int j = i;  // error : 지역변수를 초기화하지 않고 사용해서
    }
}

i의 모르는 값을 j의 모르는 값에 넣을려고 하니 에러난 것

 

수동초기화 해야하는 이유

호출 스택 메모리

계속 쌓였다가 없어졌다 한다(재사용이 빈번한 메모리)

계속 같은 공간을 여기저기서 사용한다

메소드가 호출될 때마다 이 공간을 0으로 초기화하면 성능저하됨

이를 방지하기 위해서 항상 0으로 초기화하는게 아닌 새로운 값으로 초기화한다

지역변수는 메소드가 호출되서 작업하는 동안만 존재하기에 생명 주기가 굉장히 짧다(메소드는 빨리 실행되고 제거되는게 좋다)

옛날 다른 메소드가 쓰던 값을 새로운 값으로 초기화하는데 다른 메소드가 쓰던 값을 뭔지 모르는데 그 값을 덮어쓰는거고 그래서 수동 초기화 해야만함

인스턴스 변수는 유지기간이 비교적 길어서 초기화하고 쓴다(자동초기화)

인스턴스 변수(자동초기화)

 

 

멤버변수(iv,cv)는 자동초기화된다

class InitTest {
    int x;        // 인스턴수변수(iv)
		int y = x;    // 인스턴스변수(iv)

InitTest it = new InitTest();

 

 

데이터타입 별 초기화 값

 

 


 

 

 

 

ch6-39 멤버변수의 초기화

<멤버변수의 초기화>

1.명시적 초기화(=)

2.초기화 블럭 { }

3.생성자

 

 

1.명시적 초기화(=)

대입연산자(=) 이용

간단한 초기화 방법

 

1)기본형(primitive type) 변수의 초기화

int door = 4;

 

2)참조형(reference type) 변수의 초기화

Engine e = new Engine();

참조형 변수가 가질 수 있는 값

  • null or 객체주소
  • 기본값은 nul

참조형은 객체를 만들어넣어줘야한다

객체를 만들어 값을 넣어주면서 초기화해야함

 

2.초기화 블럭

복잡한 초기화

여러문장 넣기

(여러문장이 필요하면 대입연산자로는 불가능)

  • 인스턴스 초기화 블럭 : { }
  • 클래스 초기화 블럭 : static { }

 

3.생성자

iv초기화

복잡한 초기화에 사용

 

 

멤버변수 cv, iv 초기화의 3가지 방법

1.자동초기화 : 자동

2.간단초기화 : 대입연산자 =

3.복잡초기화 : { }, static { } , 생성자

  • cv 초기화에는 static { }
  • iv 초기화에는 생성자. // {}도 쓰긴하나 거의안씀

 

위의 이미지는 명시적 초기화로 간단하게 배열 생성 및 초기화하고 초기화블럭 static {}을 사용해서 cv 복잡초기화로 배열 안에 값을 for문 이용하여 채운 것

 

 

 

멤버변수 초기화 시점

1.클래스 변수 초기화 시점

클래스가 처음 로딩될 때 한번(메모리에 올라갈 때)

2.인스턴스 변수 초기화 시점

인스턴스가 생성될 때 마다

 

 

멤버변수 초기화 순서

 

 

 

 

728x90
반응형
728x90

 

객체 배열 == 참조변수 배열

 

객체의 배열이란?

참조변수 여러개를 묶어서 배열을 만든 것

Tv tv1, tv2, tv3;  // Tv데이터 타입인 변수tv1,tv2,tv3 

    ↓↓↓  배열로 전환하면

Tv[] tvArr = new Tv[3]; // 

참조변수 3개를 배열로 만든 것

그래서 객체의 배열이라 부름

만들어진 각 객체의 주소값이 링크되고 초기화 된 것

 

 

객체의 배열 초기화

// 객체를 생성해서 배열의 각 요소에 저장
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();

    ↓↓↓  간단히 초기화

Tv[] tvArr = { new Tv(), new Tv(), new Tv() };
Tv[] tvArr = new Tv[3];
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();

위의 코드의 세부과정

1)참조변수 tvArr 생성됨

2)tvArr 참조변수 3개가 배열로 생성되고 주소값 생성

(new)연산자가 heap영역에 배열 및 주소값 생성

 

3)tvArr[0] = new Tv(); 이 문장이 실행되서 tvArr[0] 문장이 실행되서 new Tv();가 tvArr[0]로 대입됨

만들어진 객체의 주소값 0x100이 tvArr[0]로 링크 되고 마찬가지로 tvArr[1],tvArr[2]도 주소값 링크됨

 

 

주의사항

Tv[] tvArr = new Tv[3];

이 코드만 만들어두면 참조변수 배열만 생성해둔 거기에 참조변수만 만들어둔 것이고 객체를 하나씩 넣어줘야하는데 안하고 객체를 호출하게 되면 객체생성이 안됬다고 에러남

 

 

728x90
반응형
728x90

 

ch5-4 배열의 길이

배열의 길이

배열이름.length - 배열의 길이(int형 상수)

int[] arr = new int[5];  // 길이가 5인 int배열
int tmp = arr.length;    // arr.lenght의 값은 5이고 tmp에 5가 저장된다

 

배열은 한번 생성하면 그 길이를 바꿀 수 없다

why?

int[5]가 4byte인 int가 5개이므로 4x5 =20 byte

여기서 int[5]를 10칸인 int[10]으로 바꾸고 싶다면 4x10=40이므로 두배의 공간이 필요하게 되고 배열은 연속해서 저장공간을 만든다. 새로 만들려면 연속된 공간 저장 확보가 어렵다면 떨어진 곳에 만들어야하는데 자바는 크기를 못 늘리게하고 필요하면 다른 곳으로 옮기게 규칙을 정해놓음

 

 

길이가 부족할 때는?

길이를 늘릴 수 없기에 새로운 걸 큰 걸 만들고 기존의 내용새 배열에 복사

for (int i=0; i < score.length;i++) // 조건식 변경 불필요
		System.out.println(score[i];

 

 


 

ch5-5 배열의 초기화

배열의 초기화

배열의 각 요소에 처음으로 값저장하는 것

int[[ score = new int[5]; // 길이가 5인 int형 배열 생성
score[0] = 50; // ← 배열 초기화
score[1] = 60; // ← 배열 초기화
score[2] = 70; // ← 배열 초기화
score[3] = 80; // ← 배열 초기화
score[4] = 90; // ← 배열 초기화

배열은 기본적으로 인트형으로 자동 초기화

 

반복문으로 초기화 가능

for(int i=0; i<score.length; i++)
	score[i] = i * 10 + 50;

// 결과값으로 
score[0] = 50;
score[1] = 60; 
score[2] = 70; 
score[3] = 80; 
score[4] = 90; 

 

 

간단 초기화 방법

  1. int[] score = new int[] {50, 60 , 70, 80, 90};
  2. int[] score = {50, 60 , 70, 80, 90}; // new int[] 생략가능

대부분 2번으로 많이 사용

 

주의사항

// 아래의 코드는 2)과 같은 코드이나 따로쓰면 error
int[] score;
score = {50, 60 , 70, 80, 90}; // error : new int[] 생략 불가
score = new int[]{50, 60 , 70, 80, 90}; // 가능

 

728x90
반응형
728x90

 

 

https://git-scm.com/

 

Git

 

git-scm.com

https://github.com/

 

GitHub: Where the world builds software

GitHub is where over 73 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

 

위의 링크 타고 깃허브가서 가입하고 왼쪽 상단에 보면 repositories(저장소)와 new라는 글자가 보일 것이다

누르고 하나 만들어주자

아래처럼 원하는 이름으로 repository의 네이밍을 해주고, public 체크 그대로 두고 맨 아래  create repository 클릭

 

 

블라블라 샬라샬라 외계어가 나오는데 빨간줄 친 곳만 좀 눈이 익숙해지자

앞으로 많이 쓰게될 명령어이다.

 


<Git 설치 & 초기화>

https://git-scm.com/downloads

다운받아 설치하고 git bash 실행

cmd 같은 창이 하나 뜬다

싸이트 로그인 하는 같은 과정을 먼저 해줘야한다

 

확인

$ git config user.name

$ git config user.email

 

설정

$ git config --global user.name "홍길동" ← " "안에 이름 적으시면 됩니다

$ git config --global user.email "abcd123@naevr.com" ← github에 가입한 이멜주소 입력

$ git config --list ← 입력 후 다른건 흘려버리고 위에 쓴 이름과 이멜주소가 잘 들어갔는지만 확인

$ git init ← 초기화

 

여기까지 초기 설정은

이후로는 이제 git과 github로 로컬에서한 작업들을 Git으로 관리하고 Github 업로드하거나 다운로드하여 협업, 피드백, 버젼관리 등등을 하게된다. 

 

 

아래의 세가지는 앞으로 git에서 많이 쓰일 핵심 명령어들이므로 기억해두자

commit : 로컬에 파일을 추가하거나 변경 내용을 저장

push : github 파일을 추가하거나 변경 내용을 저장

pull : github에서 파일을 다운로드

 


Github 사용하기

git add . 지정한 해당 디렉토리의 모든 파일 업데이트

git status 상태확인

git commit -m "히스토리명" 원하는 네이밍

git remote add origin 깃허브링크주소 깃헙 리파지토리와 로컬 소스코드와 연결

 - 회사에서 일할 때는 회사서비스 코드면 아주아주 조심할

 - 보통 신입이나 새로운 사람들 전용 공간 하나 따로 내줄 것임

git remote -v 연결이 잘됬는지 확인

git push origin master master라고 자리에 branch 이름을 넣으면 된다

 

 

Git hub 계속 업데이트 방법

git add . 지정한 해당 디렉토리의 모든 파일 업데이트

git commit -m "blah blah" 히스토리 생성. 블라블라에 원하는 네이밍.

git push origin master 깃허브로 올리기

 

 

Github에서 팀프로젝트 하는

1)소스코드 다운

git clone 링크주소 폴더이름 링크는 필수 폴더이름은 선택. 폴더이름을 지정할 경우 안에 모든 파일을 다운로드. 지정 안할 경우 프로젝트명으로 폴더가 생성되고 안에 코드들 다운됨

 

2) 브랜치(branch) 만들기

git checkout -b 브랜치이름

 

3) 브랜치에 소스코드 업데이트

git add.

git commit -m "히스토리명" 원하는 네이밍

git push origin 브랜치이름

 

4)마스터 브랜치에서 소스 가져오기

git pull origin master pull 하기 전에 반드시 기존 소스코드들을 commit

 

5)브랜치끼리 파일 이동하는

git checkout 브랜치이름 브랜치에서 마스터 브랜치나 다른 브랜치로 파일을 이동시키고  싶을 사용

 

(위의 테마별 내용은 유튜보 코딩알려주는누나님 영상 참고했습니다)

 

 

 

 

 

728x90
반응형
728x90

 

 

5. 변수의 교환하기

int x = 10, y = 20;  // x,y 각각 초기화 상태

 

x y값을 서로 바꾸고 싶다면?

a=b

b=c

c=a 논리와 같은것

 

 

 

 

 

<practice>

728x90
반응형

+ Recent posts