예제)1
package ex1;
public class Ex01 {
public static void main(String[] args) {
- package : 자바에서 패키지란 클래스들의 모음이다. 패키지를 통해 편리하게 프로젝트를 관리할 수 있고 내 코드들을 다른 라이브러리로부터, 또 다른 라이브러리들끼리 서로 구분 가능하다. 패키지를 사용하는 가장 큰 이유는 클래스 명의 고유성을 보장하기 위해서이다. 만약 다른 두 프로그래머가 서로 다른 목적을 가진 클래스를 생성했는데 이름이 같다고 가정할 때, 서로 다른 패키지를 사용함으로써 충돌을 피할 수 있다.
- public class "클래스 이름" { } : 자바에서 클래스란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용된다. 자바에서는 이러한 설계도인 클래스를 가지고, 여러 객체를 생성하여 사용하게 된다. 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메서드(method)로 구성된다. 클래스의 이름은 첫 글자 대문자로 시작한다.
- public static void main(String [] args) { }
Java의 main
- Java는 main에서 시작해서 main에서 끝난다.
- main은 여러 클래스와 연결될 수 있는 중심부의 역할이다.
public
- main을 실행할 때 다른 클래스의 메서드 등을 호출해야 하는데, 마상 main 자체가 다른 곳에서 접근을 허용하지 않는다면 문제가 생길 수밖에 없어 main 접근 제한자를 public으로 선언한 것이다.
Static
- static은 프로그램이 시작하면 따로 인스턴스화 하지 않아도 merhod 영역 메모리에 호출되어진다. 이렇게 호출된 것들은 프로그램이 종료되기까지 유지된다.
- 즉, 프로그램의 시작과 끝을 함께하는 main 메서드는 프로그램이 종료되는 시점까지 유지해야 하기 때문에 Static으로 선언된 것이다.
public
- main을 실행할 때 다른 클래스의 메서드 등을 호출해야 하는데, 마상 main 자체가 다른 곳에서 접근을 허용하지 않는다면 문제가 생길 수밖에 없어 main 접근 제한자를 public으로 선언한 것이다.
void
- main method는 프로그램이 종료되는 시점까지 유지가 된다. 만약, 반환 타입(return)이 선언되어 있다면 프로그램이 종료될 때 "어떤 값을 반환하겠다"라는 것인데, 이는 우리가 추구하는 목적과는 상관없는 로직이다.
- 우리는 프로그램을 사용할 때 프로그램이 구동되는 그 시점에서만 메시지를 주고받으므로, 프로그램이 종료되는 시점에서 반환되는 값은 전혀 의미가 없는 값이다.
String [] args
- 외부에서 값을 받아오기 위해 사용한 매개변수이다. 외부에서 받아오는 값은 String 배열("[ ]")에 넣어 프로그램을 실행한다.
예제) 2
System.out.println(25);
System.out.println("2"+5);
System.out.println(20+5);
System.out.println(2+"5");
System.out.println(25+"");
System.out.println(""+2+5);
결과)
- System.out.println(출력할 데이터); : 자바 표준 입출력 클래스. 사용자가 프로그램과 대화하기 위해서는 사용자와 프로그램 사이의 입출력을 담당하는 수단이 필요하다. 자바에서는 모든 것이 객체로 표현되므로, 입출력을 담당하는 수단 또한 모두 객체이다.
예제) 3
System.out.println("1"+8+10); // 처음에 문자열이 하나라도 들어가면 사칙연산이 되는게 아니라 연결된다.
System.out.println(""+(8+10)); // ()치면 사칙연산이 된다.
System.out.println(8+10+"1"); // 하지만 나중에 연결된것은 사칙연산 후 연결된다.
System.out.println(8.15); // 실수
System.out.println(10+3.8); // 실수
System.out.println("10+20="+30); //문자열+정수 -> "10+20=30" println안의 '+'는 연결 역할이다.
System.out.println("10+2.598"+"의 결과는 12.5입니다.");
결과)
1810
18
181
8.15
13.8
10+20=30
10+2.598의 결과는 12.5입니다.
- 변수 : 계산이 길어지거나 똑같은 숫자 값이 반복적으로 사용할 때 효율적으로 값을 저장하여 사용할 수 있는 메모리 공간을 변수라고 한다.
예제) 4
//자료형(type) 변수_변하는 수 = 값(상수_변하지 않는 수)
int kor = 100; // int = 정수, 한블럭에 한변수에! 4Byte=32bit
//kor=90.5; // 실수의 크기는 8Byte
double kor2=90.5; // double = 실수
kor=10+20; //리턴값 30, 한번 소모된 상수는 다음에 나오지 않는다.
System.out.println("당신의 kor점수는"+kor);
System.out.println("당신의 kor점수는"+kor2);
결과)
당신의 kor점수는30
당신의 kor점수는90.5
예제) 5
int number=2100000000;
System.out.println("number="+number);
결과)
number=2100000000
※ int : integer;정수의 약자이고 4 bytes의 크기를 가진 자료형으로 가장 보편적으로 쓰이는 정수형이다.
예제) 6
long number=2200000000L; //정수의 기본타입은 int(4B), 21억 이상은 상수이기 때문에 뒤에 L을 붙인다.
System.out.println("number"+number);
System.out.println("Long Max="+Long.MAX_VALUE);
System.out.println("Long min="+Long.MIN_VALUE);
결과)
number2200000000
Long Max=9223372036854775807
Long min=-9223372036854775808
※ long.MAX_VALUE : long 정수의 최댓값
※ long.MAX_VALUe : long 정수의 최솟값
예제) 7
double avg=90.5;
System.out.println("avg="+avg+"입니다.");
결과)
avg=90.5입니다.
※ double : 64bit를 가지고 실수를 표현
예제) 8
float num1, num2, result; //4B실수 변수
num1=1.000001F; //변수 4B에 상수 8B를 담을 수는 없기에 오류가 난다.
num2=2.000002F; //F를 붙이면 된다.
result=num1+num2;
System.out.println("result="+result+"입니다.");
결과)
result=3.0000029입니다.
※ float : 32bit를 가지고 실수를 표현한다. 소수점 뒤에 F를 붙여 이 수는 소수임을 알려야 한다.
예제) 9
double num1, num2, result;
num1=1.000001F;
num2=2.000002F;
result=num1+num2;
System.out.println("result="+result+"입니다.");
// 4B 아끼지 말고 double로 해야 실수까지 '비교적' 정확한 값을 계산할 수 있다.
// 그러므로 실수는 double로 한다.
결과)
result=3.000002861022949입니다.
※ 예제 8처럼 float으로 나타낼 수도 있지만 double로 표현하는 것이 더 정확하다.
} //main End
} //Class End
◎ 형 변환
package ex1;
public class Ex02 {
public static void main(String[] args) {
예제) 12
int num1=10;
int num2=20; //변수 초기화
int num3=num1+num2;
System.out.println("num3="+num3);
결과)
num3=30
- 자동 형 변환(Implict conversion)
예제) 12
int num1=100;
long num2=200;
long result=num1+num2; //자동형변환 int+long=long
System.out.println("long="+result);
결과)
long=300
예제) 13
System.out.println("result="+3/2); // 정수/정수=정수
System.out.println("result="+3.0/2.0); // 실수/실수=실수
System.out.println("result="+3/2.0); // 정수/실수=실수 -> 자동형 변환 int -> double
System.out.println("result="+3.0/2); // 실수/정수=실수 -> 자동형 변환 int -> double
- 강제 형 변환 : (type) cast연산자
예제) 14
int kor=70;
int eng=71;
int tot=kor+eng; //여기까지는 아래 2 -> 2.0으로 하면 소수점까지 가능
int cnt=2; //하지만 과목수를 추가한다면?
double avg=(double)tot/cnt;
//앞에 변환하고 싶은 (Type)을 기입한다. or double avg=tot/(double)cnt;
System.out.println("평균="+avg);
결과)
평균=70.5
예제) 15
double pi=3.1415;
int intPi=(int)pi;
System.out.println("intPi="+intPi);
결과)
intPi=3
} // main End
} // class End
예제) 16
package ex1;
public class Ex03 {
public static void main(String[] args) {
예제) 17
//접미문자 형변환
int a=1000000; //1백만
int b=2000000; //2백만
// 위자료형 변경금지
long c=(long)a*b;
//2조 -> 정수가 표기 가능한 수는 21억까지이기 때문에 a, b 둘중 하나를 형변환한다.
System.out.println("c="+c);
결과)
c=2000000000000
위와 같이 해도 되지만 아래와 같이도 가능하다.
long d=1000000*2000000L; //2조
System.out.println("d="+d); //2조
long d=(long)1000000*2000000; //2조
System.out.println("d="+d); //2조
예제) 18
int e=1000000*(1000000/1000000);
System.out.println("e="+e); //1000000
결과)
e=1000000
위와 같이 해도 되지만 아래와 같이도 가능하다.
int e=(int)(1000000L*1000000/1000000);
System.out.println("e="+e); //1000000
} //main method end
} //class end
'ICIA 수업일지' 카테고리의 다른 글
2021.06.25 수업일지 (0) | 2021.06.26 |
---|---|
2021.06.24 수업일지 (0) | 2021.06.26 |
2021.06.23 수업일지 (0) | 2021.06.26 |
2021.06.22 수업일지 (0) | 2021.06.26 |
2021.06.21 수업일지 (0) | 2021.06.26 |