GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

Back to the Java

Back to the Basic 기본을 다잡자

Backcoder 2022. 6. 21. 19:16

< 기본적으로 연산은  "왼쪽" 부터 순서대로 실행된다. >

int a= 100; int b = 200; 
sout ( " result =" + a + b );

 

=> result=100200 

 

// 왼쪽부터 더해서 result=100 문자열이 되버리고 거기에 200이 더해짐 
=> 괄호처리 필요 

< char은 표현코드값을 품고있다. > 

char c1 = 'A'; 
sout ( 100 + c1 ) ;

=> 165    ( 100 + 65 )     

// A라는 char 는 표현코드값이 숫자로 65다.   ( B는 66 C는 67 . . . )  
// 더하라고하면, c1 을 자동형변환 해서 숫자로 바꿔서 더해버림   => 자동형변환
sout ( a +  ""  +  c1)  => 100A  출력 . // "" 이용해서 구분해서 출력 가능하다

< 강제 형변환 >

long num  = 1414143413431; 
int small = (int) num;  
sout( small );

=> int 최대값이 나오거나 그런게 아니라 아예 다른 값이 나온다. ( 조심히 써야한다 ) 

강제 형변환은 MAX_VALUE(최대 표시가능 숫자) 를 넘지 않는 선에서,

실수를 정수로 강제 형변환 시킬때 유용하다. 

 

그 외에, 더 큰 datatype 을 작은 datatype 으로 바꾸는 건, 값의 소실이 이상하게 나타날 수 있으므로 조심하자. 

 


< "실수" 로 뽑기 > 
double avg = ((sum)/3);      

// avg를 실수로 뽑아야하는데 sum 과 3 이 둘다 int 이므로 답이 무조건 int로만 나온다.  

double avg = ((sum)/(double)3);


// 연산 하는 값 둘중에 하나를 double 로 강제형변환 시켜주면 => 전체 결과값도 double 로 자동형변환

=> 답을 double 로 준다.  

double avg = (double)((sum)/3);


// 연산식 전체에 double 형변환 해줘봤자 이미 int로 계산 끝난 상태라서 int 값만 준다.

연산하는  숫자 중에 하나를 double 로 바꿔야 함. 



<   x  =  y   대입연산자 > 

= 는 두 값이 같다는 뜻이 전혀 아니다. 
= 는 y (오른쪽) 의 값을 x (왼쪽) 으로 대입 한다는 뜻이다. (집어 넣는다.)  

 

( SQL 등에서는 = 가 "같다" 의 의미로 쓰인다. 헤깔리지 말자. 

 JAVA 에서 = 는 "대입" 일 뿐이다. 

                  == 이게 "같다" 의미로 쓰인다. ) 

 


< 조건 3항 연산자 >  

 

=>  True 일때 "이거"/False 일때 "저거" / 심플하게 딱 두개로 나눌 때 쓴다. 

 

( => True 일때 더 들어가서 다른 조건 더 걸고 싶을 때,

        / 혹은 True 일때 "이거" 뿐만아니라  "저거 요거"  더 시키고 싶을때는

  if 문 써야겠지.  )  

 

Type x =  A ? 
             B :
             C ;              
sout(x);

 

 => A(Boolean 타입) 의 결과를 분석하여 
   True 이면 B 실행 / False 이면 C 실행 


// 실행할 B와 C 의 Datatype 에 따라서  그 type 에 담아서 사용 
// 혹은 return ( boolean )  으로 사용 
// A,B,C => 딱히 괄호 처리를 요하지 않음 

 

<return 예시>    

return ( A != null )  ? 
RequestEntity.status(200) : 
RequestEntity.status(400);

 

<String 타입 사용 예시>

String BB = booknum>stnum ?
        "1명의 학생당 "+ (int)(booknum/stnum)+"권씩, 남은 책은 " + (booknum%stnum)+ "권이다. " :
        "나워줄 수 없습니다";

                  System.out.println(BB);

 

 

        int input=21;
           String S = input %3 == 0 && input %7 == 0 ?
                "3의 배수이면서 7의 배수이다" :
                "동시에 3의 배수이면서 7의 배수는 아니다";

        System.out.println(S);