본문 바로가기
개발자로 가는 길(국비지원과정)/1. Java

[210414수] 복습 + 연산자 연습문제

by 레아Leah 2021. 4. 14.
반응형

[복습]

1) 자바기초 

- 자바 프로그램의 기본 단위: class

더보기

 public class 클래스명 {

     public static void main(String[] args) {

         int a = 10; 

     }

  }

가독성을 위해 {}선을 맞춰주는 것이 좋다. 

 

       

식별자(Identifier): 파일 안에서 이름이 중복되면 안된다. 

- 영문자 대소문자 섞어서 사용(엄격하게 가림) 

- 숫자 사용가능하나 첫글자로 올 수 없다.  abc123(O), 123abc(X)

- 특수문자 (_$)만 사용 가능하나 잘 사용하지 않는다.

- 클래스 이름 :  첫글자는 대문자 나머지 소문자.

                        두 개의 단어로 이루어진 클래스명인 경우 첫글자들은 대문자로. 

- 변수명 : 첫글자 소문자 나머지 소문자  

                두 개의 단어로 이루어진 클래스명인 경우 첫글자들은 소문자로 두번째 단어에 대문자

 

클래스명 예) MyProgram

변수명 예) myData 

 

- 프로그램 실행의 시작과 끝 :  main() 메인메서드가 시작과 끝이다. 

 

 

 

2) 자료형: 컴퓨터에게 명령을 시키기 위해 사용함.

●기초 자료형(숫자) 

 정수: byte, short, int, long // 연산을 할 때는 int형만 기본으로 사용한다. 

 실수: float, double // 실수는 오차를 적게 하기 위해 double형을 기본으로 사용한다. 

 불린형 : boolean

 문자형 : char(2byte) 

 

참조자료형 : 기초 자료형을 토대로 만든 자료형 

 클래스(인터페이스) : String.. " " 안에 들어있음 

 배열

 Enum : 회사에서는 사용하지만 지금 단계에서 어렵게 느낄 수 있으니 우선 패스! 

 

 

3) 변수와 상수 

변수 사용하기 위해서는 

- 변수를 선언 

   int number;

  double data; 

  컴파일 후 메모리공간에 이름을 붙이는 것. 

 

- 변수를 초기화 : 변수 선언 후 맨 처음으로 값을 대입하는 것. 

  number = 10;

  data = 12.5; 

 

-선언과 동시에 초기화 

  boolean bool = true; 

 

- 한꺼번에 같은 타입으로 선언 

   int n1, n2, n3; // 변수 3개를 int형으로 선언 

   double d1, d2, d3 // 데이터타입이 같은 경우에만 가능 

 

- 변수를 그릇, 상자에 빗대어 표현함  

- 변수명의 첫글자는 소문자!

 

 

4) 연산자(Operator)  

- 기호를 이용해서 특별한 계산을 하도록 한다. 

- ★우선순위가 있고, 연산의 결합순서가 있다! 

자바에서는 타입이 다른 두 개의 피연산자를 연산하려고 하면 타입을 맞춘 후 연산 수행 

  10 + 20 ==> int + int ==> int형

  10 + 20.5 (타입이 다름) ==> int + double (내부적으로 int형이 double형으로 바뀐다) ==> (promotion; casting; 자동 형변환) double +    double  ==> double 

- 연산자의 종류 : + - * / instanceof 

 

 

5) 피연산자의 개수에 따른 분류

- 단항 연산자 : 피연산자가 1개인 경우. 대부분 피연산자 앞에 쓰임.  ex)  -a, ++a, --a, ~a, ~a) / 예외 a++, a--

- 이항 연산자 : (a + b, a / b)

- 삼항 연산자 : ? : (a >b ?  "add" : "substract")  

 

 

6) 두 가지 이상 동작을 하는 연산자  

+ : ①더하기

   : ②부호유지 (플러스는 플러스로, 마이너스는 마이너스로 유지) (단항일 경우)

   : ③문자열 연결

     "강호동" + ",씨름선수" ==> "강호동,씨름선수"

      10 + "세" ==> "10세"

      "연도 " + 2021 ==> "연도 2021" 

 

- : 뺄셈 (이항 why? 문자열은 계산하지 못함)

   : 부호 반전 (플러스를 마이너스로, 음수-> 양수, 양수-> 음수) 

       int a =10; 

       -a; 이렇게만은 사용할 수 없음. 꺼내서 넣어야함

       a = -a; 이 작업을 해야만 음수가 된다. 

 

 

 

