Languages/JAVA
JAVA 실습(1)
인정이애옹
2024. 4. 12. 20:08
Ex01
package exam01;
import org.w3c.dom.ls.LSOutput;
public class Ex01 {
public static void main(String[] args) {
int num1; // 변수 선언
num1 = 10; // 초기화 : 최초로 값을 대입하는 것 -> 초기화
int num2 = 10; // 선언과 동시에 초기화
num1 = 15;
System.out.println(num1); // 15
System.out.println(num2); // 10
int a = 100; // 변수명을 명확하게 정해야한다. 유의미한 단어 형태로 적기
int numberOfStudent = 10; // 카멜 표기법 : 단어 사이마다 첫 글자룰 대문자로 적기 / 첫 단어는 소문자로!
int 학생수 = 20; // 한국어 대신 영어로 적기
}
}
Ex02
package exam01;
public class Ex02 {
public static void main(String[] args) {
int num1 = 100000;
// byte num2 = num1; 담을 값의 크기가 byte보다 커서 오류 발생
double num3 = 1000000000.1234;
// float num4 = num3; 담을 값의 크기가 float 보다 커서 오류 발생
}
}
Ex03
package exam01;
public class Ex03 {
public static void main(String[] args) {
char ch1 = 'A'; // 컴퓨터가 A를 인식 못한다. 컴퓨터가 A를 이진수로 바꿔서 숫자로 인식한다. 아스키코드!
System.out.println(ch1); // A
System.out.println(ch1 + 1); //66
System.out.println(ch1 > 'B'); //false
char ch2 = '가';
System.out.println(ch2); // 가
System.out.println(ch2+ 1); // 44033
System.out.println('나' > '가'); //true
}
}
Ex04
package exam01;
public class Ex04 {
public static void main(String[] args) {
char ch1 = 65;
System.out.println(ch1);
//char ch2 = -65;
}
}
Ex05
package exam01;
public class Ex05 {
public static void main(String[] args) {
int num1 = 10;
num1 = 20;
final int num2 = 30; // 상수 / final이 있으면 변경 불가 변수 옆에 있으면 변수 변경 불가
//num2 = 40; Cannot assign a value to final variable 'num2'
final int num3;
num3 = 30; // 최초 한번만 상수는 대입 가능
//num3 = 40;
final int Num4;
//System.out.println(Num4);
}
}
Ex06
package exam01;
public class Ex06 {
public static void main(String[] args) {
int num1 = 10; // 10 - 재료가 되는 수 : 리터럴 상수
int num2 = 10;
char ch1 = 'A'; // 'A' - 재료가 되는 수 : 리터럴 상수
}
}
Ex07
package exam01;
public class Ex07 {
public static void main(String[] args) {
//int num1 = 10000000000000; int의 크기보다 넘어서는 숫자라서 오류난다.
//long num1 = 10000000000000; long의 크기가 10000000000000가 들어가는 크기지만 오류난다.
// int(4byte) -> 처음에 int를 던졌기 때문에 오류가 난다.
/*
자바는 일하기 싫어한다. 개발자가 많이 쓰는 숫자인 int를 많이 쓴다. int -> 가장 효율적인 자료형이다.
자바는 효율성을 추구하기 때문에 숫자 들어오면 int부터 쓴다 안 맞으면 그때서야 바꿔준다.
그래서 처음부터 long 범위로 인식하고 int 던지지 않게 하는 것을 l이나 L을 붙여주면 된다.!!
*/
long num1 = 10000000000000L; // L or l : 처음부터 long으로 인식하게 해준다.
byte num2 = 100; // 자바에서 정수 보이면 일단 int를 던지고 안 맞으면 byte로 바꿔준다.
long num3 = 10_000_000_000_000L; // long 값일 때는 숫자가 크기 때문에 _로 숫자 끊어도 된다.
// 실수 일때는 가장 먼저 double(8byte)로 인식한다!
// float num4 = 100.123; 오류난다 / 자바에서 실수 보이면 일단 double(8byte)로 들어간다.
float num4 = 100.123F; // F or f : 처음부터 float(4byte)으로 인식한다.
}
}
Ex08
package exam01;
public class Ex08 {
public static void main(String[] args) {
byte num1 = 100; // int -> byte
int num2 = num1; // byte -> int 작은 자료형에서 큰 자료형으로 갈 때는 공간이 충분해서 가능하다. 자료형이 바뀐다 : 형변환
long num3 = num2; // int -> long 자료형이 자동으로 바뀐다. : 자동 형변환(묵시적 형변환)
}
}
Ex09
package exam01;
public class Ex09 {
public static void main(String[] args) {
long num1 = 1000000000L;
double num2 = num1; // 정수 -> 실수 : 자동 형변환(묵시적 형변환) - 8byte
float num3 = num1; // 실수는 모든 정수를 포함 가능하다. 실수 > 정수 : 실수가 정수보다 크다
/*
byte -> short -> int -> long -> float -> double : 자동 형변환
char ->
*/
double num4 = 0.0;
for (int i = 0; i < 1000; i++) {
num4 += 0.1;
}
System.out.println(num4); // 결과 : 99.9999999999986 -> 실수는 오차가 날 수 있다.
}
}
Ex10
package exam01;
public class Ex10 {
public static void main(String[] args) {
int num1 = 10000000;
//byte num2 = num1; 큰 컵에 있는 물을 작은 컵에 있는 물에 담을 수 있지만 다 못 담는다.
// -> 다 못 담아서 데이터가 변질된다.(데이터가 유실된다.) 함부로 안 바꿔준다.
// 자바가 물어본다. 바꾸겠다고 알려주면 자료가 부족하더라도 담아준다. 그러나 변질된 데이터(유실된 데이터)로 담아준다.
//
byte num2 =(byte)num1; // 명시적 형변환 : 그럼에도 불구하고 유실된 데이터가 되더라도 바꾸겠다고 자바에게 알려주는 것
System.out.println(num2); // 결과 : -128 / 유실된 데이터로 저장되었다.
int num3 = 100;
byte num4 = (byte)num3;
System.out.println(num4); // 결과 : 100
}
}
Ex11
package exam01;
public class Ex11 {
public static void main(String[] args) {
double num1 = 10.123;
//long num2 = num1; // JAVA : 소수점이 날아가도 괜찮겠냐 ? ME : 응, 해줘(명시적 형변환)
long num2 = (long)num1; // 결과 : 10
System.out.println(num2);
}
}
Ex12
package exam01;
public class Ex12 {
public static void main(String[] args) {
int num1 = 13;
double num2 = 3.6;
// 곱셈 결과를 정수로 표현 -> 4/17일 시험!!
// int num3 = num1 * (int)num2; //3.6 -> 3 13 *3=39 나온다.
int num3 = (int)(num1 * num2);
System.out.println(num3);
}
}
Ex13
package exam01;
public class Ex13 {
public static void main(String[] args) {
int num1 = 10;
double num2 = 2.5;
//num1 * num2; 연산은 무조건 같은 자료형끼리만 가능 / 연산 할 때 int num1 -> double로 바뀐다.
// num1이 double로 바껴서 double, double끼리 연산이 되는 것이다.
double num3 = num1 * num2; //
}
}
주석은 자바스크립트와 동일하다!
psvm + enter키 ->
public static void main(String[] args) {
}
sout + enter키 ->
System.out.println();
자료형
기본 자료형
정수형
byte (1byte)
short (2byte)
int (4byte)
long (8byte)
실수형
float (4byte)
double (8byte)
논리형
boolean (1byte) -> true, false
: 판별식 - 조건문, 반복문에서 자주 사용
문자형
char (2byte ~ 3byte)
'문자'
char ch = 'A'; -> 작은 따옴표로 감싸기
아스키코드 : 문자표
유니코드(2~3 byte): 문자표
양의 정수
참조 자료형 : 자원의 주소만 가지고 있는 변수를 선언하는 자료형
실수 : 소수점이 있는 수
정수.소수점
0~1미만
실수 범위 > 정수 범위 // 실수 범위가 정수 범위보다 크다. 숫자 범위가 훨씬 넓다.
작은 자료형 -> 큰 자료형
정수 -> 실수 // 실수가 정수보다 크기 때문에 숫자 표현 범위가 높다. 더 정밀한 숫자이다.
실수는 항상 정수를 포함 할 수 있다.
byte -> short -> int -> long -> float -> double
char->
연산 중에서도 자동 형변환이 발생한다.
작은 자료형 -> 큰 자료형 : 작은 자료형이 큰 자료형으로 바뀐다.
정수 -> 실수 : 정수가 실수로 바뀐다.