2022-05-04 데일리 회고 (After) 8일차

Sung-min Seo·2022년 5월 5일
0

⭐ 오늘의 학습 내용 📌

1. Java 기초

🥕 타입

    기본 타입

    1. 정수 타입
    2. 실수 타입
    3. 논리 타입
    4. 문자 타입

    참조 타입

    - 참조 타입은 값 자체를 비교하기 보다는 주소 값을 기준으로 값을 서로 비교하게 된다.

🥕 문자열

    1. 자주 쓰는 String 메서드

    1. indexOf()
        + 문자를 찾아주는 메서드이다. 찾는 문자가 있는 만큼 숫자를 반환하고 없으면 -1을 반환한다.
    2. toCharArray()
        + 받은 문자열을 하나씩 쪼개서 char 타입의 배열에 넣어주는 메서드이다.
    3. charAt()
        + 받은 문자열의 String 타입을 index 번호에 따라 Char 타입으로 받아주는 메서드이다.
    4. concat()
        + 받은 문자열뒤에 입력받은 문자열을 추가해준다.
        --⭐반환 받은 문자열 값을 저장해주지 않는다!!!!
    5. replace()
        + 받은 문자열을 입력받은 문자로 index 위치에서 바꿔주는 메서드이다.
    6. substring()
        + 받은 문자열을 입력받은 index 위치에서부터 잘라서 가져온다.
    7. split()
        + 입력 받은 특정문자를 기준으로 주어진 문자열을 잘라 배열에 넣어주는 메서드이다.
    8. compareTo()
        + 문자열의 사전순 값을 기준으로 서로 비교하여 정해진 값을 int 값으로 표현해주는 메서드이다.
    9. strip()
        + 받은 문자나 문자열 앞뒤로 존재하는 공백을 제거해주는 메서드이다.
    10. valueOf()
        + 받아오는 Object 값을 String 형으로 바꿔주는 메서드이다.


    2. String Tokenizer

    주어진 문자열을 잘라 Token 단위로 나타내주게 하는 클래스이다. 문자열을 Token 단위로 다룰수 있어 편리하지만, 속도나 성능 측에서는 split() 이나 indexOf()메서드를 사용하는 것이 더 좋다고 한다.

    3. String Builder/ String Buffer Class

    String 클래스는 한번 만들어지면 변하지 않는다.(immutable) 그리고 새로운 문자열을 더하기 위해선 새로운 String 객체를 만들어 참조해 주어야한다. 간단한 코드 구조에서는 상관이 없지만, 구조가 복잡해 질수록 연산이 커지며 성능이 떨어지게 된다.

    String Builder 와 String Buffer 클래스는 유연하게 동작하며 공간이 부족할경우 기존의 버퍼 크기를 늘릴수가 있다.(mutable) 반복 루프를 사용하여 문자열을 더할 때에는 더 유용하게 쓰일수있다.

    String Builder 와 String Buffer의 차이점은 동기화의 유뮤이다.
    Buffer 의 경우 Synchronized Keyword 가 존재하며 멀티 스레드의 환경에서 작업을 할 경우에는 Builder 보다는 Buffer를 사용하는 것이 더 좋다.

🥕 변수, 상수, 타입변환

    1. 변수
        + 변수명을 지을 때는 숫자로 시작할수 없다.
        + 변수명을 지을 때는 자바에서 이미 사용중인 예약어를 사용할수 없다.

    2. 상수
        + 흔히 수학에서 쓰이듯이 변치 않는 숫자라는 뜻을 가진다.
        + 타입 앞에 final이라는 표현을 해준다.
        + 변수 명은 기본적으로 대문자를 사용하며 띄어쓰기 대신 '_' 를 사용하여 구분한다.(SCREAMING_SNAKE_CASE)
    3. 타입 변환
        1. 자동 타입변환
            + 바이트 크기가 작은 타입을 보다 큰 타입으로 사용 했을 때 자동으로 타입변환이 일어난다.
            + 정밀도가 작은 타입을 보다 더 정밀한 타입으로 사용 했을 때 자동으로 타입변환이 일어난다.
        2. 수동 타입변환
            + 자동 타입변환이 일어나지 않는 경우 캐스팅(casting)을 사용하여 수동으로 타입변환을 할수 있다.

Example 1.

int bigValue = 3000;
byte fitValue = (byte)bigValue;  // fitValue 값은 3000이 아닌 -72 이 나오게 된다.

🥕 연산자

    1. 산술 연산자

        기본적으로 계산시에 사용될수 있는 연산자들

    2. 비교 연산자

        조건 연산자
            + 삼항 연산자라고도 불리며 조건식, 참일 때 결과, 거짓일 때 결과로 나누어 복잡한 조건문을 사용하지 않고도 간단하게 식을 나타낼수 있다.

Example 2.

int answer = 100;
int number = 50;
number = answer > number ? 1 : 0; // answer 값이 number 보다 클시 참이면 1 거짓이면 0을 표시
System.out.println(number);  // 결과값은 1이나오게 된다.

🥕 입출력

    콘솔 출력

        출력을 하기 위해서는 System.out.print() 메서드를 활용하는데 'sout'라고 쓰게되면 자동으로 문장을 완성해 준다.
        println()은 줄바꿈 printf()는 지시자를 사용하여 문장을 어떻게 출력해 줄것인지 정해줄수 있다.
        - 지시자 종류
            + %b : 불리언 종류로 표현해준다.
            + %d : 10진수로 표현해준다.
            + %o : 8진수로 표현해준다.
            + %x, %X : 16진수로 표현해주며 소문자와 대문자로 16진수의 단어 소문자 대문자를 표현할수 있다.
            + %c : 문자를 표현할때 쓴다.
            + %s : 문장을 표현할때 쓴다.
            + %n : 줄바꿈을 원할때 사용한다.
    콘솔 입력

        콘솔 입력을 위해서 자바에서는 Scanner 클래스를 사용 한다.
        Scanner 클래스는 자바 유틸에 포함되어 있기 때문에 클래스를 따로 받아와야한다.
        꼭 System.in을 사용해야 한다.

Example 3.

import java.util.Scanner;		// 스캐너 클래스를 가져온다.

Scanner scanner = new Scanner(System.in); //스캐너 클래스의 인스턴스 생성
int number = scanner.nextInt(); //입력되는 숫자를 number 변수로 받는다.

System.out.println(number); // number 변수 출력
        Scanner 입력 메서드 종류
            + in.nextByte() : byte 형을 입력 받는다.
            + in.nextShort() : short 형을 입력 받는다.
            + in.nextInt() : int 형을 입력 받는다.
            + in.nextLong() : long 형을 입력 받는다.
            + in.nextFloat() : float 형을 입력 받는다.
            + in.nextDouble() : double 형을 입력 받는다.
            + in.nextBoolean() : boolean 형을 입력 받는다.
            + in.next() : 양옆 공백을 기준으로 String 형 문자 한 단어를 입력 받는다.
            + in.nextLine() : 개행을 기준으로 String 형 문장 한줄을 입력받는다.

👍 자바 입출력 뜯어보기

⭐ 오늘의 소감

혼자서 공부할때 이미 다 배운 내용이었지만, 페어분과 문제를 같이 풀 때 어떻게 코드를 적용해야 하는지 헷갈리는 부분이 많았다. 이론적인 부분도 많이 중요하지만, 실제로 코드를 어떻게 적용해야하는지 궁리하면서 공부를 할 방도를 같이 마련 해야겠다.

profile
매일 문제 3개 이상 풀기!!

0개의 댓글