변수 마지막 시간?
하...어렵다..어려워 그냥 갈겨보자
String name = 홍길동;
System.out.println(name);
-> 출력 : 홍길동
안좋은 케이스 :
1. System.out.println("홍길동");
2. String yongjin = "홍길동";
-> 1. 위에 변수를 만들어 놓고도 고정된 값을 출력하는 형태로 된다
-> 2. 변수명이 고정된 값을 가질것 처럼 생긴 경우
String sangeun = "박상은";
-> 변수명이 고정된 값을 담을 것처럼 보이게 된다
#, @, 띄어쓰기 사용 X
(특수문자 중 '$' 와 '_' 만 사용 O)
숫자로 시작 X
int 등 예약어 사용 X
!주의! 단어끼리 연결될 때에는 중간에 대문자로 쓴다
ex) 카멜표기법 : newMemberName
스네이크 표기법 : new_member_name
!주의! <문자열> char(정수형,문자형) : 한글자만, ' '
String : 문자열, " "
System.out.println("나는 \"자바\"를 좋아합니다.");
-> 출력 : 나는 "자바"를 좋아합니다
[Escape 문자]
\" : " 큰따옴표를 출력
\' : ' 작은따옴표를 출력
\t : 탭키 효과 (넓은 간격으로 띄어쓰기)
\n : 줄바꿈 (엔터 효과)
float, double(대표)
double이 대부분 쓰인다
float를 쓸 경우
float f1 = 12.33f;
이런식으로 뒤에 f를 붙여준다!
boolean
boolean state = true;
boolean flag = false;
boolean 타입의 값은 true, false 둘중 하나로 나온다
타입변환은 자동 타입 변환과 강제 타입 변환 두가지로 나뉜다.
byte < short < int < long < float < double
int(정수형) 타입 변수 = double(실수형) 타입 변수 X
double(실수형) 타입 변수 = int(정수형) 타입 변수 O
※
double num7 = 30;
int num10 = num7;
-> 이 경우 num7의 값이 30 이여도 double이라는 실수형 타입 변수 이므로 소수점이 포함된 30.0으로 인식하기 때문에 오류가 발생한다!
float f1 = 12.3f;
double d1 = f1;
-> double 타입 변수 = int 타입 변수 O
char c1 = '나';
System.out.println(c1);
int i1 = c1;
System.out.println(i1);
-> char은 출신이 정수형 이라서
int 타입 변수 = char 타입 변수 O
출력 : 나
45208 (유니코드표)
① int -> char 변환
int i3 = 45234;
char c3 = (char)i3;
-> 작은 char 타입 = 큰 int 타입 X -> 근데 앞에 (작은 타입) 넣어주면 O
② double -> int 변환
double d2= 123.123;
int i4 = (int)d2;
-> 작은 int 타입 = 큰 double 타입 X -> 근데 앞에 (작은 타입) 넣어주면 O
※
double d3 = 123.99;
int i5 = (int)d3;
System.out.println(d3);
System.out.println(i5);
-> 123.99 -> 123 이 된거야 내림으로 생각!
큰걸 작은걸로 옮기다보니까 데이터손실 일어나서 그냥 소수점 뒤에꺼 다 버려
(1) String -> 정수형(int) : Integer.parseInt(문자열 형태);
String str1 = "654";
int i6 = Integer.parseInt(str1);
-> str1을 정수형 int로 변환 : 숫자 654
※
int i8 = Integer.parseInt("1aa22");
-> "1aa22"가 숫자 형태가 아니라서 변환 X
(2) String -> 실수형(double) : Double.parseDouble(문자열 형태);
String str2 = "90.9";
double d4 = Double.parseDouble(str2);
-> str2를 실수형 double로 변환 : 숫자 90.9
※
int i8 = Double.parseDouble("122.222");
-> int 타입 = double 타입 X 큰걸 작은거에 못넣으니까
(3) 숫자 -> String : String.valueOf(바꿀값)
String str3 = String.valueOf(4214);
-> 숫자 4214를 문자열로 변환
= 연산에 참여한 타입들 중에 큰 타입으로 변환됨!!
(1)
double d1 = 1.9;
double d2 = 2.2;
int i1 = (int) (d1 + d2);
-> (int) (double) = int로 강제 형 변환 됨!
-> 따라서 int 타입 = int 타입 O
=> (int) (1.9+2.2= 4.1) = 강제 형 변환 할때 소수점 다 버림 : 4
double d1 = 1.9;
double d2 = 2.2;
int i2 = (int)d1 + (int)d2;
-> int + int => int이므로 int 타입 = int 타입 O
=> (int)1.9 + (int)2.2 = 1 + 2 : 3
int x = 1;
int y = 2;
double z = x / y;
-> 정수형 / 정수형 = 정수형 이라서 0.5가 아닌 0.0이 출력된다
(0이 나오는게 아니라 double이 실수형이라 0.0으로 표시됨!)
※
정수형 / 정수형 -> 정수형 double z = x / y; ->0.0
정수형 / 실수형 -> 실수형 double z = x / (double)y; ->0.5
실수형 / 정수형 -> 실수형 double z = (double)x / y; ->0.5
실수형 / 실수형 -> 실수형 double z = (double)x / (double)y;->0.5
=> 이때도 위의 경우와 마찬가지로 앞에 (작은타입)을 붙여주면 강제 형 변환을 시켜주면 실수형으로 인식하고 0.5로 출력이 된다.