위는 내가 한 거. (틀림^^)

 

cm를 m로 환산할 때, 100으로 height의 값을 100으로 나눠주는데 (175.5/100) = 1.755m

그 후에는 height/100를 h에 다시 대입해줘야 컴퓨터가 인식한다. 

★이렇게!  height = height/100 

 

 

 

 

 

[본수업]

 

<자꾸 헷갈리는 부분>

 a + 1; 만으로 끝나는 것이 아니라 다시 a에 대입해줘야 한다. a = a + 1;   

 

 

 

int a = 0;

int b = 0;

b = ++a;

System.out.println(a); 

System.out.println(b);

 

실행 값은

1

1   

 

 

 

"b = ++a;"와 "b = a++;" 은 전혀 다른 값이 나온다. 

why? 변수 앞에 ++이 붙을 경우 우선순위 1순위이지만, 변수 뒤에 쓰면 우선순위 15로 밀려나기 때문. 

 

 

 

[x, y의 값을 교환하고 싶을 때]

 

x = y;

y = x;  이렇게 바꾼다고 변하지 않음.. 

 

x에  y의 값이 들어오고, 대입된 y의 값이 y에 그대로 대입되기 때문에 x의 값을 어딘가로 피신시킬 곳을 만들어줘야 한다.  

temp라는 변수를 이용해 x를 피신. 

 

 

 

[나머지 연산자 %]

-이항 연산자이며 정수에 사용 

-어떤 수 a가 짝수인지? 홀수인지 확인할 때 주로 사용. 

- a % b : a를  b로 나눈 나머지 

 

 짝수인가 홀수인가 판단하고 싶을 때 많이 사용한다.

 

 

 

 

[비교연산자]

무조건 왼쪽이 기준!

> (초과), < (미만), >=(이상), <=(이하), ==(같다), !=(같지 않다)

boolean 위에 있기 때문에 사용안해도 됨(내가 한 실수: boolean을 다시 쓰려함) 

나머지 연산자로 N의 배수인지 확인하고 싶은 경우에는 z = a % N == 0;

 

 

 

 

[논리연산자:  두 개의 불리언 값을 가진]

논리연산자( &&: logical and 이고, ||: logical or 이거나!, (not))

&& :  모든 값에 만족해야 할 때, 값의 범위  

 

|| : 하나만이라도 만족해야할 때 

! :  반전 연산자 

X Y &&일 경우 결과(둘 다 만족)  ||일 경우 결과(하나만 만족)
T T T T
T F F T
F T F T
F F F F

boolean을 넣을 때는?

 boolean 선언 또한 boolean a, b; 이와 같은 방식으로 선언. 

 

 

  age와 같은 변수는 항상 왼쪽에 옴. 

boolean result;  변수 선언 

result = age < 8 || age >= 64; 

왜 불리언이 안오지? <--내가 잘못 생각한 부분 

아! 이미 위에 boolean result;라고 선언이 되어있기 때문에 그렇구나! 

 

 

!(not) : 반전연산 

result = height  >= 155 && height < 180;

result = !(height  < 155 || height >= 180);

 

result = age < 8 || age >= 64;

result = !(age >= 8 && age < 64);

 

위는 연산자가 달라도 같은 값이다. 

같은 값을 만들기 위해서는 모두 반대로 바꿔야 한다. 

 

 

 

[문제1]

(내가 한 거 .. 민망) 

(올바르게 출력된 값. 이건 내가 이해를 못한게 아니고 수학의 세계를 이해못한거야.. )

 

 

 

[문제2]

내가 한거^^;; 진짜 그지같당ㅋㅋㅋ (잘하는 사람 왜케 많앙..)

나머지 값이 생길 때마다 변수 선언하지 마시개.. 그럴 필요없다개.. 왈왈

선생님이 짠 코드

temp는 나머지 값을 계산하기 위해 

254860이라는 값을 사용하지 않고 money라는 변수를 사용하는 이유 -- > money값이 달라진다고 값이 달라지면 안되기 때문에 

 

(정답) 

 

여기서도

temp = money - (m50000 * 50000) 

temp = temp - (m10000 * 10000) 

와 같이 temp에 다시 넣어주는 작업을 확인할 수 있다. 

 

반응형