1. 깃 연결하기
연동 이론
Github
Repo- Master (Code)
PC
Local | Repo
ㄴ> Code
<기본 언어>
- Commit: PC에서 수정한 걸 Local Repo에 영구히 보존시키는 것.
- Push : PC -> GitHub
- Pull : Github -> PC
2. 상수
- 변수가 정의되고 최초 한번 값이 할당되고 나면 다시는 재할당(수정.업데이트)할 수 없는 변수
할당하는 방법
- 변수의 정의와 할당과 동일하다.
- 어떤 변수의 타입 앞에 final만 붙이면 상수가 된다.
public static void main(String[] args) {
final int speedOfLight = 299_792_458;
System.out.println(speedOfLight);
speedOfLight = 10; 에러!
}
- 상수를 정의하고 값을 나중에 할당할 수도 있다.
- 할당하고 나면 변경 불가
public static void main(String[] args) {
final int speedOfLight;
speedOfLight = 299792458;
System.out.println(speedOfLight);
}
- 이미 정의된 상수들
- 원주율 : Math.PI
- 자연상수 : Math.E
- int 변수의 최대값 : Integer.MAX_VALUE
3. 형 변환
1. 4byte 크기의 int 변수 값을 8byte 크기의 long 변수에 할당하면?
public static void main(String[] args) {
int normalNumber = Integer.MAX_VALUE;
long bigNumber = normalNumber;
System.out.println(normalNumber);
System.out.println(bigNumber);
}
- 에러 없이 잘 동작함!
2. 묵시적 형변환
- int의 최대 범위 < long의 최대 범위
- byte -> short -> int -> long 은 모두 “묵시적 형변환"을 합니다.
-
반면, 크기가 큰 long 형의 값을 비교적 작은 int형으로 자연스러운 변환은 불가능합니다.
public static void main(String[] args) {
long bigNumber = Long.MAX_VALUE;
int normalNumber = bigNumber; 에러!
System.out.println(bigNumber);
System.out.println(normalNumber);
}
- long -> int 자연스러운 변환 불가능
- 위 코드에서 에러를 제거하려면 “명시적 형변환"을 해야만 합니다.
- “명시적 형변환" 이란 강제로 형을 변경하는 것을 말합니다.
-
범위를 벗어난 수를 넣었을 때,•할당 값이 이상해지는 경우가 종종 발생할 수 있습니다.•할당할 수 있는 범위를 초과하는 버그가 발생하기 때문입니다.
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE); //2147483647
int normalNumber = Integer.MAX_VALUE + 1;
System.out.println(normalNumber); //-2147483648
}
- Integer.MAX_VALUE :
- 2진 계산법
- 0+1=1
- 1+1=10
- 10+1=11
- 11+1=100
- 정수 오버플로우
- int 최대값:
-
01111111_11111111_11111111_11111111 에 1을 더하면
-
10000000_00000000_00000000_00000000 이 되어 10진수 -2,147,483,648 가 됩니다.
- 2진 계산법
public static void main(String[] args) {
long longNumber = 2147483649L; int 최대 값보다 2큽니다.
System.out.println(longNumber);
int normalNumber = (int) longNumber;
System.out.println(normalNumber); //-2147483647
}
주의점 : 항상 정수 오버플로우가 발생하지 않도록 주의를 기울어야 합니다.
- 정수<-> 부동소수점의 변환
// 실습 : 정수 -> 부동소수점(83p) long num = Long.MAX_VALUE; float fnum = num; double dnum = num; System.out.println(num); // 10 System.out.println(fnum); //10.0 System.out.println(dnum); // 10.0
// 실습 : 부동소수점 -> 정수(84) System.out.println(" FLoat Number => Decimal"); float fnum2 = 10.9f; int num2 = (int)fnum2; System.out.println(fnum2); System.out.println(num2); double dnum2 = 11.15; num2 = (int) dnum2; System.out.println(dnum2); System.out.println(num2);
- 부동소수점 소수점 처리
// 실습 : 부동소수점 소수점 처리(85) double dnum3 = 10.1; //소수점 올림. dnum3 = Math.ceil(dnum3); System.out.println(dnum3);//11.0 // 소수점 버림. dnum3 = 10.9; dnum3 = Math.floor(dnum3); System.out.println(dnum3);//10.0 //소수점 반올림. dnum3 = 15.18; dnum3 = Math.round(dnum3); System.out.println(dnum3); //15.0 dnum3 = 10.56; dnum3= Math.round(dnum3); System.out.println(dnum3);//11.0 System.out.println(" 소수점 이동 시키기."); // 실습 : 부동소수점 소수점 올림처리(86) // 29. double dnum4 = 29.37; double dnum5 = dnum4*10; System.out.println(dnum5);//293.7 dnum5 = Math.round(dnum5); System.out.println(dnum5);//294.0 double dnum6 = dnum5/10; System.out.println(dnum6);//29.4
- 문자열 -> 정수로 변환
// 실습 : 문자열 -> 정수 변환(88) String numberString = "10"; byte byteNumber = Byte.parseByte(numberString); System.out.println(byteNumber); numberString = "10000"; short shortNumber = Short.parseShort(numberString); System.out.println(shortNumber); numberString = "1000000"; int intNumber1 = Integer.parseInt(numberString); System.out.println(intNumber1); numberString = "1000000000"; long longNumber1 = Long.parseLong(numberString); System.out.println(longNumber1);
- 에러 발생
- 정수형이 아닌 문자열을 변환하려고 할 때
String numberString3 = "백만"; byte byteNumber2 = Byte.parseByte(numberString3); System.out.println(byteNumber2);
- 부동소수점 -> 정수형
String numberString4 = "10"; byte byteNumber4 = Byte.parseByte(numberString4); System.out.println(byteNumber4);
- 문자열 -> 불린으로 변환
String str = "true";
boolean bool = Boolean.parseBoolean(str);
System.out.println(bool); //true
str="TRUE";
bool = Boolean.parseBoolean(str);
System.out.println(bool); //true
str="tRue";
bool = Boolean.parseBoolean(str);
System.out.println(bool); //true
String str1 ="-111";//true가 아니면 무조건 false다.
boolean bool1 = Boolean.parseBoolean(str1);
System.out.println(bool1); //false
str1 = "";
bool1=Boolean.parseBoolean(str1);
System.out.println(bool1); //false
str1="anystring";
bool1 = Boolean.parseBoolean(str1);
System.out.println(bool1);// false
System.out.println(" 문자로 변경하기");
6. 숫자를 문자로 변경하기
// 1.
int age = 30;
String ageString = String.valueOf(age);
System.out.println(age + 1); //31
System.out.println(ageString +1); //301
// 2.
int count = 16;
String countString = count +"";
System.out.println(count + 1); //17
System.out.println(countString + 1); //"161"
ㄴ 이건 코드 복기니까 그냥 이해만 하고 넘어가면 된다.
4. 연산자
0. 개요
- 더 큰 게 정답!
int + long = long
int+ int = int
int + double = double
int + float = float
정수 / 정수 = 정수
정수 / 실수 = 실수
실수 / 실수 = 실수
char(1byte)
1. 연산자 우선순위
2. JAVA의 연산자 종류
3. 코드 예시
// 스스로에게 연산하기
public static void main(String[] args) {
int number1 = 10;
number1 = number1 + 2;
System.out.println(number1);
}
public static void main(String[] args) {
int number1 = 10;
number1 += 2;
System.out.println(number1);
}
위 2개가 똑같은 결과값이다.
나는 +=를 많이 이용하는 편~
- += -= *= /= %/ 다 적용 가능하다.
public static void main(String[] args) {
int num = 10;
num += 2; // num = num + 2;
num -= 2; // num = num - 2;
num *= 2; // num = num * 2;
num /= 2; // num = num / 2;
num %= 2; // num = num % 2;
}
- ++ --
// 스스로에게 1을 빼거나 더할때
public static void main(String[] args) {
int num = 10;
num += 1;
num -= 1;
}
public static void main(String[] args) {
int num = 10;
num++;
num--;
}
위 아래가 똑같다. 다만, ++과 --의 위치에 따라서 조금씩 달라진다
- 앞에 있으면 먼저 1을 더한다(수행) 뒤에 있으면 나중에 1을 더한다(요정도?)
public static void main(String[] args) {
int num1 = 10;
int num2 = 10;
// 10을 먼저 출력한 다음 1 더하기
System.out.println(num1++); // 10
// 1을 먼저 더한 다음 출력하기
System.out.println(++num2); // 11
}
ㄴ 물론 뺴기도 마찬가지~
4. 연습문제(과제)
1. 5분 50초는 총 몇초인가?
package first_java_program;
public class ArtithmaticProblem1 {
public static void main(String[] args) {
int minutes = 5;
int seconds = 50;
int time = 0;
/*
* 산술연산자를 이용해
* minutes와 seconds의 값을 초로 변환해
* time 변수에 할당하고 출력해보세요.
*/
time = 60 * minutes + seconds ;
System.out.println(minutes + "분" + seconds +"초는 " + time+"초 입니다.");
}
}
2. 145초는 몇분 몇초인가?
package first_java_program;
public class ArtithmaticProblem2 {
public static void main(String[] args) {
int processTime = 145;
int minutes = 0;
int seconds = 0;
/*
* 산술 연산자를 이용해
* processTime을 분(Minute), 초(Second)
* 룰 구한 다음 minutes, seconds 변수에 할당하고
* 출력해보세요.
*/
minutes = processTime / 60 ;
seconds = processTime % 60;
System.out.println(minutes + "분"+ seconds + "초");
}
}
3. 섭씨온도 화씨온도로 바꾸기
package first_java_program;
public class ArthithmaticProblem3 {
public static void main(String[] args) {
int celsius = 30;
int fahrenheit = 0;
/*
* 섭씨온도를 나타내는 celsius 변수와
* 화씨온도를 나타내는 fagrenheit 변수가 있습니다.
* celsius 변수에는 30이 할당되어 있습니다.
* 섭씨 30도를 화씨 온도로 변경하면
* 화씨 86도가 됩니다.
* 섭씨온도를 화씨온도로 변경해
* fahrenheit 변수에 할당하고 출력해보세요.
* 변경공식 :(섭씨 * 9/5) +32 = 화씨
*/
fahrenheit = (celsius * 9/5) + 32;
System.out.println(fahrenheit);
}
}
------------------------------------------------------------------------------------------
아직까지는 따라갈만하다...
꼭 나태해지지 말고 매일 리뷰를 남기자~!!
ㄴ 어제 써놓고 업로드를 안 했넴...;;
'KT DS' 카테고리의 다른 글
[KT DS] Package와 Import와 접근 제어자 (0) | 2025.02.06 |
---|---|
[KT DS] 클래스 (0) | 2025.02.06 |
[KT DS 25기] 메소드 (1) | 2025.02.04 |
JAVA - eclipse 세팅 방법 (0) | 2025.01.15 |
[KT DS 25기] 2일차 - Java 개요 (0) | 2025.01.15 |