사내에서 자바 커뮤니티를 개설하여 기본 개념은 다시 공부하고 Java8의 새로운 개념, 문법을 공부해보려고한다.

교재는 팀원들과 [이것이 자바다 - 신용권의 Java 프로그래밍 정복] 으로 정하였고 나는 ch6. 클래스부터 참여하였다.

아래는 연습문제풀이 및 스터디 시간에 공유한 내용이다. (코드복붙하다가 인덴테이션이나 문법같은게 조금 깨졌..)

 

* 디폴트 생성자의 접근지정자

- 명시안하면 클래스의 접근지정자를 따라감

 

* 싱글톤

- 스프링에서 생성되는 모든 빈은 싱글톤 모드

- JSP도 싱글톤으로 jsp가 서블릿으로 변환되면 계속 그걸로 재사용

- 실무에서 싱글톤 패턴 사용하는 방법은 여러가지가 있는데

- syncronized 키워드 사용은 제일 구현 간단하지만 저 키워드 자체가 lock이 걸려서 진행되기 때문에 성능저하 발생가능

- 요즘엔 Holder 패턴을 많이 쓰는데 classloader 의 특징을 이용해 만든 패턴 >좀 더 자세히 찾아보기

 

* 클래스의 접근지정자

- 클래스에는 public default 만 사용

 

* getter/setter 를 왜 쓰는지

 

* 리플랙션

- 런타임시에 클래스 정보를 가져오는 기법

- 프레임워크를 만든다면 리플랙션은 필수

- 리플랙션하려면 annotation 유지정책을 runtime으로 지정

 

* 클래스의 로딩시점

- 클래스를 참조할때 클래스로더에 올라가고

- static 변수, 메소드 등은 그때 정의됨

 

 

1 – 3)

하나의 클래스로 여러 개의 객체생성 가능

 

2 – 4)

 

3 – 4)

필드, 메소드 생략가능

 

4 – 3)

생성자/메소드 앞뒤에서 모두 선언가능ㅎ지만

생성자와 메소드 내부에서는 선언할수없음

 

 

5 – 1)

생성자를 실행시키지않으면 객체생성 불가능

 

6 – 4)

오버로딩(메소드이름은 같고, 매개변수 형태 다른경우)으로 가능

 

7 – 2)

리턴타입은 같아도 됨

 

8 – 2)

정적블록 내부에서 인스턴스 필드나 인스턴스 메소드를 사용할수없음

사용하고싶으면 내부에서 객체생성후 참조변수로 접근

 

9 – 2)

상수는 초기값 또는 정적블록에서 선언가능

 

10 – 4)

클래스만 복사해서 이동하면 사용할수없음

 

11 – 3)

동일패키지 내에 속한 클래스들은 접근가능

 

12필드, 생성자, 메소드

 

13/14

Public class Member {

 private String name;
 private String id;
 private String password;
 private String age;

 public Member() {}

 public Member(String name, String id) {
   this.name = name;
   this.id = id;
 }
}

 

15

Public class MemberService {
 Public Boolean login(String id, String password) {
	If (“hong”.equals(id) && “12345”.equals(password)) {
	return true;
 }
 Return false;
}

 Public void logout(String id) {
 	System.out.println(id+“님, 로그아웃 되었습니다.”);
 }
}

16

Public class Printer {
  Public void println(int val) {
      System.out.println(val);
  }

  Public void println(boolean val) {
      System.out.println(val);
  }

  Public void println(double val) {
      System.out.println(val);
  }

  Public void println(String val) {
      System.out.println(val);
  }
}

17

Public class Printer {
  Public static void println(int val) {
  	System.out.println(val);
  }
  Public static void println(boolean val) {
  	System.out.println(val);
  }

  Public static void println(double val) {
  	System.out.println(val);
  }

  Public static void println(String val) {
  	System.out.println(val);
  }

}

 

18

Public class ShopService {
  Private static ShopService singleton;
  Private ShopService() {}

  Public static ShopService getInstance() {

    If (singleton==null) { 
    	Return new ShopService();
    }
    else singleton;
  }
}

 

19

Public class Account {

 Public static final MIN_BALANCE=0;
 Public static final MAX_BALANCE=1000000;
 Private int balance;

 Public void setBalance (int balance) {
   if (MIN_BALANCE <= balance && MAX_BALANCE <= balance) {
      This.balance = balance;
   }
   Return this.balance;
  }

  Public int getBalance () {
      Return this.balance;
  }

}

20

 

//  현재 몇번째 array 인지 파악하기 위한 용도 
public static int curArrCnt = 0; 

Private static void createAccount() {
   //scanner 로 입력
  Account acc = new Account(ano, owner, balance);
  System.out.println(“계좌가 생성되었습니다.”);
  accountArray[curArrCnt++] = acc;
}

Private static void accountList() {
  For(int I = 0 ; I < accountArray.lenth; i++) {
    System.out.println(accountArray[i].getAno() + “ ” 
    + accountArray[i].getOwner() + “ “ + accountArray[i].getBalance());
  }
}

Private static void deposit() {
  // scanner 로 계좌번호, 예금액 입력
  Account acc = findAccount(ano);
  Int curBal = Acc.getBalance();
  Acc.setBalance(curBal+balance);
}

Private static void withdraw() {
  // scanner 로 계좌번호, 출금액 입력
  Account acc = findAccount(ano);
  Int curBal = Acc.getBalance();
  Acc.setBalance(curBal-balance);
}

Private static Account findAccount(String ano) {
  For(int I = 0 ; I < accountArray.lenth; i++) {
    If (accountArray[i].getAno() == ano)
    	Return accountArray[i];
  }
}

'Language > Java' 카테고리의 다른 글

자바 커뮤니티3 - 인터페이스  (0) 2019.06.05
자바 커뮤니티2 - 상속  (0) 2019.05.28
Java 문자열 객체  (0) 2018.08.04
Java 배열 선언, 초기화  (0) 2018.08.04
Java 접근지정자 (Access Modifier)  (0) 2018.08.04

+ Recent posts