Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

발전하는 개발자가 되자

JAVA 공부 본문

개발공부/Java

JAVA 공부

백경훈 2019. 2. 9. 15:37

자바에 대해 공부하고 정리한것 모음

  • 0927까지 정리

서식

특수 문자

\t: 탭 \n: 줄 바꿈 \': 작은 따옴표 \": 큰 따옴표 \\: 역슬래쉬

서식 문자

출력시 서식 문자를 이용 하여 간단하게 표현할 수 있다. %d: 10진수 %o: 8진수 %x: 16진수 %c: 문자 %s: 문자열 %f: 실수

  • ex
int num = 10;
System.out.printf("이런식 으로 사용 %d 하하",num);

연산자

산술연산자, 논리연산자, 삼항연산자, 비트연산자 등이 있다.

  • 산술 연산자 ==, *, /, +, - == 연산자는 주소값을 비교 문자열 비교할 땐 equals() 사용하자

  • 삼항연산자 : 조건식? 식1 : 식2 조건이 참이면 식1이 실행되고 조건이 거짓이면 식2가 실행된다.

int x = 10;
int y = 20;
int result = 0;
result = (x > y) ? 100 : 200;
System.out.println("result: " + result);
// result: 200

result = (x < y) ? 100 : 200;
System.out.println("result: " + result);
// result: 100

result = (x == y) ? 100 : 200;
System.out.println("result: " + result);
// result: 200

배열 과 List

배열 특징: 한번 선언할때 크기를 정해야하고 정하면 변경 불가능 arrayList : 크기를 계속 추가 할 수 있다. 메소드를 이용해 수정한다.

  • 배열 선언 방법
int[] arr1 = new int[5];
arr[0] = 100;
arr[1] = 100;
arr[2] = 100;
arr[3] = 100;
arr[4] = 100;
System.out.println(Arrays.toString(arr1));
// 100,100,100,100,100
int[] arr2 = {10, 20, 30, 40, 50, 60}
  • arrayList 선언 방법
ArrayList<> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
System.out.println("출력:" + list.get(0));
// 출력: 10

문법

조건문

특정한 조건에 동작해야할 때 쓰는 구문

  1. if

  2. else if

  • 코드를 작성할 때 else 은 될 수 있으면 줄이는게 낫다. 이유: 코드를 읽을 때 else 은 위에 if 까지 생각 해야함 짧으면 상관 없는데 길어지면 한번에 봐야할 줄이 길어짐
  1. swith

반복문

특정한 동작이 반복되어야할 때 쓰는 구문

  1. for
  • for each 도 있다. 배열만큼 실행
@Test
public void foreachTest() {
    int[] numbers = {1,2,3,4,5};
    for (int number : numbers) {
        System.out.println(number);
    }
}
// 1,2,3,4,5 출력
  1. while
  • while 은 ()가 만족해야 동작
int i = 0;
while(i < 10) {
    System.out.println(i);
    i++;
}
// 0,1,2,3,4,5,6,7,8,9 실행
  1. do{} while(false)
  • while 조건에 맞게 do 실행
int i = 10;
do {
    System.out.println(i);
} while (i < 13);
// 10, 11, 12 3번 출력

String 과 char

문자(char, Character)와 문자열(String)

  • char : 문자 1개 ex) p, o, b, i
  • String : 문자열 ex) pobi

StringBuilder

  1. String + String vs StringBuilder String은 불변하기(immutable)이기 때문에 String과 String을 더하면 새로운 String 객체를 생성한다. 따라서 String과 String을 더하는 시점에 메모리 할당과 메모리 해제가 계속 발생한다.

  2. StringBuilder는 String과 다르게 기존 데이터에 새로운 데이터를 더하는 방식을 취하기 때문에 속도가 더 빠르다. 따라서 긴 문자열을 더하는 상황이 발생하는 경우 StringBuilder를 활용해 구현한다.

  3. String 은 더할 때 새로운 공간을 만들어 더한값을 만들고 StringBuilder 는 문자열에다 바로 더한다.

  • StringBuffer 는 다수의 사용자의 접근을 막는다.
  • 현업에서는 StringBuilder 더 자주 사용한다. 굳이 막을 필요가 없어서

List 와 ArrayList 차이

클래스를 생성할 때 도형 타입으로 생성하게 되면 정사각형이 아닌 다른 직사각형, 삼각형 등 도형 인터페이스를 구현한 클래스에서 사용 될 수 있다. 하지만 정사각형 클래스로 생성하게 되면 직사각형, 삼각형 등 에서는 사용할 수 없다.

