개발 공부/JAVA 23

생성자

클래스가 생성될때 생성자가 최초로 호출 되면서 클래스 객체 초기화에 필요한 것들을 만들어 줌 생성자 : 인스턴 (객체) 가 생성 될 때마다 호출되는 '인스턴스 초기화 매서드' (iv 초기화 메서드) 객체 : iv묶음 기본생성자 만들지 않아도 숨겨져 있음 생성자 특징 1. 생성자 이름은 클래스 이름과 일치 해야 함 2. 접근 제한자 클래스명 () {}; 3. 모든 클래스는 반드시 생성자를 가져야 한다. 4. 리턴 값이 없다 - 에러 뜨는 이유 : User클래스에 있는 생성자 매개변수 3개인 반면에 메인 메서드에 있는 생성자에 매개변수가 없어서! 에러 사라짐 user.setName을 하는 순간 더 이상 빈 값이 아님

개발 공부/JAVA 2024.02.06

스프링 핵심 원리 기본 - 회원 도메인 개발

생성자 생성 getter , setter 생성 (private filed값을 세팅하기 위함) 회원저장 회원 아이디로 회원 찾는 기능 인터페이스와 구현체를 다른 패키지에 두면 설계 상 좋음 DB확정 안된 상태에서 MemoryMemberRepository만 만들어놓은 상태 개발 진행은 할 수 있음 HaspMap 동시성 이슈가 발생할 수 있으므로 실무에서는 ConcorrentHashMap사용 권장 구현체가 하나만 있는 경우 인터페이스 명뒤에 impl 관례상 많이 씀 가입을 하고 회원을 찾으려면 memberRepository 인터페이스 필요 구현 객체를 선택해 주어야함 join에서 save호출하면 다형성에 의해 MemoryMemberRepository에 있는 save호출 됨 순수한 자바 코드로 자바 메서드 실행..

개발 공부/JAVA 2023.12.13

JDBC 연결 실습

1. JDBC드라이버 로드 Class.forName(driver) String driver = "oracle.jdbc.OracleDriver"; String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String userid = "mango"; String passwd = "mango"; 2. DB연결 Connection Connection conn = null; //db 연결 Statement stmt null; //connect를 이용해 sql명령을 실행하는 객체 ResultSet rs = null; //sql실행 후 select 결과를 저장하는 객체 conn = DriverManager.getConnection(url, userid, passwd); 3. S..

개발 공부/JAVA 2023.06.20

thread

thread : ,프로그램 내에서 실행되는 프로그램 제 흐름. 프로세스 내에 thread가 두 개라면 두 개의 코드 실행흐름이 생긴다는 것을 의미. multi Thread: 각자의 thread들이 하나의 독립된 프로그램처럼 동시 다발적으로 각자의 일을 수행함. 프로세스를 10개만드는것 보다 한 프로세스 안에 10개의 Thread를 만드는 것이 좋다. 어느 thread가 cpu를 먼저 점유할 지 모름. java -cp ThreadTest 1. 클래스로딩 2. 바이트코드검증 3. 0,1 재해석 4. static 변수 자동초기화 5. main-T 생성,시작 6. main -T에의한 main( ) 호출 run()가 끝나면 thread는 더 이상 효과가 없다. 동기화 (잠금장치) :lock걸어주는 작업 : syn..

개발 공부/JAVA 2023.06.09

입출력 (InputStream/Reader), file 라이브러리

InputStream (System.in) Reader : 파일을 읽기위함 ObjectInputStream ObjectOutputStream 출력stream 모니터 PrintStream ps = System.out; PrintStream oos = s.getOutptStream( ); 소켓 OutputStream oos = s.getOutptStream( ); 직렬화 : ObjectOutputStream / ObjectInputStream 직렬화 할때 클래스와 역직렬화 할때 클래스의 내용이 다르면 안 된다. 반드시 같아야 한다. 파일의 크기를 알고 싶을때 File f = new File("a.txt")) f.length(); canWirte() canRead() file 라이브러리 import java...

개발 공부/JAVA 2023.06.08

JCF (Java Collection Framework) 자료구조형 라이브러리 활용

JCF (Jave Collection Framework) ULM표기법 Interface상위로 class가 올 수는 없다. Collection(interface) / Map(interface) list(interface)에서 상속받는 vector(class)와 arraylist(class) 관계 : 점선 상속 표기를 할때 화살촉을 닫아줘야함. collection framework : 크기 조절 가능 collection : 값(value)만 저장 add() : 추가 size() : 저장된 자료의 갯수만 반환 remove(): 자료 삭제 List : 배열처럼 인덱스가 제공됨. 중복 데이터 저장 가능. 순차적으로 저장 가능 - list.get(0); - list.remove(0); . get () ArrayLi..

개발 공부/JAVA 2023.06.01

java 예외

오류 -컴파일 오류 -실행 오류 (에러/ 예외) 에러: 개발자가 처리할 수 없는 오류 예외: 개발자가 처리할 수 있는 오류 (경미한 오류), 처리 안하면 프로그램이 종료됨 예외종류 1) Runtime Exception : 컴파일러가 예외 처리를 감지하지 못하는 예외(UncheckedException) NumberFormatException, ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException.... 2) 그외의 Exception : 컴파일러가 예외 처리를 감지하는 예외 예외처리법 1. try - catch 메서드 내에서 예외 처리를 할때 try{ //예외발생 가능한 코드 위에 사 }catch( ) { } 2.throws 호출..

개발 공부/JAVA 2023.05.31

java 추상 클래스 / 인터페이스/ 중첩클래스

추상클래스 : abstract class 클래스명 메소드 또는 멤버 중에 하나라도 abstract라면 멤버를 담고 있는 클래스는 자동으로 추상 클래스가 된다. (추상 클래스라고 해서 추상 메서드가 반드시 포함되어야 하는 것은 아니다) new로 객체 생성불가 추상메소드 abstract ( ) : 하위 클래스에서 반드시 재정의(오버라이딩) 해야한다 (=>상속을 강제하고 있음을 의미) 추상메서드를 포함하고 있는 클래스는 반드시 추상 클래스가 되어야 한다. final 메소드 : 하위 클래스에서 재정의 불가 public abstract class Test{ abstract void m( ) ; final void m1( ) { } } class TestChild1 extends Test{ } ERROR

개발 공부/JAVA 2023.05.31

상속 (형변환/다형성/overriding)

객체 모델링을 먼저 해야한다. 개발 중에 새로운 모델링이 요구되면 기존 상속?이 바껴야한다. 같은 클래스의 이름이어도 다른 패키지에 저장되면 다른 클래스로 인식함. 상속 (부모-자식) 공통점이 있으면 부모클래스로 도출함. 부모의 변수와 메소드를 자식이 갖고 있는것처럼 사용할 수 있다. 상위클래스의 멤버변수와 메서드는 하위클래스에 상속됨. 자식이 구현해야할 코드가 줄어든다. 부모클래스를 여러개 둘 수 없다. (단일 상속) IS A (KIND OF)관계에서만 성립 가능. this: 현재 사용하는 객체 super: 현재 사용하는 객체의 부모 영역. this처럼 메서드 내에서 사용가능. 변수 선언위치 메모리영역 초기화시점 지역변수 메소드내부 stack 자동초기화 안됨 매개변수 메소드내부 stack 자동초기화 안..

개발 공부/JAVA 2023.05.30