본문 바로가기

백엔드개발자 준비하기

(37)
[백엔드개발자 준비하기] 어노테이션 @데이터 @올아규먼트어노테이션 @빌더 골뱅이를 사용하여 작성하는 문법 롬복 라이브러리를 설치하여 사용한다 @Override @Overload 도 어노테이션에 포함 됨 자주사용하는 어노테이션 -> @Data @Builder @AllArgsConstructor @Data - 게터, 세터, 투스트링, 이퀄스앤드해시코드, 리큐어드아규컨스트럭터 로 각각 나누어진 어노테이션을 한번에 사용가능하다 @AllArgsConstructor - 모든 변수값을 파라미터로 받는 생성자를 만들어준다 @Builder - 빌터패턴 사용시 사용한다 @FunctionalInterface - 함수형 인터페이스, 람다를 사용한 클래스라는 것을 의미한다 이렇게 정의해 놓으면 다른사람이 수정을 할때 추상메소드를 추가하여 람다식이 오류나는 것을 ..
[백엔드개발자 준비하기] JSON 메이븐 프로젝트 -프로젝트당 한번만 할수 있음 [버전 : 주버전.부버전.수버전] 주버전 : 대규모 업데이트 부버전 : 기능이 추가되거나 삭제되었을때(부분적으로) 수버전 : 추가된 기능들이 오류가 났을때 메이븐 프로젝트를 사용하려면 pom.xml 가 있어야 함 객체를 제이슨으로 바꿀수도 있어야 하고 제이슨을 객체로 바꿀수도 있어야 함 gson을 추가했기 때문에 제이슨 오브젝트도 만들수 있음 제이슨의 가장 큰 특징은 처음부터 끝까지 문자열이라는 것이다 제이슨 클래스 안의 클래스 스태틱 없이 쓰면 내부 클래스 클래스 안에 클래스를 사용하려면 무조건 생성해두어야 사용가능 클래스를 생성하지 않고 사용하기 위하여 스태틱 사용 스태틱 안에 스태틱만 생성하지 않아도 됨 그냥 클래스는 스태틱 클래스 생성하고 안의 클래스..
[백엔드개발자 준비하기] 컬렉션 리스트 순서O 중복O (키-순서대로인덱스-값으로 값 판단) 셋(집합) 순서X 중복X 맵 순서X 키중복X 값중복O [리스트] 배열은 자료형이지만 리스트는 클래스 객체이다 리스트 내부에 메소드가 전부 정의되어 있어서 그것을 사용하는 것 ex)size 처음 생성할 때 자료형을 설정해주는데 앞쪽에 데이터타입을 정해두면 그 자료형으로 사용 가능하다(원래는 뒤쪽에도 데이터타입 설정하여야 하는데 생략가능) new ArrayList와 같이 어디 담지 않고 혼자 생성할 때는 안에 자료형을 꼭 설정해주어야 함 그러나 이렇게 사용할 경우 따로 담은 곳이 없어서 새로 생성할 때마다 다 다른공간에 담기므로 리스트를 사용하는 의미가 없다 처음 생성할 때 제네릭 타입을 사용할 것 같으면 내부의 메소드를 사용할 때 필요한 자료형으로..
[백엔드개발자 준비하기] 제네릭 스태틱 안에는 스태틱만 사용가능 멤버 메소드는 주소가 생성되어 있어야 사용가능 : 와일드카드 -와일드카드로 객체를 만들면 자료형이 모호해짐 -그냥 오브젝트 자료형으로 바뀐거라고 생각하면 됨 ? 와일드카드 제약 ? extends 자료형 : 앞으로 해당 메소드가 리턴될때는 해당 자료형을 상속받은 자료형만 리턴가능 ex) person -> Student Teacher : 가능 Car : 불가능 ? super 자료형 : 자료형을 기준으로 상위객체만 가능함 ex) Student -> Sstudent Person : 가능 Teacher : 불가능 [예시1] [TestData] public class TestData { private T data1; private E data2;// Wrapper Class(래퍼 클..
[백엔드개발자 준비하기] 싱글톤 싱글톤 생성자가 프라이빗이다 바깥에서 생성이 불가능 함 사용하고 싶은 클래스내부의 변수 및 클래스 생성자를 전부 프라이빗으로 설정하고 게터를 퍼블릭 스태틱 메소드로 만든 후 변수를 반환해주면 싱글톤이다 스태틱이므로 외부에서 불러도 알아서 불러짐 di : 의존성 주입 [예시] [A 클래스] public class A { private static A instance = null; private Student[] students; private A() { students = new Student[3]; } public static A getInstance() { if(instance == null) { instance = new A(); } return instance; } public void addStu..
[백엔드개발자 준비하기] 스태틱(Static) 스태틱 안에는 스태틱만 사용가능 예시1 public static void main(String[] args) { System.out.println("출력1 : " + TestA.getNum()); System.out.println(); TestA.setNum(100); System.out.println("출력2 : " + TestA.getNum()); } [Student] public class Student { private static final int CODE = 20230000; private static int ai = 1; // auto_increment private int studentCode; private String name; public Student(String name) { st..
[백엔드개발자 준비하기] 오브젝트클래스 오브젝트 -최상위 클래스 -생성된 모든 클래스들은 항상 최상위 클래스로 오브젝트 클래스를 가진다 생략되어있던 기본 생성자가 다른 생성자를 만들면 사라지듯 오브젝트 클래스 상속도 생략되어있다가 다른 클래스 상속으로 바꾸면 사라진다 -생략되어있던 것들이 다른것으로 명시하는 순간 대체된다 -어차피 상속받은 부모 클래스도 상위클래스는 오브젝트라 단일상속 가능 인스턴스.getClass() -생성된 객체의 클래스 정보를 가져옴 클래스.class -해당 클래스의 정보를 가져옴 [ToString] public class ToString { public static void main(String[] args) { Student student1 = new Student("조병철", 34); Student student2 ..
[백엔드개발자 준비하기] 인터페이스 인터페이스 내에서는 abstract를 붙이지 않아도 모두 추상이다 -인터페이스 내부에 있는 객체는 구현하는 객체가 아님 -일반메소드 작성 불가능 (default를 붙여줘야 사용가능) -일반 변수(멤버변수)를 가지지 못함 -상수는 가질 수 있음 -인터페이스 내에서 변수를 선언하면 final을 붙이지 않더라도 자동으로 상수로 선언됨 implements 인터페이스를 갖다쓰겠다 자바는 단일상속이라 여러개의 클래스를 상속받을 수 없다 인터페이스는 여러개를 갖다 쓸 수(상속 비슷함)있음 [interface Calculator] public interface Calculator { public int ERROR = -9999999; public double puls(double x, double y); public ..