본문 바로가기

전체 글

(55)
[백엔드개발자 준비하기] 익명클래스 익명클래스 클래스의 기능을 한번만 사용하는 경우 자원 낭비임 따라서 다른 클래스 내부에 임시로 인터페이스를 구현한 클래스를 만들어 사용함 다른곳에서는 사용 불가능(일회성) 예시 public class Main { public static void main(String[] args) { Calculator c1 = new Addition(); System.out.println(c1.calc(10, 20)); //////////////////////////////////////////////// Calculator c2 = new Calculator() { @Override public int calc(int x, int y) { return x - y; } }; System.out.println(c2.ca..
[백엔드개발자 준비하기] 예외처리 예외처리 트라이캐치문 트라이문 : 예외가 일어날수도 있는 부분 캐치문 : 트라이문에서 오류(예외)가 난부분을 받아 이어 실행 캐치문안에서 하나씩 예외처리 종류별로 하나씩 다 처리해주어야 함(else if 느낌으로) 마지막에 Exception을 두어야 함 상위에 런타임익셉션이 있으면 언체크드 익셉션 런타임이 없으면 체크드익셉션 예외에는 메세지를 줄 수 있다 모든 예외의 최상위가 Throwable임 거기다 super를 사용하여 detailmessage 에 넘겨줌 그것으로 예외처리 문자 출력 예외를 직접 만들어 사용하는것도 가능하다 [ArrayException] public static void main(String[] args) { Integer[] nums = {1, 2, 3, 4, 5}; try { th..
[백엔드개발자 준비하기] 어노테이션 @데이터 @올아규먼트어노테이션 @빌더 골뱅이를 사용하여 작성하는 문법 롬복 라이브러리를 설치하여 사용한다 @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..