D+22증감연산자.앞뒤차이,조건문.equals(),random(),코데대비.chatAt(),length()

Bku·2024년 1월 25일

학원 일기

목록 보기
21/67
post-thumbnail

연산자

연산자는 이미 js에서 배웠고 java에서도 동일하다. 요약만 봐도 될거같다.

데이터를 처리하여 결과를 산출하는 것을 연산이라고 함
산술(이항) : +, -, , /, %
부호(단항) : +, -
문자열(이항) : +
대입(이항) : =, +=, -=,
=, /=, %=
증감(단항) : ++, --
비교(이항) : ==, !=, >, <, >=, <=, instanceof
논리(단항, 이항) : !, &, |, &&, ||
삼항 : (조건식) ? A : B
단항, 부호, 대입 연산자를 제외한 모든 연산은 왼쪽에서 오른쪽으로 이루어짐
각 연산자마다 연산자 우선순위가 있으며 단항 > 이항 > 삼항,
산술 > 비교 > 논리 > 대입 ( 가장 높은 우선순위는 () 임 , 소괄호를 활용하자 )

증감 연산자

그런데 증감 연산자중 헷갈리는 점이 있어서 이것만 짚고 넘어가자.

증감 연산자에는 총 4가지가 있다.

  1. ++x
  2. x++
  3. --x
  4. x--

1을 증가 시키거나 1을 감소시키는 것이다. 그런데 1번과 2번의 차이는 뭘까?

  int x = 10;
        int y = 10;

        System.out.println(x++ + " " + ++x);

결과

10과 12가 나왔다.

이유는 x++의 현재값은 1이 더해지지 않은 10이다. 그래서 이 값을 찍으면 10이나오는 것이다. 그리고 이식의 뒤부터 x++의 값은 11이 되는 것이다. 그래서 다음 줄에 이 값을 찍으면 11이 된다.

그런데 ++x는 이 값부터 1이 더해진 값을 가진다. 그래서 x의 값에 x++을 하여 11이 된 후 ++x를 하여 12가 된 것이다.

결론은 현재값에 1을 더하냐 안 더하냐의 차이인 것이다.

조건문

조건문도 자바스크립트와 동일하다. 이번에도 헷갈리는 것만 짚고 넘어가자

equals함수

문자열은 비교연산자를 통해 비교를 할 수가 없어서 equals를 통해 같은지 다른지를 판단해야한다.
예제

 Scanner scanner =new Scanner(System.in);
        String id = scanner.nextLine();
        String pw = scanner.nextLine();

        if (id.equals("java") != true) {
            System.out.println("로그인 실패 : 아이디가 존재하지 않음");
        } else if (id.equals("java") == true && pw.equals("12345") == true) {
            System.out.println("로그인 성공");
        }else {
            System.out.println("비밀번호가 틀립니다.");
        }

문자열은 등호로 비교할 수 없고 true, false로 비교하여야한다. 그래서 이것을 boolean형태로 바꿔주어야하는데 equals함수가 이것을 해준다.
"문자열1.equals(문자열2)"의 형태로 사용하면되고, 문자열 1과 2가 같으면 true, 다르면 false를 반환한다.

 Scanner scanner =new Scanner(System.in);
        String id = scanner.nextLine();
        String pw = scanner.nextLine();

        if (id.equals("java") != true) {
           if ( pw.equals("12345") == true) {
            System.out.println("로그인 성공");}
        } else {
            System.out.println("비밀번호가 틀립니다.");
        }else{
         System.out.println("ID가 존재하지 않습니다.");
         }

이런식으로 사용하면된다.

중첩 if문

if안에 if를 넣어주는 방법으로 조건이 두개가 충족되어야 결과를 내보낼때 사용한다. 근데 사실 이걸 안써줘도 else if를 사용하면 되지만 코드가 길어지니 이렇게 하는 방법도 있다고 생각하자.

random함수

랜덤으로 숫자를 출력해주는 함수이다.

예제 ) 1~6까지 랜덤한 수를 뽑아서 그 수를 출력하세요.
Math.random(); = 0과 1사이의 실수만 뽑아주는 함수(0 <= x < 1)

그냥 이렇게 쓰면 자연수가 나오지 않는다.
그럼 1~10미만의 랜덤 정수로 변경해보자

  1. 0.0 <= Math.random() < 1.0
  2. 10곱하기- 0.0 10 <= Math.random() 10 < 1.0 * 10
    = 0 <= 10Math.random() < 10.0
  3. 정수화 - (int)0 <= (int)10Math.random() < (int)10
  4. +1 - (int)0 +1 <= (int)10Math.random() +1 < (int)10 +1
    = (int)1 <= (int)10Math.random() +1 < (int)11

우리가 사용할 코드는 가운데의 저 코드다 (int)(Math.random *10) +1

// 정리하자면 : (int)(Math.random*끝수) + 처음수
        int num = (int)(Math.random()*10)+1;
        //출력
          if(num == 1) {
            System.out.println(1);
        } else if(num == 2) {
            System.out.println(2);
        }else if(num == 3) {
            System.out.println(3);
        }else if(num == 4) {
            System.out.println(4);
        }else if(num == 5) {
            System.out.println(5);
        }else {
            System.out.println(6);
        }

출력은 if문으로 하면된다.

이렇게 랜덤 숫자를 만들수 있다. 로또 프로그램 만들때 유용할거같다.

switch

  switch (grade) {
            case 'A':
            case 'a':
                System.out.println("우수 회원입니다.");
                break;
            case 'B':
            case 'b':
                System.out.println("일반 회원입니다.");
                break;
            default:
                System.out.println("손님입니다.");
                break;
        }

1) 값을 판단해서 변수값이 값1이면 실행문1, 값2이면 실행문2 모두 아니면 default의 실행문3이 실행된다.

2) 정확한 조건문을 위해 각각의 case, default 마지막에 break;를 사용해서 실행하고 빠져나와야 함.

3)case를 여러개 써서 or을 표현할 수 있다(break가 나오기 전까지의 조건을 다 참고하기 때문).

반복문

js와 동일한 개념에 문제만 풀었다.

코테 대비 함수

문자열 함수

1. chatAt() - 문자 추출

문자의 자릿수를 정해서 문자를 추출할 수 있다.

//   예제 : 주민번호 뒷자리에 첫 번째 글자가 1이면 남자입니다. 1이 아니면 여자입니다.
        String ssn = "010624-1230123";

        char gender = ssn.charAt(7);
        System.out.println(gender);

결과

1이 나온다.

2. length() - 문자열 길이

 String ssn = "010624-1230123";
        System.out.println(ssn.length());

문자열의 길이를 알려준다.

느낀점

오늘 기억에 남는 내용은 문자를 연산자로 비교할 수 있게 해주는 equals함수다. 이 함수를 통해 문자의 내용 다른 문자와 비교하여 true,false를 내보내주어 이것을 비교연산자에 사용할 수 있게 해준다.

또한 증감연산자의 앞과 뒤의 차이, 새로운 함수들을 배웠다.

하루종일 코딩문제만 푼거같은데 재밌었다. 아직 잘 못하는거 같은데 많은 연습이 필요할듯

profile
기억보단 기록

0개의 댓글