아직 4일차 밖에 안됐지만 강사님 덕분에 둔둔하다
글고 담주에 깃허브도 알려주신다고해따...
글고 오늘 오늘 집으로갈때 버스를 타고 왔는데 전철과 도착하는 시간은 비슷하지만
환승구역에서 버스선택의 폭이 좁아져서 더 늦게 도착해따..
하지만 버스에서 오는 한시간 동안 정말 개 꿀 잠을 잤기에 만족...
하지만 전철로 오는것보다 천원 더 비싸고 더 늦게 도착하기 때문에 꿀잠자고싶을때 이용하도록해야겠다
오늘 배운거
연산자
-논리 부정 연산자
-증감연산자
-산술연산자
-비교연산자
-논리연산자
복습들어갑니다
일단 몰랐던거 아무도 안알려주는 꿀팁들
왜 이클립스에서 src 폴더에 소스파일을 넣냐?
이클립에서 소스파일은 어디다가 생성하냐? 할때 src안에 패키지 만들어서 클래스파일 생성하는거임
소스폴더라고해서 src였던거임. 소스파일은 이 안에 담으라는 뜻
이클립스파일 압축해서 zip 파일로 Import / Export 하는방법
이건 첫날인가 이튿날 알려줬는데 까먹고 안썼다
Export - 내보낼 java project 선택 - Browser버튼으로 위치랑 저장할 파일이름 정하기 - Finish
(압축파일그대로 가져오기 Import)
Import - Existing Projects into Workspace - 선택하고 finish
(압축파일이 import 안될때 )
대부분 같은 폴더명의 파일이 이미 안에 있는거임..이미 있는 파일을 delete하거나 이름바꾸기
압출은 밖에서 풀고 그 폴더 Navigator 창으로 드래그하기
import한 파일이 깨질때
Windows - enco 검색 - 뜨는 모든거 utf-8 로 변경해주기, 그리고 spel 쳐서 뜨는것도 utf 8 로 변경
원래 이클립스 처음 시작할 때 해줘야하는거임
이미 깨져버린 파일은 되돌릴 수 없나봄...?
이클립스 다시 깔고 설정제대로하고 import 하면 왠지 될 것 같기도
이클립스파일 완전삭제하기
삭제할파일 딜리트하고 체크박스 있는거 체크하고 삭제하기
1. 논리 부정 연산자 LogicalNegation
- 단항연산자이다
- 논리값을 반대로 바꾸는 역할을한다
- 표현식 : !(논리값)
-결과값도 논리값이다
boolean b1 = true; //(논리값타입 b1 변수가 true 값임)
sysout ("b1의 부정 : " + !b1); // true값 나옴
이런식으로도 표현가능
boolean b2 = !(2>1); // (2>1) -> true -> !(true) -> false
System.out.println("b2 : " +b2) // false 나옴
2. 증감연산자 Increase Decrease (중요도 ***********)
- 단항연산자임
표현법 : ++변수, 변수++ / --변수 , 변수--
ex) ++num; , num++; / --num; , num--;
++ : 변수의 담긴 값을 1 증가시켜주는 연산자
-- : 변수에 담긴 값을 1 감소시켜주는 연산자
증감연산자에는 전위연산 / 후위연산이 있음
전위연산 (++num; / --num;) - 증감연산자(++,--부호)가 변수 앞에 있는 경우
-> 먼저 증감 하고 나서 그 다음에 처리(출력이든 대입이든)가 진행된다
선증감 후처리
후위연산(num--; / num--; ) - 증감연산자(++,--부호)가 변수 뒤에 있는 경우
-> 먼저 처리(출력이든 대입이든)를 진행 하고 나서 증감을 나중에 한다
선처리 후증감
이론이나 말로만으로는 이해하기 어려움, 실습으로 이해를 해야한다.
전위연산자 실습
int num1 = 10;
System.out.println(num1); //`10출력
System.out.println(++num1); // 11출력
System.out.println(++num1); //12출력
System.out.println(num1); //12 출력
int num2 = 10;
System.out.println(num2); //`10출력
System.out.println(--num2); // 9출력
System.out.println(--num1); //8출력
System.out.println(num1); //8 출력
여기 까진 전혀 어렵지않음
문제는 후위연산
후위연산자실습
int num1 = 10;
System.out.println(num1); //10출력
System.out.println(num1++); //10 출력
//먼저 변수의값을 출력을 하고나서 증가를해서 현재 num2의 실제값은 11
System.out.println(num1++); //11출력
//실제값 11을 출력하고나서 증가를해서 현재 num2의 실제값은 12
System.out.println(num1); //12출력 -> 실제값(현재변수의실제값,현재값) 출력
int num2 = 10;
System.out.println(num2); //10출력
System.out.println(num2--); //10 출력
//먼저 변수의값을 출력을 하고나서 가감을해서 현재 num2의 실제값은 9
System.out.println(num2--); //9출력
//실제값 9을 출력하고나서 가감을해서 현재 num2의 실제값은 8
System.out.println(num2); //8출력 -> 실제값(현재변수의실제값,현재값) 출력
전위연산보다 후위연산을 더 많이 사용한다고한다
후위연산은 약간....옆사람이 알려줬는데
만나이를 생각하는것도 좋은것 같다.
내 출력되는 나이는 10이지만 내 실제나이는 9...
변수에대입을 하는걸로 해서 실습을 해보겠음
전위연산
int num1 = 2;
int result1 = ++num1 *3; //num1을 하나 증가시키고 그다음에 연산해서 대입(선증감후처리)
//num1이 하나 증가되서 3 , 3*3해서 그 값이 result1에 저장
System.out.println(num1 , result1); // 3, 9
int a = 10;
int b = a++;
sysout(a,b) // a=11, b=11
후위연산
int num2 = 2;
int result2 = num2++ *3; //
//num2값은 아직 그대로인채 2*3 하고 그 값이 result2에 대입되고나서 마지막에 num1이 증가됨(선처리후증감)
System.out.println(num2 , result1); // 3, 6
//result2에 값이 대입처리되고 나서 증가가 이루어저 num2값이 하나 올라가서 실제값 3이나오는게 맞음.
//result2 값은 증가가되기전 2값으로 연산되어 6 나오는게 맞음
int c = 10;
int d = c++;
sysout(c,d) // c=11, d=10
결론 후위연산자는 출력값과 실제값은 다를 수 있다
도대체 이런걸 어따쓰냐~ 하면 조회수같은거 누적해서 올라갈때 같은 상황에서 쓰인다고함
3. 산술연산자 Arithmetic
- 이항 연산자임 (값이 2개 이상)
+ - * / % (5개)
산술연산 우선순위? ***
() * / % > + -
=>각종 연산자들이 같은 라인에 있을경우 왼쪽에서 오른쪽 순서대로 먼저 연산을 진행해야함
우선순위 : 괄호 - 곱하기 나누기 - 퍼센트 - 덧셈뺄셈
산술연산을 할 때 주의할 점?
int num1 = 10;
int num2 = 3;
sysout ("num1 + num2=" +num1 + num2);
의 출력값은?
-> num1과 num2를 더한 값을 출력하고 싶었는데 출력값은 103
why? 같은 라인에 연산자가 같이 있을 때는 앞에 순서대로 처리가되기 때문에 +num1 까지 먼저 처리되어 문자열로 처리가 된다. 그 다음에 +num2가 처리되고 이 역시 문자열로 출력
결론!!! 연산을 할땐 가독성과 정확한 결과를 위해
괄호로 값을 묶어주고 쓰도록하자
sysout("num1 + num2 = " + (num1 + num2)); //13출력
산술연산자는 별로 어렵지않은데 여기서 젤 중요한건 % 퍼센트연산자임
%연산자는 나눗셈을 하고나서 나머지 값을 구해줌
int num1 = 10;
int num2 = 3;
System.out.println( (num1 % num2)); // 1 (10과3을 나누기했을때 나머지값)
//% 퍼센트연산자가 나머지를 구하는 연산자
//나머지를 어따씀??????
//값 % 2 == 0 (2로 나눴을 떄 나머지가 0)---->짝수
//값 % 2 == 1 (2로 나눴을 떄 나머지가 0)---->홀수
// 짝수, 홀수를 구할 때 자주자주자주 씀
//값 %5 ==0 (5로 나눈 나머지가 0) ----> 5의 배수란 소리
//배수를 구할 때 퍼센트 연산자를 쓴다~
//값 %3 ==0 (3으로 나눈 나머지가 0)---> 3의 배수란 소리
//% 퍼센트연산자가 나머지를 구하는 연산자
//나머지를 어따씀??????
//값 % 2 == 0 (2로 나눴을 떄 나머지가 0)---->짝수
//값 % 2 == 1 (2로 나눴을 떄 나머지가 0)---->홀수
or !(값%2==0) //값을 2로 나눴을때 0이 아니라면? 으로도 표현할수있겠음 (논리부정연산)
// 짝수, 홀수를 구할 때 자주자주자주 씀
ex) 4 %2 == 0
4를 2로 나눴을 때 딱 떨어지니까 나머지값은 0임 ->
4 / 6/ 8/ 10 등 짝수 수가 들어오면 나머지는 0이니 출력되는 값은 짝수란 소리
값 부분에 사용자의 입력값이 들어온다면 사용자가 입력한 숫자가 짝수인지 아닌지 알려줄수있음
//값 %5 ==0 (5로 나눈 나머지가 0) ----> 5의 배수란 소리
//배수를 구할 때 퍼센트 연산자를 쓴다~
//값 %3 ==0 (3으로 나눈 나머지가 0)---> 3의 배수란 소리e
정리하자면 %연산자는 나머지값을 구해주는 연산자인데
활용은 짝수와 홀수 및 배수를 구할 때 사용한다~'
이걸 하고 나서 아주 퀄리티높은 증감연산자와 우선연산자순위를 이용한 쪽지시험을 봤는데
a~i 까지 총 9개의 변수를 각각 다양한 증감연산자를 이용해서 누적?해서 값이 나오고 마지막 변수에 각종 산술연산자와 8개와 변수가 혼합되어 값을 출력해내는거였다. 증감연산자의 테스트와 우선순위 연산 순서를 테스트할수있는 문제였다. 나는 9개 중 마지막 우선순위연산계산하는 값을 틀렸는데 산술연산자 우선순위가 이래서 중요한거구만...완전 깨달았다!
우리반에서 만점자는...한...6~8명 나왔던거같다..자세히 못봄. 원래 반에 한두명나오는거라는데 우리반이 똑똑하다고한다. 천재들아니여?
4.비교연산자 Comparison
- 이항연산자임 (두개의항을 비교)
- 두 값을 비교해서 만족(맞으면)하면 true(참), 만족하지않으면 false(거짓)을 반환한다
(즉 두개 값을 비교하면 출력해 내는 값이 true, 아니면 false 라는소리, 결과가 저 두개 밖에 안나온다는 소리)
- 대소비교 연산자 : < > <= >=
- 동등비교 연산자 : ==(같다) !== (같지않다)
주의** 값이 서로 같냐고 물어볼때 = 가 아닌 == 다. java에서 = 는 대입연산자로 쓰인다
ex)
int a =10;
int b =20;
sysout(a==b); //a랑 b랑 같냐?
sysout(a>b); //a가 b보다 크냐?
sysout(a<=b); //a가 b보다 작거냐 같냐?
boolean result = (a<b); //a가 b보다 작냐? 그 결과값을 result 변수에 저장
sysout(result);
각 출력값은?
false false true true (한줄씩 줄바꿈하고 출력되는건데 걍 합쳐놓음)
실습
public void method(){
// 사용자가에게 값 2개를 입력받아 1값이 2보다 큰지, 짝수가 맞는지 출력하는 메소드
// 둘쨋날 배운 Scanenr 클래스 복습 겸 비교연산자, 짝수값 구하는 거 복습
Scanner sc = new Scanner(System.in); //java.util 임포트
System.out.println("첫번째정수: ");
int num1 = sc.nextInt();
System.out.println("두번째정수: ");
int num2 = sc. nextInt();
sysout("첫번째가 두번째보다 크니? " + (num1>num2));
sysout("첫번째 값이 짝수니? " +(num1 %2==0));
//뽀나스
sysout( num2 <'A');
//어제배운 아스키 코드, char 와 int는 서로 형변환없이 와리가리가능
// A는 아스키코드로 65이다.
// ( num2 <'A'); 두번째 입력한 값이 65보다 작니?
}
//어제배운 아스키 코드, char 와 int는 서로 형변환없이 와리가리가능
// A는 아스키코드로 65이다.
// ( num2 <'A'); 두번째 입력한 값이 65보다 작니?
5. 논리연산자 Logical
- 이항연산자 (값이두개, 항이 두개 필요하단소리)
- 논리연산자로는 두가지가 있음
&&(엔드엔드 ANDAND) / || (오아오아 OROR)
- 두개의 논리값을 연산해주는 연산자이다
-결과값도 논리값(boolean, true 혹은 false 둘중에 하나)
&& (ANDAND 엔드엔드) -
표현식 : 논리값 && 논리값
* -> 왼쪽값과 오른쪽값 둘다 true일 경우 결과값은 true이다
둘 다 만족해야 true
(AND == ~이고, 그리고,~이면서)
int num = 65;
boolean result = (num >= 1 ) && (num <= 100);
// num값이 1이상 "이고" "그리고 " 100이하 -> true 값 출력
**&& 연산자를 기준으로 앞의 결과가 false일 경우 뒤의 조건은 굳이 실행하지 않는다!! **
|| (OROR 오아오아)
표현식 논리값 || 논리값
* -> 왼쪽값과 오른쪽값 둘중에 ""하나라도 true""""일 경우 결과값은 true
둘중 하나만 만족해도 true
(OR == 또는,~이거나)
**|| 연산자 기준으로 앞의 결과가 true 일경우 뒤의 조건은 굳이 실행하지앟는다!! **
입력한 값이 y 또는 Y일때
boolean result = (ch == 'y') || (ch == 'Y');
둘중에 하나만 입력해도 true(참) 값 저장
//사용자가 입력한 정수값이 1~100사이 값이 맞는지? 실습
Scanner sc = new Scanner(System.in);
System.out.print("정수하나입력 :");
int num = sc.nextInt();
// boolean result = (1<= num <=100);//이케표현불가
boolean result = (num >=1 ) && ( num <=100);
System.out.println("사용자가 입력한 값이 1이상 100이하 입니까? " +result);
//출력 => 사용자가 입력한 값이 1이상 100이하 입니까? true
Scanner sc = new Scanner(System.in);
System.out.print("정수하나입력 :");
int num = sc.nextInt();
// boolean result = (1<= num <=100);//이케표현불가
boolean result = (num >=1 ) && ( num <=100);
System.out.println("사용자가 입력한 값이 1이상 100이하 입니까? " +result);
출력 => 사용자가 입력한 값이 1이상 100이하 입니까? true
-num값이 1 과 같거나 이상 이고 num값이 100이랑 같거나 작을경우 true 값 반환
=> 둘다 만족해야 ture 반환
&& -> ~이고~ , 그리고~ , ~하면서 (이런 문장 나오면 &&)
두 개의 조건 모두가 true 여야 && 연산의 결과값이 최종적으로 true
/둘 중에 하나라도 false가 있을 경우 && 연산의 결과값은 false다
// oror 실습
// 사용자에게 성별을 입력받은 후 여자인지 확인해보기
Scanner sc = new Scanner(System.in);
System.out.print("성별을 입력해주세요 (M/F) : ";
int num = sc.nextInt();
boolean result = (gender=='F')||(gender =='f');
System.out.println("사용자가 여자입니까? "+result);
boolean result = (gender=='F')||(gender =='f');
//둘 중 하나라도 만족하면 true
// || 의미: ~이거나, ~또는
아니...근데 이런 예제들 선생님이 만든건데 이케 다 써도 됨...?
그냥 노션에 정리해야하나
'국비수업' 카테고리의 다른 글
[국비 Java 6일차] 조건문 if / switch (0) | 2022.10.26 |
---|---|
[국비 Java 5일차] 복합대입연산자, 삼항연산자 (0) | 2022.10.24 |
[국비 Java 3일차] 과제 코드리뷰 / printf() 메소드/ 강제 자동 형변환 (0) | 2022.10.20 |
[국비 Java 2일차] 변수와 Scanner로 값 입력받기 (0) | 2022.10.19 |
[국비 Java 1일차]프로그래밍 개발 국비 학원 개강 첫날 / 자바 처음 설치하고 환경변수설정하기 (0) | 2022.10.19 |