Notice
Recent Posts
Recent Comments
Link
관리 메뉴

왕초보 코딩 개발 일지 블로그

[23.05.30] java 기초 실습 본문

Java/예제

[23.05.30] java 기초 실습

아캔두우잇 2023. 5. 30. 12:02
반응형
package j202305301;

// Hello라는 클래스 생성
public class Hello {
	public static int sum(int n, int m) {
		return n + m;
	}
	
	// main() 메소드에서 실행 시작
	public static void main(String[] args) {
		// main 이라는 함수는 클래스 하나에 딱 한번만 나온다. 
		// main 이라는 함수가 sum이라는 함수를 호출해서 사용
		int i = 20;
		int s;
		char a; // char은 문자 하나만 넣을 수 있음
		String st; // String 은 문자열을 넣을 수 있다.
		
		s = sum(i,10); // sum() 메소드 호출 s=20+10
		a = '?';
		st = "스마트인재개발원 유지원"; // 문자열은 " " 안에 넣기
				
		System.out.println("결과값 확인하기"); // sysout Ctrl + sapce
		System.out.println("----------------"); 
		System.out.print(a); // 문자 '?' 화면 출력
		// println 에서 ln은 line break 개행을 해주는 기능
		System.out.println("Hello"); // "Hello" 문자열 화면 출력
		System.out.println(s); // 정수 s 값 출력
		System.out.println(st); // 문자열 " ~~ " 화면 출력

	}

}

 

 

출력된 값만 보이고, 메모리는 싹 비워진다. 

 

함수를 만들고 나면 함수 안에서 반드시 return을 넘기고 메모리를 삭제해주는 것이 중요. 

함수를 만들 때 앞쪽에 타입을 지정해주고 타입에 맞는 값을 리턴해주는 것이 중요하다. 

새롭게 패키지 만들고 싶을 땐 src 폴더에서 우클릭하고 create class 만들기

src 폴더에 kr 폴더가 생기고 com 폴더에 smhrd 폴더가 생긴다. 하위폴더를 . 으로 생성하는 것이다. 

같은 패키지 내에서 만들고 싶으면 해당 패키지에서 우클릭 후 create class 하고 클래스명 지정.

 

 

식별자란?

 클래스, 변수, 상수, 메소드 등에 붙이는 이름
 식별자의 원칙
    - ‘@’, ‘#’, ‘!’와 같은 특수 문자, 공백 또는 탭은 식별자로 사용할 수 없으나
    - ‘_’, ‘$’는 사용 가능
 유니코드 문자 사용 가능한글 사용 가능
 자바 언어의 키워드는 식별자로 사용불가
 식별자의 첫 번째 문자로, 숫자는 사용불가
 ‘_’ 또는 ‘$’를 식별자 첫 번째 문자로 사용할 수 있으나 일반적으로 잘 사
용하지 않는다. (대기업은 '_' 로 시작하는 경우가 많음)
 불린 리터럴 (true, false)과 널 리터럴(null)은 식별자로 사용불가
 길이 제한 없음

 대소문자 구별 :

    - int barChart; 와 int barchart;는 서로 다른 식별자 선언

 

잘 쓴 예

int name;
char student_ID; // '_' 사용 가능
void $func() { } // '$' 사용 가능
class Monster3 { } // 숫자 사용 가능
int whatsyournamemynameiskitae; // 길이 제한 없음
int barChart; int barchart; // 대소문자 구분. barChart와 barchart는 다름
int 가격; // 한글 이름 사용 가능

 

잘못된 예

int 3Chapter; // 식별자의 첫문자로 숫자 사용 불가
class if { } // 자바의 예약어 if 사용 불가
char false; // false 사용 불가
void null() { } // null 사용 불가
class %calc { } // '%'는 특수문자

 

 

자바의 데이터 타입

 

 자바의 데이터 타입

 기본 타입 : 8 개

(메모리 사이즈)

* 1바이트는 8비트 

-2의 n-1승 ~ 2의 n-1승 -1 

1바이트는 8비트니까 : -2의 7승 ~ 2의 7승 -1 

-> -128~ +127까지 넣을 수 있다. 포함할 수 있는 수의 범위가 있다. 라는 것을 기억하자. 

 

그런데 만약 130 의 값을 넣고 싶다???

-> 원래 집어넣을 수 있는 값보다 큰 값을 집어 넣으면 오버플로우가 일어나고 양수 값이 아닌 음수 값을 집어 넣게된다. 

그럼 3이 초과되었으니 뒤로 3칸 이동해서 -126이 된다. 

 

만약 - 131을 집어 넣고 싶으면 언더플로우가 일어나고 음수값이 아닌 양수 값을 집어 넣게 된다. 

-> 125가 들어간다.  

 

   boolean (1바이트) 

   char (2바이트)

   byte (1바이트)

   short (2바이트)

   int (4바이트)

   long (8바이트)

   float (4바이트)

   double (8바이트)

 

 레퍼런스 타입 : 1 개이며 용도는 다음 3 가지

   클래스(class)에 대한 레퍼런스

   인터페이스(interface)에 대한 레퍼런스

   배열(array)에 대한 레퍼런스

 

 

기본 타입의 크기는 CPU나 운영체제에 따라 변하지 않는다. 

문자열 연산 숫자 하면 문자열을 잇게 된다. 문자열로 출력됨. 

