본문 바로가기
ICIA 수업일지

2021.06.10 수업일지

by 주성씨 2021. 6. 20.

예제)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)

- char는 byte와 short보다 같거나 크지만 표현범위가 달라서 자동 형변환 되지 않는다.

 

예제) 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