Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 스프링 db1 - 스프링과 문제 해결
- 스프링 mvc2 - 로그인 처리
- 자바의 정석 기초편 ch3
- jpa 활용2 - api 개발 고급
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch2
- 2024 정보처리기사 수제비 실기
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch1
- 스프링 고급 - 스프링 aop
- 타임리프 - 기본기능
- 게시글 목록 api
- 스프링 mvc1 - 스프링 mvc
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch9
- 자바의 정석 기초편 ch8
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch6
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch7
- @Aspect
- 자바의 정석 기초편 ch12
- 자바의 정석 기초편 ch5
- 스프링 mvc2 - 타임리프
- jpa - 객체지향 쿼리 언어
- 스프링 입문(무료)
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch14
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch3 - 9 ~ 14[사칙연산자, 산술변환 반올림 Math.round(), 나머지 연산자, 비교연산자, 문자열의 비교] 본문
유튜브 공부/JAVA의 정석 기초편(유튜브)
자바의 정석 기초편 ch3 - 9 ~ 14[사칙연산자, 산술변환 반올림 Math.round(), 나머지 연산자, 비교연산자, 문자열의 비교]
소소한나구리 2023. 11. 5. 15:471) 사칙연산자
- 같은 타입의 피연산자만 계산 가능
- int / int -> 결과가 int타입으로 소수점 이하는 버려짐
- int / float -> float(산술변환) / float -> float
2) 산술변환
- 연산 전에 피연산자의 타입을 일치 시키는 것
- 두 연산자의 타입을 보다 큰 타입으로 일치 시킴
- int보다 작은 타입(byte, char, short) 이면 int로 변환됨 (int보다 작은 타입은 범위가 너무 작다보니 int타입으로 변환됨)
예제
int a = 1_000_000_000;
int b = 2_000_000_000;
long c = a * b; // 에러 발생 (a와 b가 int타입)
long c = (long)a * b; // OK (a 혹은 b타입 중 한가지를 형변환 해줘야 함)
3) Math.round()
- 실수를 소수점 첫 째자리에서 반올림한 정수를 반환
- long result = Math.round(4.52);
- 4.52에서 소수점 첫째 자리인 5가 반올림되어 result에 5가 저장됨.
(1) 반올림 예제
// 소수점 4째자리를 반올림하기
double pi = 3.141592;
double shortPi = Math.round(pi * 1000) / 1000.0;
// Math.round(3.141592 * 1000) / 1000.0
// Math.round(3141.592) / 1000.0
// 3142 / 1000.0, int 1000으로 나누게 되면 정수가 되버려서 3이 나오게 됨
결과
3.142
(2) 버림 예제
- pi * 1000에 대한 연산결과를 int 타입으로 형변환하고 다시 실수로 나눠서 버림 처리
double pi = 3.141592;
double shortPi = (int)(pi * 1000)/1000.0;
결과
3.141
4) % (나머지 연산자)
- 오른쪽 피연산자로 나누고 남은 나머지를 반환
- 나누는 피연산자는 0이 아닌 정수만 허용 (부호는 무시_에러는 안남)
int x = 10;
int y = 8;
System.out.printf("%d을 %d로 나누면, %n", x, y);
System.out.printf("몫은 %d이고, 나머지는 %d입니다.%n", x / y, x % y);
결과
10을 8로 나누면,
몫은 1이고, 나머지는 2입니다.
5) 비교연산자
- 두 피연산자를 비교해서 true(참) 또는 false(거짓)을 반환
- > : 좌변 값이 크면, true 아니면 false
- < : 좌변 값이 작으면, true 아니면 false
- >= : 좌변 값이 크거나 같으면, true 아니면 false
- <= : 좌변 값이 작거나 같으면, true 아니면 false
- == : 두 값이 같으면, true 아니면 false
- != : 두 값이 다르면, true 아니면 false
- 문자를 비교할 경우 int로 바뀌어서 비교(아스키 코드의 값을 비교)
- 'A' > 'B' // 65 > 66
- 문자열 비교에는 == 대신에 equals()를 사용해야함
- equals는 Object 클래스의 equals를 String 클래스에서 오버라이딩해서 재정의하였기 때문에 값을 비교하는 것이고 == 비교는 원래 참조값(주소값)을 비교하기 때문
- 문자열을 생성하는 방법에 따라 결과값에 오류가 발생할 수 있는데 문자열 저장시 new 가아닌 "abc"처럼 직접 같은 값을 저장하면 똑같은 참조를 변수에 저장한 것이기 때문에 true가 나옴(별도의 문자열 풀에서 관리됨)
- 자세한 내용은 참조, String 등을 배워야 이해가 됨
String str1 = "abc";
String str2 = "abc";
System.out.println(str1==str2); // true
System.out.println(str1.equals(str2)); // true
String str3 = new String("abc");
String str4 = new String("abc");
System.out.println(str3==str4); // false(주소값이 다름, 객체지향 개념)
System.out.println(str3.equals(str4)); // true
결과
true
true
false
true
** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch4 - 1 ~ 8[조건문과 반복문, If문,if-else문,if-esle if문, 중첩if문] (0) | 2023.11.06 |
---|---|
자바의 정석 기초편 ch3 - 15 ~ 19[논리연산자,논리부정연산자,조건연산자,대입연산자] (0) | 2023.11.05 |
자바의 정석 기초편 ch3 - 5 ~ 8[증감연산자, 부호연산자, 형변환 연산자, 자동 형변환] (0) | 2023.11.05 |
자바의 정석 기초편 ch2 - 17, ch3 - 1 ~ 4[타입간의 변환방법, 연산자와 피연산자, 연산자의 우선순위와 결합수칙] (0) | 2023.11.05 |
자바의 정석 기초편 ch2 - 14 ~ 16 [scanner(화면에서입력받기),정수형의오버플로우] (0) | 2023.11.02 |