day2

상은👸·2023년 8월 29일
0

뚜벅뚜벅 첫번째

목록 보기
2/26
post-thumbnail

변수 마지막 시간?
하...어렵다..어려워 그냥 갈겨보자

<이름을 저장하는 변수>

String name = 홍길동;
System.out.println(name);

-> 출력 : 홍길동

안좋은 케이스 :

1. System.out.println("홍길동");
2. String yongjin = "홍길동";

-> 1. 위에 변수를 만들어 놓고도 고정된 값을 출력하는 형태로 된다
-> 2. 변수명이 고정된 값을 가질것 처럼 생긴 경우

String sangeun = "박상은";

-> 변수명이 고정된 값을 담을 것처럼 보이게 된다

<변수명으로 사용할 수 없는 것>

  1. #, @, 띄어쓰기 사용 X
    (특수문자 중 '$' 와 '_' 만 사용 O)

  2. 숫자로 시작 X

  3. int 등 예약어 사용 X

!주의! 단어끼리 연결될 때에는 중간에 대문자로 쓴다
ex) 카멜표기법 : newMemberName
스네이크 표기법 : new_member_name

!주의! <문자열> char(정수형,문자형) : 한글자만, ' '
String : 문자열, " "

<String 문자열 + Escape 문자>

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 둘중 하나로 나온다

<변수타입 - 타입변환> ★어렵

타입변환은 자동 타입 변환과 강제 타입 변환 두가지로 나뉜다.

  1. 자동 타입 변환 : 큰 타입 = 작은 타입 (작은타입이 큰타입에 들어갈 수 있잖아)

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 (유니코드표)

  1. 강제 타입 변환 : 작은 타입 = 큰 타입 (큰 타입이 작은타입에 들어갈 수 없잖어)
    ---> 작은 타입 = (작은 타입) 큰 타입 으로 변환해주면 OK!

① 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 <-> 숫자)

(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, double>

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로 출력이 된다.

profile
뒤죽박죽 벨로그

0개의 댓글

관련 채용 정보