숫자는 문자열로 변환된다. 

 

정수 리터럴

15 -> 10진수 리터럴 15
015 -> 0으로 시작하면 8진수. 십진수로
13
0x15 -> 0x로 시작하면 16진수. 십진수로
21
0b0101 -> 0b로 시작하면 2진수. 십진수로 5

 

 

논리 리터럴과 boolean 타입

* 자바에서는 숫자를 참, 거짓으로 사용 불가하다.

 논리 값 표시
 true 또는 false 뿐
 boolean 타입 변수에 치환하거나 조건문에 이용
boolean a = true;
boolean b = 10 > 0; // 10>0가 참이므로 b 값은 true
boolean c = 1; // 타입 불일치 오류. C/C++와 달리 자바에서 1,0을 참, 거짓으로 사용 불가
while(true) { // 무한 루프
...
} // 자바에서는 while(1)로 하면 안된다. 

 

 

원의 면적 구하기 실습

package kr.co.smhrd;

public class CircleArea {

	public static void main(String[] args) {
		final double PI = 3.14; // 원주율을 상수로 선언
		double radius = 10.2; // 원의 반지름
		double circleArea = radius*radius*PI; // 원의 면적 계산
		
		// 원의 면적을 화면에 출력한다.
		System.out.print("반지름" + radius + ", ");
		System.out.println("원의 면적 = "+ circleArea);
		
		radius = 20.5;
		// PI = 3.14159265; PI는 상수이므로 변경이 안된다. 
		// 상수는 변수와 달리 실행 중에 값이 바뀔 수 없다. 유지되어야 하는 값
		circleArea = radius*radius*PI;
		System.out.print("반지름" + radius + ", ");
		System.out.println("원의 면적 = "+ circleArea);

	}

}

상수는 변수처럼 값이 실행 중에 바뀔 수 없다. 

상수를 만드는 방법은 변수 선언 시 final 키워드를 사용하면 된다. 

강제 타입 변환
    개발자의 의도적 타입 변환
    () 안에 개발자가 명시적으로 타입 변환 지정

b+i 더큰 타입으로 맞춰진다. int 타입으로 맞춰짐. 

int 10 는 정수 타입이라 2로 잘림

실수는 별다른 언급 없으면 더블 타입으로 자동 처리 된다. 더블이 더 큰 타입이라 2.5 라는 더블타입이 나온다. 

char로 변환된 결과 0x0041로서 문자 'A'

b+i는 227, 16진수 0xe3 즉 -29

 

 

 

Scanner 를 이용한 키 입력 

Scanner는 응용프로그램이 키 입력을 쉽게 받을 수 있도록 자바 패키지에서 제공하는 클래스이다. 

 

우선 Scanner 객체를 생성해야한다. 

Scanner scanner = new Scanner(System.in);

이 생성문에 의해 scanner 객체는 System.in 객체를 이용하여 키보드로부터 일련의 바이트 정보를 입력받고, 이 바이드틀을 정수, 실수, 문자열 등 자바 응용프로그램이 원하는 타입으로 변환하여 리턴할 수 있다. 

 

 

 

Scanner 클래스로 이름, 도시, 나이, 체중, 독신 여부를 입력받고 다시 출력하는 프로그램을 작성해보기!

package kr.co.smhrd;

import java.util.Scanner;

public class scannerEx {

	public static void main(String[] args) {
		System.out.println("이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여 입력하세요");
		Scanner scanner = new Scanner(System.in);
		// ctrl + shift + O 누르면 자동으로 import 된다.
		String name = scanner.next();
		System.out.println("당신의 이름은 " + name + "입니다.");
		String city = scanner.next();
		System.out.println("당신이 사는 도시는 " + city + "입니다.");
		int age = scanner.nextInt();
		System.out.println("당신의 나이는 " + age + "살입니다.");
		double weight = scanner.nextDouble(); // 실수 토큰 읽기
		System.out.println("당신의 체중은 " + weight + "kg입니다.");
		boolean single = scanner.nextBoolean();
		System.out.println("당신은 독신 여부는 " + single + "입니다.");
		System.out.println("---------------------------------------");
		System.out.println("이름 : "); name = scanner.next();
		System.out.println("도시 : "); city = scanner.next();
		System.out.println("나이 : "); age = scanner.nextInt();
		System.out.println("체중 : "); weight = scanner.nextDouble();
		System.out.println("독신여부 : "); single = scanner.nextBoolean();
		System.out.println("당신의 이름은 " + name + ", 당신이 사는 곳은 " + city +" 입니다."); 
		System.out.println("당신의 나이는 " + age + "살, 당신이 몸무게는 " + weight +"kg 입니다.");
		System.out.println("당신의 독신여부는 " + single + " 입니다.");
		
		
		scanner.close();
	}

}

이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여 입력하세요

단소 서울 4 4.2 true

당신의 이름은 단소입니다.

당신이 사는 도시는 서울입니다.

당신의 나이는 4살입니다.

당신의 체중은 4.2kg입니다.

당신은 독신 여부는 true입니다.

---------------------------------------

이름 :

단소

도시 :

서울

나이 :

4

체중 :

4.2

독신여부 :

true

당신의 이름은 단소, 당신이 사는 곳은 서울 입니다.

당신의 나이는 4살, 당신이 몸무게는 4.2kg 입니다.

당신의 독신여부는 true 입니다.

 

 

반응형