웹 수업과 마찬가지로 코로나로 인해 1주일 동안 빠졌기 때문에
자바도 한 수업이 밀렸다.
이번에 배울 것은 접근제어자와 연산자이다.
접근제어자
먼저 자바에는 접근제어자가 4가지가 있다.
- public
- private
- protected
- default
이 접근제어자들은 각각 다른 성질을 가지고 있다.
일단 이 친구들을 같은 클래스 내에서는 모두 사용이 가능하다.
이게 뭔 소리냐,
위 사진같이 아무 접근제어자나 붙여도 하나의 class안에서는 다 접근이 가능하다는 소리이다.
그리고 클래스를 나눌 건데 이때 다른 패키지에 class가 있다면 import를 해줘야 한다.
import는 파일이 어느 위치에 있는지를 알려주는 것이다.
이런 식으로 클래스 간의 패키지가 다르다면
import를 해주지 않으면 AccessModifiler의 위치를 찾지 못하기 때문에
import를 해주면 AccessModifiler에 오류가 사라지게 된다.
잠깐 import로 새었는데,
다시 접근제어자로 돌아오면 패키지가 달라지면 public제어자를 제외한 다른 제어자들은 사용하지 못하게 된다.
위 사진과 같이 public을 제외한 것들은 에러가 난다.
여기서 알아볼 수 있는 것은 public은 모든 곳에서 사용할 수 있다는 소리이다.
그다음은 private이다.
이건 작성되어있는 클래스만 사용할 수 있는 것이다.
방금 위 사진과 같이 패키지가 달라도 안되고,
이렇게 class가 달라도 안되고,
이렇게 상속을 해도 안된다.
즉 자기 자신만 사용할 수 있다는 뜻이다.
그다음은 protected이다.
이 친구는 조금 넓다.
무슨 뜻이냐 이 친구는 패키지가 다르면 안 되지만 상속을 하게 된다면 패키지가 달라도 사용할 수 있게 된다.
바로 위에 있는 사진과 같이 AccessModifiler를 상속하면 protected를 사용할 수 있다.
근데 같은 패키지가 아니냐라고 할 수 있는데
위 사진처럼 다른 패키지에도 사용이 가능하다.
그다음은 마지막인 default이다.
이 친구는 좀 작은데, 상속을 해도 패키지가 다르면 사용이 불가능하다.
상속 까지는 되지만 패키지가 다르면 사용할 수 없다는 뜻이다.
위 사진처럼 패키지가 다르면 상속을 해도 오류가 뜬다.
즉 같은 패키지끼리만 사용할 수 있다는 것이다.
이렇게 상속을 하지 않고도 같은 패키지에 있다면 사용할 수 있다.
이제 연산자로 넘어가자
연산자
연산자는 여러 가지가 있다.
기본적인 +, -, *, /부터 해서
비트 연산자인 |, &, ^, >>, << 까지
일단 자바의 기본적인 연산자이다.
솔직히 이 부분은 딱히 설명하지는 않겠다.
이번에는 비교 연산자이다.
이 부분도 딱히 설명이 필요하진 않지만 그래도 일단 해 보자.
수학을 했으면 알다시피 >, <는 크기를 비교하는 것이다.
<=, >=는 크거나 갔다 와, 작거나 같다를 의미한다.
그리고 == 은 두 개의 수가 같다는 뜻이다. A == B는 A는 B라면 true를 반환하고 A가 B가 아니라면 false를 반환한다.
!=는 같지 않다는 뜻이다. A!= B는 A는 B가 아니라면 true를 반환 A가 B라면 false를 반환한다.
그리고 And연산자이다.
&&로 표기하며 앞부분과 뒷부분의 비교가 전부 true면 true를 반환 앞부분과 뒷부분 중 하나라도 false라면 false를 반환한다.
그다음은 or 연산자이다.
|| 로 표기하며(shift + \) 앞부분과 뒷부분을 비교해 하나라도 true라면 true를 반환 둘 다 false라면 false를 반환한다.
이제 비트 연산자이다.
비트 연산자에는 &, |, ^, <<, >> 가 있다.
비트 연산자는 이진수를 비교해서 나타내는 연산자이다.
먼저 and 연산자이다.
&로 표기하며 이진수 상에서(즉 비트상에서) 둘 다 1이라면 1을 반환한다.
ex) -1 & 1 = 1
-1 = 10000001, 1 = 00000001
즉 비교하면 00000001 = 1이기 때문이다.
수를 입력하면 위 사진과 같이 변환하여 비교하는 것이다.
그다음 은 or연산자이다.
|(shift + \)로 표기하며 비트상에서 둘 중에 하나라도 1이면 1을 반환한다. 3
ex) -1 | 1 = -1
-1 = 10000001, 1 = 00000001
즉 비교하면 10000001 = -1이기 때문이다.
위 사진과 같이 연산한다.
다음은 xor연산자이다.
^로 표기하며 서로 다르다면 1, 서로 같다면 0을 반환한다.
ex) -1 ^ 1 = -2
얘는 왜 2 나오는지 모르겠음
연산해 보면
1000001
0000001
이라서
1000000인데
어쨌든 위 사진과 같이 연산한다.
그다음은 시프트
지정한 숫자만큼 숫자의 위치를 옮기는 것인데
<<는 전부 왼쪽으로 이동시키고,
>>는 전부 오른쪽으로 이동시킨다.
예를 들어
3 << 3 이란 코드가 있으면
왼쪽으로 3번 이동이란 소리다.
위 사진과 같이 작동해서 24가 나오게 된다.
수학적으로 얘기하면
>> = 지정한 수 * 2의 n제곱이 된다
ex) 3 >> 3 = 3 * 2의 3 제곱
<< = 지정한 수 / 2의 n제곱이다.
ex 24 << 2 = 24 /(나누기) 2의 2 제곱
그리고 마지막으로 선생님께서 약수 찾기 코드를 만들라는 과제를 내셨다.
과제 코드
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.close();
System.out.printf("%d의 약수는 1, ",num);
for(int i = 2; i < num; i++) {
if(measure(num,i) == 0)
continue;
if(i != num-1)
System.out.print(measure(num,i) + ", ");
else
System.out.print(measure(num,i));
}
System.out.printf("%d입니다.",num);
}
private static int measure(int num, int test) {
if(num % test == 0)
return test;
return 0;
}
이렇게 수업이 끝이 났다.
'학교 공부 > 자바' 카테고리의 다른 글
[JAVA] 자바 5번째 수업 (0) | 2022.04.20 |
---|---|
[JAVA] 자바 4번째 수업 (0) | 2022.04.13 |
[JAVA] 자바 첫 수업 (0) | 2022.03.17 |