일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Microtask Queue
- docker
- 클라이언트 상태 관리 라이브러리
- useLayoutEffect
- CS
- 좋은 PR
- AJIT
- Headless 컴포넌트
- type assertion
- 암묵적 타입 변환
- jotai
- task queue
- Custom Hook
- JavaScript
- linux 배포판
- Recoil
- 타입 단언
- helm-chart
- react
- 주니어개발자
- Render Queue
- zustand
- TypeScript
- Redux Toolkit
- 명시적 타입 변환
- 프로세스
- useCallback
- Compound Component
- prettier-plugin-tailwindcss
- Sparkplug
Archives
- Today
- Total
구리
자바의정석_연산자(Operater) 본문
- 증감연산자 종류 : 증가연산자(++), 감소연산자(--(
- 증감연산자 타입 : 전위형 (++i), 후위형 (i++)
- 증감연산자가 수식이나 메서드 호출에 포함되지 않고 독립적인 하나의 문장으로 쓰이면
전위형이나 후위형이나 차이가 없다.
ex) int i = 1;
++i; => 2
i++; => 3
- 증감연산자 예시 1
public class Chapter3_operator {
public static void main(String[] args) {
int i=5, j=0;
j = i++;
System.out.println("j=i++ 실행 후, i=" + i + ", j=" + j);
// 결과 i = 6, j = 5
i=5;
j=0;
j = ++i;
System.out.println("j=++i 실행 후, i=" + i + ", j=" + j);
// 결과 i=6, j=6
}
}
- 증감연산자 예시 2
public class Chapter3_operator {
public static void main(String[] args) {
int a =5, b=5;
System.out.println(a++); // a값을 출력 후 1 더함
System.out.println(++b); // b에 1을 더한 후 출력
System.out.println("a = " + a + ", b = " + b);
// a = 6, b= 6 ( 두번째로 사용되는 a는 1 더해진 값으로 출력 )
}
}
- 산술 변환 : 두개의 피연산자 타입을 같게 일치시킨다 ( 더 큰 타입으로 변환한다) ex) long+int = long
- 이때 피연산자 타입이 int보다 작으면 int로 변환한다. ex) byte + short = int, char + short = int
byte A = 10;
byte B = 20;
//byte C = a + b;
//System.out.println(C); 이렇게 하면 c는 산술변환으로 인해 int값으로 출력되어야 하는데 byte 변수에 형변환 없이 저장하려 했으므로 오류
// 맞는 출력법
byte C = (byte)(A+B);
System.out.println(C);
int c = 1_000_000;
int f = 1_000_000;
System.out.println(c*f); // 결과값 : -727379968
System.out.println(c*(long)f ); // 결과값 : 1000000000000
// int + long = long
// c*f = 1,000,000,000,000 이지만 int 범위 값에서 오버플로우되므로 정확한 값을 얻고 싶으면 c, f중 하나를 long으로 형변환
- Math.round() : 소수점 첫번째 자리에서 반올림하는 메서드
// 4번째에서 반올림하기
double pi = 3.141592;
double shortPi = Math.round(pi * 1000) / 1000.0; // 1000으로 나누면 int/int로 되어 3으로 출력 !
System.out.println(shortPi); // 결과 : 3.142
// pi로 3.141 만들기
double answer = ((int)(pi*1000))/ 1000.0; // 형변환을 시켜 double값을 int값으로 강제로 바꿔 소수점 아래 자리 버린다
System.out.println(answer);
- 문자열 비교
- 두 문자열 비교시, 비교연산자 '==' 대신 equlas() 메서드 사용
('==' 비교 연산자는 두 문자열이 완전히 같은 것인지 비교할뿐이다)
String str1 = "abc";
String str2 = new String("abc");
// str2도 abc라는 내용을 같지만 "=="로 비교하면 거짓 !
// equalIgnoreCase 는 대소문자 구문 X
System.out.printf("\"abc\"==\"abc\" ? %b%n", "abc"=="abc");
System.out.printf(" str1==\"abc\" ? %b%n", str1=="abc");
System.out.printf(" str2==\"abc\" ? %b%n", str2=="abc");
System.out.printf("str1.equals(\"abc\") ? %b%n", str1.equals("abc"));
System.out.printf("str2.equals(\"abc\") ? %b%n", str2.equals("abc"));
System.out.printf("str2.equals(\"ABC\") ? %b%n", str2.equals("ABC"));
System.out.printf("str2.equalsIgnoreCase(\"ABC\") ? %b%n", str2.equalsIgnoreCase("ABC"));
/* 결과 : "abc"=="abc" ? true
str1=="abc" ? true
str2=="abc" ? false
str1.equals("abc") ? true
str2.equals("abc") ? true
str2.equals("ABC") ? false
str2.equalsIgnoreCase("ABC") ? true */
- str2와 "abc"의 내용이 같은데도 '=='로 비교하면 false인 이유 ? 내용은 같으나 다른 객체기에 거짓이다.
- equals()는 객체가 달라도 내용이 같으면 true 반환
- 논리 연산자
- || (OR결합) : 피연산자 중 어느 한 쪽이 true면 결과 true로 반환
- && (AND결합) : 피연산자 양쪽 모두 true여야 결과 true로 반환
Scanner scanner = new Scanner(System.in);
char ch = ' ';
System.out.println("문자를 하나 입력하세요.>");
String input = scanner.nextLine();
ch = input.charAt(0);
if('0' <=ch && ch <= '9') {
System.out.println("입력하신 문자는 숫자입니다.");
}
if(('a' <= ch && ch <= 'b') || ('A' <= ch && ch <= 'Z')) {
System.out.println("입력하신 문자는 영문자입니다.");
}
- 논리 부정 연산자 ( ! ) : 피연산자가 true면 -> false, false면 -> true 반환
public class Chapter3_operator {
public static void main(String[] args) {
int num = 456;
if(num == 456) {
System.out.printf("%d", ((int)(num/100))*100);
// 백의 자리 이하를 버리는 코드
}
// 결과 : 400
}
}
- 조건 연산자 : 조건식, 식1, 식2 모두 세개의 피연산자를 필요로 하는 삼항 연산자
- 조건식 ? (조건식 true면) 식1 : (조건식 false면) 식2
- ex) result = ( x > y) ? x : y ; (x가 더 크면 result에는 x의 값이 아니면 y의 값이 대입된다)
'Java' 카테고리의 다른 글
TIL_210323_상속, 오버라이딩 (0) | 2021.03.23 |
---|---|
Bubble Sort : 거품 정렬 (0) | 2021.03.22 |
자바의정석_변수(Variable) (0) | 2021.03.22 |
TIL_210319_메서드, 배열, File클래스, FileWriter 클래스, Bufferded.. 클래스 (0) | 2021.03.19 |
TIL_210318_클래스 생성, static 변수 (0) | 2021.03.18 |