연습문제부터 어렵다... 형변환 헷갈리죽겠네 나만못하는가...하ㅜㅜ 다들잘하네 형변환은 다시정리해보자
연산자 끝! 증감연산자 -- ++는 끝날때까지도 헷갈린다..!
String a = "10";
int b = 3;
double c = 4.5;
_____ result = _______;
System.out.println(result);
① 101010 + (10+3) = 1000 + 13
String a = "10";
int b = 3;
double c = 4.5;
int aInt = Integer.parseInt(a);
int result = aInt * aInt * aInt + (aInt+b);
System.out.println(result);
-> 단순히 숫자로만 계산한 경우!
-> 문자열을 숫자로 바꾼 다음 1000+13을 해준다
String -> int 로 변환! = Integer.parseInt(바꿀값)
② "10" + 13 = "1013"
String a = "10";
int b = 3;
double c = 4.5;
double d = b * c; //13.5
int e = (int)d; //13
String result = a + e; // "10" + 13 = "1013"
System.out.println(result);
-> 먼저 b와 c를 곱하면 13.5가 나오는데 일단 double로 담아준다
-> 그 다음 int 정수 13으로 바꿔준다
-> 다음 "1013" 이라는 문자열로 바꿔줘야하는데 a가 문자열이므로 a+e 는 문자열 + 숫자 이기 때문에 하나만 문자열 이여도 문자열로 인식 가능하다!
-> 따라서 "1013"
=> 축약된 버전
String a = "10";
int b = 3;
double c = 4.5;
String result = a + (int)(b * c);
System.out.println(result);
※ 조심하자!
String result = a+ (int)b c;를 하게 되면 (int)b와 c를 따로 인식 하게 된다 그래서 1013.5가 나온다 10 + 3 4.5 = 1013.5
int a = 4;
double b = 3.4;
String c = "6.8";
_____ result = _______;
System.out.println(result);
① 2 + 4 + 3 이 나오도록
(6-4) + 4 + 3 = "243"
int a = 4;
double b = 3.4;
int bInt = (int)b; //3
String c = "6.8";
double cDouble = Double.parseDouble(c); //문자열을 숫자로
int cInt = (int)cDouble; // 실수를 정수로 //6
String result = String.valueOf(cInt -a) + a + bInt; // 문자열은 한문장만 바꿔줘도 문자열로 나온다!
System.out.println(result);
-> 먼저 실수 b를 정수 3으로 만들어주고
-> String 실수 c를 숫자 실수로 바꿔주고
-> 실수 c를 정수 6으로 바꿔주고
-> String result가 나올 수 있게 식에서 한문장만 문자열로 바꿔준다!
② 6 * 4 + 3 = "243"
int a = 4;
double b = 3.4;
int bInt = (int)b; //3
String c = "6.8";
double cDouble = Double.parseDouble(c); // 6.8
int cInt = (int)cDouble; //6
String result = "" + cInt*a + bInt;
System.out.println(result);
=>축약 된 버전
int a = 4;
double b = 3.4;
String c = "6.8";
String result = "" + ((int)Double.parseDouble(c)*a) + (int)b;
System.out.println(result);
-> String 문자열은 "" 넣으면 오류 안뜰거야..
->((int)Double.parseDouble(c)a) = 문자열 실수 c를 숫자로 바꿔 준 다음 정수 int로 바꾼 것! 그래서 6 4
-> (int)b는 실수 b를 정수 int로 바꾼것! 그래서 3
-> 결론 : "" 꼈으니까 문자열로 인식할거고 그래서 "243"
※ 내가 짠 코드..하....노답
int a = 4;
double b = 3.4;
String c = "6.8";
double d = Double.parseDouble(c);
double e = a * (int) d; // 24
// 4 6 = double이라서 24.0 으로 되잖아!!!!!
// int e = a * (int) d; // 앞에 int로 바꾸면 24로 바뀌니까 답이 243이 됨~
int f = (int)b; //3
String g = String.valueOf(e); // "24"
String result = g + f; // "24" + 3
System.out.println(result); // 그래서 24.03 이 출력...
-> 나는 6 * 4 + 3 을 하고 싶었나봐
-> 먼저 문자열 c를 실수 6.8로 만들었고
-> 다음에 c를 정수로 바꾸는 (int)작업을 하고 a랑 곱해줘서 24를 만들었어
-> 근데 여기서 문제인게 내가 double e로 잡아버린거야 그래서 24.0 인 실수형태로 나와버렸고 이후에 답이 24.03이 되버린거지..
-> 그래서 이때 int e 로 잡으면 확실하게 정수 24로 나오니까 답이 243으로 나오게 된다!
---->다음 b를 정수 3으로 만들어주고
-> e를 문자열로 만들어 주는 String g = String.valueOf(e); 작업 후!
->String result = 문자열("24") + 정수(3) = "243"
대입 연산자 : += -= *= /= %=
증감 연산자
++ --
원본 변수 공간의 값에 영향을 준다!
++x; // 증감을 수행하고 다른 연산에 참여
x++; // 다른 연산을 수행하고 나중에 증감을 수행
== != < > <= >=
== 같냐? != 같지않냐?(달라?)
AND : 그리고 , && (둘다 같아야 같은거야)
true && true -> true
true && false -> false
false && true -> false
false && false -> false
OR : 또는 , || (둘 중에 하나라도 참이면 참이다)
true || true -> true
true || false -> true
false || true -> true
false || false -> false
NOT :아니다 , !
!true -> false
!false -> true
XOR(거의 안쓰임) : 다른가?, ^ (둘다 같으면 거짓 둘중에 하나가 다르면 참) => != 랑 의미같음
true ^ true -> false
true ^ false -> true
false ^ true -> true
false ^ false -> false
=> 조건식 ? 참 : 거짓
※ 중첩된 삼항 연산자
(조건식) ? 참 : 거짓;
-> (조건식) ? (참) : 거짓;
-> (조건식) ? ((조건식) ? 참 : 거짓) : 거짓;
이런식으로 중첩되서 사용할 수 있다,,
(조건식) ? ((조건식) ? 참 : 거짓) : 거짓;
(조건식) ? 참 : ((조건식) ? 참 : 거짓);
(조건식) ? ((조건식) ? 참 : 거짓) : ((조건식) ? 참 : 거짓);
(조건식) ? ((조건식) ? 참 : ((조건식) ? 참 : ((조건식) ? 참 : 거짓));
ex)
시험 점수가 50점 미만이면 재수강
50점 이상이면 통과긴 통과인데... 90점 이상이면 "장학금"
70 "통과"
95 "장학금"
50점 미만 재수강... 20점 미만 "탈락"
45점 "재수강"
10점 "탈락"
int score = 70;
String result;
result = (score >= 50) ? "통과" : "재수강";
System.out.println(result);
-> 조건이 더 붙을땐 중첩된 삼항 연산자로!
result = (score >= 50) ? ("통과") : ("재수강");
->강조된 글씨부분을 다시 이렇게 변경!
->result = (score >= 50) ? ((score >= 90) ? "장학금" : "통과") : ("재수강");
-> 뒤에 "재수강"도 똑같이!
result = (score >= 50) ? "통과" : "재수강";
-> result = (score >= 50) ? ((score >= 90) ? "장학금" : "통과") : ((score < 20) ? "탈락" : "재수강");
int score = 20;
String result;
result = (score >= 50) ? ((score >= 90) ? "장학금" : "통과") : ((score < 20) ? "탈락" : "재수강");
System.out.println(result);
같은 이치로
result = (score >= 90) ? "장학금" : ( score >= 50 ? "통과" : ( score < 20 ? "탈락" : "재수강" ));
-> 높은 점수부터 차례대로 작성했을때!