목록Development (561)
컴공생의 다이어리
문자열(String) 비교 자바에서는 문자열을 비교할 때, 상황에 맞추어 ==과 equals()를 구분해서 사용해야 한다. 흔히 c/c++, python에서 문자열을 비교하고자 할 때, ==을 사용하지만 java에서의 ==은 주소의 값을 비교한다. 그렇기 때문에 내용 자체를 비교하고자 한다면 equals()를 사용하면 된다. == : 주소의 값 비교 equals() : 내용 자체를 비교 public class EqualsTest{ public static void main(String[] args){ String a = "JAVA" String b = "JAVA" String c = new String("JAVA"); String d = new String("JAVA"); System.out.printl..
인터페이스(interface)의 상속 인터페이스 사이에서도 상속을 사용할 수 있다. 이때도 클래스 상속에서 사용했던 extends 키워드를 사용하면 된다. 인터페이스는 다중 상속이 가능하고 구현 코드의 상속이 아니므로 타입 상속이라고 한다. 아래의 MyInterface 인터페이스는 X와 Y라는 인터페이스가 있을 때, 두 인터페이스를 상속받은 인터페이스이다. public interface X { void x(); } public interface Y { void y(); } public interface MyInterface extends X, Y{ void myMethod(); } 출처 : 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
인터페이스(interface) 인터페이스란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다. 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위해 인터페이스를 사용한다. 인터페이스는 interface 키워드를 통해 선언할 수 있으며 implements 키워드를 통해 일반 클래스에서 인터페이스를 구현할 수 있다. public interface Predator { boolean chasePrey(Prey p); void eatPrey(Prey p); } public class Lion implements Predator { @Override public boolean chasePrey(Prey..
추상 클래스(abstract class) 추상 클래스란 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스를 말한다. 여기서 메서드의 선언만 있다는 말은 아래 코드에서 첫번째 처럼 생긴 것을 말한다. int add(int x, int y); // 선언 int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님 또한 추상 클래스는 abstract라는 예약어를 사용한다. 추상 클래스의 경우 new할 수 없다. 즉 인스턴스 화 할 수 없다는 것이다. 추상 클래스 구현 메서드에 구현 코드가 없으면 abstract로 선언하며 abstract로 선언된 메서드를 가진 클래스는 abstract로 선언해야 한다. 또한 주의해야 할 점은, 모든 메서드가..
instanceof 연산자 instanceof 연산자는 원래 인스턴스의 형이 맞는지 여부를 체크하는 키워드이다. 맞으면 true 아니면 false를 반환한다. Syntax는 아래와 같다. object가 type이거나 type을 상속받는 클래스라면 true를 리턴하고 아니면 false를 리턴한다. object instanceOf type 아래와 같은 코드처럼 instanceof 연산자를 활용할 수 있다. parent의 경우 Parent 클래스이므로 true를 반환한다. child의 경우 Parent로부터 상속받은 클래스인 Child 클래스이므로 true를 반환한다. 하지만 parent의 경우 Parent 클래스인데 Child클래스로 비교하니 false를 반환한다. 자식은 자식이지 부모클래스가 아니기 때문이..
캐스팅(Casting)이란? 캐스팅이란 타입을 변환하는 것을 말하며 형변환이라고도 한다. 자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능하다. 업캐스팅(Upcasting) 업캐스팅이란 자식 클래스의 객체가 부모 클래스 타입으로 형변환 되는 것을 말한다. 아래 코드에서 부모 클래스는 Person, 자식 클래스는 Student이다. 아래 코드에서 Person p = s; 부분이 업캐스팅한 부분이다. p가 Student 객체를 가리키지만, p는 Person 타입이기 때문에 Person 클래스의 멤버에만 접근이 가능하다. 그렇기 때문에 p.check에서 컴파일 타임 에러가 발생한다. class Person{ String name; Person(String name){ this.nam..
깃 히스토리(커밋(Commit)의 날짜와 시간) 변경 : filter-branch 사용 깃 히스토리를 변경하기 위해서 필터링 기능을 이용하는 방법이 있다. 다만 모든 커밋 내역을 살펴보며 필터링을 수행한다는 점에서, 프로젝트의 규모가 클수록 오랜 시간이 걸릴 수 있다. 우선 git log를 bash창에 입력해 변경할 커밋의 해시값을 찾는다. git log 그리고 아래와 같이 필터링을 사용해서 날짜를 수정해주면 된다. git filter-branch -f --env-filter \ 'if [ $GIT_COMMIT = {Commit 해시 값} ] then export GIT_AUTHOR_DATE={변경할 날짜와 시간} export GIT_COMMITTER_DATE={변경할 날짜와 시간} fi' # examp..
Thymeleaf(타임리프) LocalDateTime Format Thymeleaf에서 LocalDateTime형식의 데이터를 원하는 형식으로 나타내고 싶다면 아래와 같은 형태로 사용하면 된다. #temporals 오브젝트의 format 기능을 이용해서 날짜 형식을 표현한다. ${#temporals.format(형식을 지정할 LocalDateTime형의 데이터, 형식)} https://addio3305.tistory.com/100 [스프링 부트 시작하기] 날짜 클래스(LocalDateTime) 사용하기 안녕하세요. 오랜만에 새로운 포스팅을 합니다. 이번 글부터 한동안 제 책인 [스프링 부트 시작하기]를 바탕으로 조금 잘못되었거나 보강할 내용 또는 개선할 점에 대해서 포스팅을 하려고 합니 addio3305..
백준 5585번 : 거스름돈 (문제 바로가기) 내 코드 n = 1000 - int(input()) coins = (500,100,50,10,5,1) count = 0 for coin in coins: count += n//coin n%=coin print(count)
깃(Git) 특정 브랜치(branch)만 clone하는 방법 git clone -b {브랜치이름} --single-branch {저장소 url} 을 git bash 창에 입력해주면 된다. git clone -b {branch_name} --single-branch {저장소 URL} # ex) git clone -b release --single-branch https://github.com/CodeDiary18/Test https://www.slipp.net/questions/577 git에서 특정 브랜치만 clone하는 방법 git을 사용하다 브랜치 전체를 clone하지 않고 특정 브랜치 하나만 clone하는 것이 가능하다. 특히 브랜치가 많은 경우 이 방법을 사용할 수 있다. git clone -b ..