본문 바로가기

전체 글243

[Git] Pull Request 올리기 나의 기능 브랜치에서 공용 브랜치 ( main 등등 ) 으로 합칠 때 여러 방법이 있지만 안전한 방법 중 하나는 Pull Request 를 통해 merge 전에 승인을 받는 것이다. 나의 브랜치 dev 에서 코드를 수정하고 push 를 통해 원격 저장소에 저장시킨다.git add .git statusgit commit -m ""git push origin dev로컬 브랜치 dev에서 원격 저장소 브랜치 dev로 코드가 올라간다.push 를 한 후에 github 페이지를 확인해보면 이 알람이 뜬 걸 볼 수 있고, 옆에 Compare & pull request 버튼을 눌러준다. 최상단 compare : dev 에서 base : main 으로 합치겠다는 말을 뜻한다 title 과 description 을 작성.. 2024. 8. 2.
[Git] branch 와 협업 실전 가이드 브랜치 는 복사본이다.복사본을 통해서 메인 (배포) 브랜치와, 테스트 브랜치 기능 개발 브랜치 등으로 나눠서 관리를 할 수 있다.  브랜치 생성 명령어 * git branch 브랜치이름 * git branch갖고 있는 branch 리스트가 나옴현재 branch 앞에는 * 이 붙음  브랜치 이동 명령어 * git switch 브랜치이름* git checkout 브랜치 이름 브랜치 한 번에 생성&이동* git switch -c 브랜치이름* git checkout -b 브랜치이름새로운 브랜치 login 에서 수정된 코드를 저장git add .git commit -m ""하고 나서 이전 main 으로 이동하면 수정한 코드가 수정 전으로 돌아감 코드 짠 새로운 브랜치 login 을 main 브랜치로 합치기git .. 2024. 8. 1.
[Java] 예외처리 오류와 예외의 차이오류는 일반적으로 회복이 불가능한 문제시스템 레벨에서, 주로 환경적인 이유로 발생예외는 일반적으로 회복이 가능한 문제그 예외가 발생할 수 있다는 것을 인지하고, 대응했을 것. 아니라면 해야한다. 이를 대응하는 것이 예외처리 예외의 종류코드 실행 관점에서 예외의 종류컴파일 에러 (예외)대부분 자바 프로그래밍 언어의 규칙을 지키지 않아서 발생그냥 다시 문법에 맞게 작성하면 됨런타임 에러 (예외)주로 다루게 될 에러 (예외)문법적인 오류는 아니라서 컴파일은 잘 되었지만, 프로그램이 실행 도중 마딱드리게 되는 예외 예외처리 관점에서 예외의 종류확인된 예외 ( Checked Exception )컴파일 시점에 확인하는 예외반드시 예외 처리를 해줘야함미확인된 예외 ( Unchecked Excepti.. 2024. 7. 30.
[Java] 인터페이스 인터페이스상속 관계가 없는 다른 클래스들이 서로 동일한 행위 즉, 메서드를 구현해야할 때 인터페이스는 구현 클래스들의 동일한 사용 방법과 행위를 보장 선언public interface 인터페이스명 {} 구성모든 멤버 변수는 public static final ( 생략 가능 )모든 메서드는 public abstract ( 생략 가능 ( static, default 메서드 예외 ) )생략되는 제어자는 컴파일러가 자동으로 추가public interface 인터페이스명 { public static final char A = 'A'; static char B = 'B'; final char C = 'C'; char D = 'D'; void turnOn(); // public abstra.. 2024. 7. 30.
[Java] 상속 상속상속을 사용하면 코드의 중복이 제거되고 재사용성이 크게 증가하여 생산성과 유지 보수성에 매우 유리해짐public class 자식클래스 extends 부모클래스 {}※ 주의상속은 확장의 개념. 부모 클래스의 멤버의 개수는 자식 클래스의 멤버의 수보다 클 수가 없다.클래스 간의 관계상속관계 : is -a ( 스포츠카는 자동차다 )포함관계 : has -a ( 자동차가 4개의 타이어, 4개의 문을 가지고 있음 ) Main.java// 자동차 객체 생성Car car = new Car("GV80", "Black", 50000000);// 자동차 부품 : 타이어, 차문, 핸들 선언Tire[] tires = new Tire[]{ new Tire("KIA", 150000), new Tire("금호", 1.. 2024. 7. 29.
[Java] this와 this(), 접근 제어자, package와 import thisthis 는 객체, 인스턴스 자기 자신을 표현하는 키워드객체 내부 생성자 및 메서드에서 객체 내부 멤버에 접근하기 위해 사용public Car(String model, String color, double price) { model = model; color = color; price = price; } 이렇게 생성자를 선언하는데 매배변수명과 객체의 필드명이 동일한 경우 오류는 발생 안하지만 해당 변수들은 객체의 필드가 아닌 가장 가까운 매개변수명을 가리킴. → 자기 자신에게 값을 대입하는 상황이 일어남 public Car(String model, String color, double price) { thi.. 2024. 7. 29.
[Java] 생성자 생성자생성자는 객체가 생성될 때 호출되며 객체를 초기화 하는 역할을 수행생성자 선언// // 생성자 : 처음 객체가 생성될 때 ( instance 화 ) 어떤 로직을 수행해야 하며, 어떤 값이 필수로 들어와야 하는지 정의public Car() { // logic // 기본 생성자 : 생략이 가능} 생성자 호출Car car = new Car(); 생성자는 반환 타입이 없고 이름은 클래스의 이름과 동일new 연산자에 의해 객체가 생성되면서 Car(); 즉, 생성자가 호출됨기본생성자 기본 생성자는 선언할 때 괄호() 안에 아무것도 넣지 않는 생성자를 의미모든 클래스는 반드시 생성자가 하나 이상 존재만약 선언하지 않았으면 기본 생성자를 자동으로 추가해주고 접근제어자 (public) 을 따름필드 초.. 2024. 7. 28.
[Java] 인스턴스 멤버와 클래스 멤버 멤버 = 필드 + 메서드선언하는 방법에 따라서 인스턴스 멤버와 클래스 멤버로 구분인스턴스 멤버는 객체 생성 후에 사용 가능클래스 멤버는 객체 생성 없이도 사용 가능인스턴스 멤버객체의 인스턴스 필드는 각각의 인스턴스마다 고유하게 값을 가질 수 있음하지만 그렇다고 각 인스턴스 마다 메서드들이 매 번 생성된다면 중복 저장으로 메모리 효율이 떨어짐 → 메서드는 메서드 영역에 두고서 모든 인스턴스들이 공유해서 사용→ 대신 무조건 객체 생성, 즉 인스턴스를 통해서만 메서드가 사용될 수 있도록 제한 클래스 멤버Java 클래스 로더에 의해 메서드 영역에 저장되고 사용메서드 영역의 클래스와 같은 위치에 고정적으로 위치하고 있는 멤버를 의미 → 객체의 생성 필요 없이 바로 사용 가능 필드와 메서드를 클래스 멤버로 만들기 .. 2024. 7. 26.
[Java] 필드와 매서드 객체의 속성 : 필드필드는 객체의 데이터를 저장하는 역할을 함 고유 데이터 : 자동차 고유한 정보상태 데이터 : 자동차 상태 정보 ( 자주 바뀜 )객체 데이터 : 자동차 구성 요소 ( 하나의 또 다른 객체 )public class Tire { public Tire() {}} 타이어 클래스를 만들고, String company; // 자동차 회사String model; // 자동차 모델String color; // 자동차 색상double price; // 자동차 가격double speed; // 자동차 속도 , km/hchar gear; // 기어의 상태, P,R,N,Dboolean lights; // 자동차 조명의 상태Tire tire; 이와 같이 필드 생성할 때 객체 데이터를 선언. 필드의 초기.. 2024. 7. 26.
[Java] 클래스 (설계도) 설계하고 객체 생성 (인스턴스화) 객체는 속성(필드) 과 행위(메서드) 로 구성 ex ) 자동차속성 : 회사, 모델, 색상, 가격, 속도 등행위 : 가속, 브레이크, 기어 변속, 조명, 경적 등현실 세계에 있는 객체를 소프트웨어의 객체로 설계하는 것을 ‘객체 모델링’ 객체 간의 관계 사람 객체는 자동차 객체를 사용  타이어 객체, 차 문 객체, 핸들 객체는 자동차 객체에 포함 자동차와 기차 객체는 하나의 공통된 기계 시스템 객체를 토대로 만들어진다고 가정하면 자동차 객체와 기차 객체는 기계 시스템 객체를 상속받는 상속관계가 됨 객체지향 프로그래밍의 특징캡슐화캡슐화란 속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것을 의미.외부 객체에서는 캡슐화된 객체의 내부 구조를 알 수 .. 2024. 7. 26.
[Git] 최신 commit 지우기 및 안 보이는 파일 삭제하기 git 에 commit 을 했는데 맘에 들지 않을 때, git reset ^HEAD 를 git bash 에 입력하면 가장 최근 commit 이 지워진다.git bash 에 ls 를 입력하면 해당 파일과 같은 폴더 위치 안에 있는 파일들이 뜬다. 여기서 숨겨진 파일을 보고싶으면 ls -a 를 입력해준다.  그런 다음 rm -rf .gitignore 과 같이 rm -rf 다음에 파일을 입력해주면 삭제가 된다. 다시 ls -a 로 확인을 해주면 잘 되어있다. 2024. 7. 26.
[Java] Level 1 과제 중 추가로 알게된 점 정리하기 1. 문자 입력시 맨 앞 첫 문자만 변수에 저장하기System.out.println("사칙연산 기호를 입력하세요: "); // +, -, *, /char operation = sc.next().charAt(0); 사칙연산을 입력할 때 문자 하나만 저장하면 되기 때문에 char 타입의 변수를 선언했다.하지만 next() 는 String 을 저장하는 메서드 이기 때문에 뒤에 charAt() 을 이용해서 0번째 문자를 operation 으로 저장하도록 설정되었다.2. ' ' (작은 따옴표) 를 이용해 char 타입 비교연산자로 비교하기if (oper == '+') { result = num1 + num2;} + 기호를 처음에 " " 로 감싸서 String 취급을 받아 에러가 발생했었다. char 타입은 .. 2024. 7. 25.
[Java] 컬렉션 ( ArrayList, LinkedList, Stack, Queue, Set, Map ) 컬렉션컬렉션은 배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능을 가지고 있음기능 : 크기 자동 조정/ 추가/ 수정/ 삭제/ 반복/ 순회/ 필터/ 포함 확인 등종류List : 순서가 있는 데이터의 집합 ( 데이터 중복 허용 ) ( 배열과 비슷 )Queue : 빨대처럼 한쪽에서 데이터를 넣고 반대쪽에서 데이터를 뺄 수 있는 집합먼저 들어간 순서대로 조회 가능Set : 순서가 없는 데이터의 집합 ( 데이터 중복 허용 안 함 ) ( 집합과 비슷 )Map : 순서가 없는 ( Key, Value ) 쌍으로 이루어진 데이터 집합 ( Key 는 중복 안 함 )ListArrayListArray : 실제 값 저장 (기본형 변수로 저장 ) , 정적 배열ArrayList : 참조형 변수들을 저장, 동.. 2024. 7. 24.
[Java] 배열 1. 배열 선언타입[] 변수; ex) int[] intArr;타입 변수[]; ex) int intArr[];2. 배열 생성 배열(Array)는 참조형 변수들처럼 new 명령을 통해서 생성하며, 대괄호[ ] 안에 크기를 지정해준다. 배열은 생성될 때 각 타입별 초기값으로 초기화되어 채워진다.//배열 생성후 초기화하면 배열의 주소가 할당된다. int[] intArray = new int[3]; // 초기값 {0,0,0} boolean[] boolArray = new boolean[3]; // 초기값 {false, false, false} String[] stringArray = new String[3]; // 초기값 {"","",""}int 는 0boolean 은 fal.. 2024. 7. 24.
[Java] 조건문, 반복문 ( 새로 알게된 내용 정리 ) Objects.equals() 메서드if (Objects.equals(aHand, "가위")) { } Objects.equals() 메서드는 위와 같이 사용하는데 위 코드를 예로 들면 aHand 와 "가위" 가 같으면 true 로 받아들여 if 문을 실행시킨다.Switch 문// switch/case 문 int month = 1;String monthString = "";switch (month) { case 1: monthString = "1월"; break; case 2: monthString = "2월"; break; case 3: monthString = "3월"; break; default: monthString = "알수 없.. 2024. 7. 23.