도형에 비유하여 풀어보면,

  • List list = new ArrayList();

  • -> 도형 list = new 정사각형();

  • ArrayList list = new ArrayList();

  • -> 정사각형 list = new 정사각형();

(List는 interface다. interface는 공통되는 메소드를 추출해 놓은 클래스로 생각하면 된다.)


class 와 인스턴스

클래스 와 인스턴스(객체) 의 차이

  • 클래스는 표현 대상의 특징에 대해 추상화 하여 서술 하는것을 말한다. -추상은 사용자가 구체적인 내용을 생각하지 않고도 사용할 수 있도록 하는 기능

    • 프로시져 추상화 : 함수
    • 데이터 추상화 : 구조체, 배열, 포인터
  • 인스턴스는 구체화 된 클래스라 생각하면 될듯하다.

  • static : 자바 언어 예약어로 클래스 메소드와 클래스 필드를 지정할 때 사용한다.

    • static을 붙이면 클래스 전체에서 사용할 수 있다. (클래스 변수 클래스 메서드)
    • 안 붙이면 인스턴스 내에서만 사용할 수 있다. (인스턴스 변수 인스턴스 메서드)
    • 인스턴스 변수와 메서드는 인스턴스를 만든 후 에만 접근 가능.
    • 클래스 변수와 메서드는 인스턴스를 만들지 않아도 접근 가능.

생성자

클래스를 생성할때 생성된다.

  • 반환 타입이 없다.
  • 클래스와 이름이 같다.
  • 생성할때 파라미터를 강제할 수 있다.
  • setter 를 안 쓸 수 있다. (생성자를 생성하면서 파라미터를 넣으면 그자체가 setter);
  • this 현제 생성한 인스턴스 의 변수를 찾는다.
  • test 코드는 src/test/ 안의 코드, prduction 코드는 실제 사용하는 코드

getter 와 setter

둘다 사용하는것을 자제 하자 왜냐 하면 객체 지향 설계는 객체를 메세지를 보내 동작 시키는것을 원칙으로 한다.

getter

객체의 값을 가져오는 것

  • 사용 하는것

setter

객체의 변수를 변화 시키는 것


TDD 단위 테스트

언제 테스트를 작성하고 수행해야 하는지에 대한 절차이다.

  • 단위 테스트(Unit testing) 단위 테스트는 일반적으로 모듈이나 객체를 구성하는 단일함수 정도의 크기에 해당하는 코드 단위에 집중한다. 단일 함수에 대한 구체적인 테스트는 테스트 자체를 단순화하고 빠르게 작성하여 수행해 볼 수 있다는 장점을 갖는다. 이를 통해 많은 수의 단위 테스트들을 빠르게 만들 수 있고 보다 많은 버그를 발견하여 잡아 낼 수 있다. 특히 단위 테스트는 코드를 변경하는 경우 많은 도움을 준다. 구현된 코드에 대한 단위 테스트들을 갖고 있다면 변경과 상관없는 구현코드들이 이상없이 동작할 수 있다는 신뢰를 갖고 마음 편하게 코드를 수정할 수 있다.

  • TDD는 다음의 절차로 구성된다.

    1. 테스트 코드를 작성한다.
    2. 작성한 테스트 코드와 기존에 작성된 다른 테스트들을 수행한다. 이 시점에서 새로 추가된 테스트 코드는 실패할 것이다. 만일 실패하지 않는다면 올바른 것을 테스트하고 있지 않은 것이므로 그 안에 버그가 있는 것이다.
    3. 실패한 테스트를 성공시키기 위한 최소한의 코드를 구현부에 작성한다.
    4. 실패한 테스트가 성공하는지 확인하기 위해 테스트를 재수행한다.
    5. 필요에 따라 작성한 코드를 리펙토링한다.
    6. 1번 부터 다시 반복한다.

객체 설계 팁들

  1. 상태를 가지는 객체의 데이터를 꺼내려(get)하지 말고 객체에 메시지를 보내라는 원칙에 따라 구현한다.

'개발공부 > Java' 카테고리의 다른 글

JVM과 GC(Garbage Collection)  (0) 2019.05.15
객체지향설계의 5원칙 솔리드(SOLID)?  (2) 2019.05.06
equals 와 == 차이 (java)  (0) 2019.04.11
Java HashMap 이란  (0) 2019.02.12
Comments