본문 바로가기

Java

Java(1) - 개발 환경 설정(JDK 및 IDE 설치), 변수, 자료형, 형 변환

728x90
반응형

<목차>

1) Java 개발 환경 설정

   1-1) JDK 설치

   1-2) IDE(eclipse) 설치

2) Java 프로그램의 구조

   2-1) 클래스

   2-2) 생성자

   2-3) 메소드

   2-4) 변수

3) 데이터 타입(자료형)

   3-1) 데이터 타입 구분

   3-2) 데이터 타입 상세

4) 형 변환

   4-1) Promotion

   4-2) Casting

5) 기타 주요내용

   5-1) 문법적 주의 사항

   5-2) 주석

6) eclipse 실습 코드

 

 

 

1) Java 개발 환경 설정

1-1) JDK 설치

    1. 설치 파일 jdk-17.0.10_windows-x64_bin.msi를 실행하여 설치

    2. 기본값으로 설치하면 다음의 경로에 설치됨

        C:\Program Files\Java\jdk-17

    3. 작업 표시줄에서 “고급 시스템 설정” 검색

    4. “시스템 속성” 창의 “고급” 탭의 “환경변수” 버튼 클릭

 

    5. “시스템 변수”의 “새로 만들기” 버튼 클릭하고 다음을 입력

        - 변수 이름 : JAVA_HOME

        - 변수 값 : C:\Program Files\Java\jdk-17

 

    6. “시스템 변수”의 “Path” 선택하고 “편집” 버튼 클릭

    7. “새로 만들기” 버튼 누르고 “%JAVA_HOME%\bin” 입력

    8. 등록된 “%JAVA_HOME%\bin” 선택하고, “위로 이동” 버튼을 눌러 최상단으로 위치

 

    9. “확인” 버튼 클릭

    10. “cmd” 검색하여 명령 프롬프트 열기

    11. “java -version” 입력하여 설치된 버전 확인

 

 

1-2) IDE(eclipse) 설치

    1. eclipse 홈페이지에 접속하여 설치 파일 다운로드

 

 

    2. 다운로드 받은 압축파일 해제

 

    3. eclipse.exe 파일 실행

 

    4. eclipse를 사용해서 만든 프로젝트들을 관리할 폴더로서 "Workspace"를 지정한다고 생각하면 됨.

    본인이 원하는 "Workspace"를 지정한 뒤 "Launch" 버튼 클릭

 

    5. eclipse에 JDK 설정하기

- eclipse를 실행하고 처음으로 해줘야 하는 설정이 설치된 JDK를 연결해 주는 일인데 이를 위해 우선 메뉴 중에 Window를 선택한 뒤 Preferences를 선택함

 

- Preferences는 eclipse의 설정에 관련된 정보를 변경하는 곳이라고 생각하면 되며, 왼쪽에 filter에서 Java > Installed JREs를 선택함(보통은 아래와 같이 자동적으로 설정되어 있기에 만일 설정이 안 된 경우에는 참조용 pdf 참고할 것!!)

 

 

 

2) Java 프로그램의 구조

2-1) 클래스 : 자바 프로그램의 기본 단위

<접근 지정자> class <class 이름> {
<멤버변수 선언>
<생성자>
<메소드 선언>
}

 

2-2) 생성자 : 멤버 변수의 초기화 등에 사용되는 메소드의 일종

<접근 지정자><클래스 이름>(parameter) {
생성자 body
}

 

2-3) 메소드 : 클래스에서 실행되는 작업

<접근 지정자> <return type> <메소드 이름> (parameter) {
메소드 body
}

 

2-4) 변수 : 데이터를 저장하는 공간

<접근 지정자> <변수 type> <변수 이름> [= <default value>]

 

 

- 변수의 선언 : xxx.java 파일 안에서 어떤 값을 컴퓨터에게 인식시키고 저장하는 공간(메모리 할당)

ex) int num;   =>   int(Data Type), num(변수명, 식별자), ;(명령어 구분자)

 

* 자료형(Data Type)을 통한 변수의 선언은 처음 한 번만 가능함(변수는 딱 한 번만 선언할 수 있음)

 

- 변수의 초기화 : 변수의 이름으로 메모리를 할당함과 동시에 어떤 값을 넣는 것

ex) int num = 100;

      num = 200;

 

- 변수명(=식별자)

<변수 명명 규칙>

  • 변수의 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수 있으며, 특수문자($, _)만 사용 가능함
  • 변수 이름은 숫자로 시작할 수 없음
  • 자바에서 이미 사용 중인 예약어는 사용할 수 없음

 

- 상수와 리터럴

  • 상수 : 변하지 않는 값을 의미하며, ‘final(예약어)’를 사용하여 값이 바뀌지 않도록 함
  • 리터럴 : 프로그램에서 사용하는 모든 숫자, 문자, 논리값   =>   ex) 123, ‘A’, “ABCDE”, true, 3.14, ...

 

 

 

3) 데이터 타입(자료형)

3-1) 데이터 타입 구분

- 자바는 강형 언어이므로 데이터를 저장하는 타입의 구분이 엄격함

- Python과 다르게 변수를 사용하기 위해서는 변수의 타입을 선언 후 사용해야 함

- 타입은 크게 기본형(Primitive types)과 참조형(Reference)이 있음

 

3-2) 데이터 타입 상세

  • 수치형

- 정수형 : 소수점을 갖지 않는 수를 의미하며, 각 타입 별로 할당할 수 있는 메모리 용량과 저장할 수 있는 범위에 따라 다음 4가지 타입이 있음

 

- 실수형 : 소수점 이하의 자리를 표현하여 정밀한 값을 표현하는 타입

 

* “이클립스(eclipse)”의 경우, 정수형은 default 값을 int 형으로 인식하고 있고, 실수형은 default 값을 double 형으로 인식하고 있기 때문에 정수형에 해당하는 long 형은 뒤에 소문자 l 혹은 대문자 L을 붙이고, 실수형에 해당하는 float형은 뒤에 소문자 f 혹은 대문자 F를 붙여야 한다!!

 

 

  • 문자형

- 문자 하나를 저장하기 위한 2byte 자료형

- 문자는 Single Quotation 안에 문자 하나를 적어 표기함

- 자바는 세계의 모든 문자를 표현할 수 있는 유니코드를 채택하므로 ‘A’, ‘강’, ‘★’, ‘地’ 처럼 한글이나 한자 표현도 가능

- 유니코드는 0 ~ 65535 코드에 대응되는데 char 타입은 음수 값이 없음(주의: 정수형 short도 2byte 지만 short는 음수 표현도 가능한 타입이므로 서로 대입 불가)

- 문자형은 정해진 정수 형태의 코드 값으로 메모리 상에 표현됨

- 문자형은 1개의 문자만 저장하므로 ‘한국’과 같이 두 글자 이상을 적으면 에러가 발생함

* 유니코드(Unicode): 컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 문자 코드 규약

 

  • 문자열

- 문자열은 큰 따옴표 내에 표현되는 한 글자 이상의 문자의 연속

- 문자열은 Primitive 타입이 아니며, 참조 자료형임

- 기본 자료형 사용 방법과 동일함

 

  • 논리형

- 참(true)과 거짓(false) 두 가지 값을 표현하기 위한 타입(boolean)

- 논리형 리터럴은 Python과는 달리 숫자값으로는 표현할 수 없고, 오로지 true / false만 사용 가능

 

 

 

4) 형 변환

4-1) Promotion(자동 형 변환 = 묵시적 형 변환)

  • 형 변환이란 자바에서 서로 다른 타입의 데이터 간의 연산을 실시할 때 큰 자료형으로 변환되는 것을 말함
  • 이때 개발자가 따로 처리해 주지 않아도 형 변환이 이루어 지는 것, 즉 “자동 형 변환”이 일어나는 것을 Promotion이라고 함
  • 자동 형 변환은 작은 데이터 타입이 큰 데이터 타입으로 형 변환이 일어남
  • 주의해야 하는 타입은 boolean 타입으로, boolean 타입은 어느 타입으로도 변환하거나 연산할 수 없음

 

public class PromitionTest {
    public static void main(String[] args) {
        double d = 42.175;
        int i = 10;
        d = d + i;
    }
}

 

 

4-2) Casting(강제 형 변환 = 명시적 형 변환)

  • Promotion과는 다르게 개발자가 “(자료형)” 연산자를 이용해 피연산자나 수식의 앞에 형 변환하고자 하는 타입을 명시하는 것을 Casting이라고 함

 

public class CastingTest {
    public static void main(String[] args) {
        char ch = 'a';
        short sh = 1;
        ch = (char) (ch + sh);
    }
}

 

 

 

5) 기타 주요내용

5-1) 문법적 주의 사항

  • 대소문자를 철저히 구분함
  • 명령문(Statement)은 반드시 세미콜론(;)으로 종료함
  • 공백이나 탭 입력에 제한이 없으나 가독성을 위해 한 줄에 하나의 명령만 사용하고 블록 구조의 경우 들여 쓰는 것이 좋음
  • 프로그램의 기본 단위는 클래스(class)이며, 선언문, 명령문 등은 모두 클래스 내부에 존재해야 함
  • 프로그램의 진입점은 main() 메소드임
public static void main(String[] args) {
    // 문장
}

 

  • 기본적으로 클래스 명이 파일명이 됨
  • 하나의 파일에는 여러 개의 클래스를 가질 수 있지만 public 키워드는 클래스 한 개만 가질 수 있으며 그 클래스 명이 파일명이 됨
  • main() 메소드를 갖는 클래스가 public 키워드를 가질 수 있음
// FirstCode.java
public class FirstCode {
    public static void main(String[] args) {
        // 문장
    }
}

 

 

5-2) 주석

  • 주석

- 소스 코드에 작성하는 설명

- 주석은 코드를 작성하는 사용자를 위한 것이며, 컴파일러는 주석을 해석하지 않음

 

  • 자바 주석의 종류

- 한 줄 주석 : //

- 여러 줄 주석 : /* 주석내용 */

- 문서 주석 : /** 주석내용*/

* 문서 주석에 작성된 내용은 차후 JavaDoc이 그 내용을 문서화 함

 

 

 

6) eclipse 실습 코드

패키지 1) chapter01.basic

  • Info.class
package chapter01.basic;

public class Info {

	public static void main(String[] args) {
		System.out.println("hello java");
		
		/*
		* 단축키
		Ctrl + s : 저장
		Ctrl + f11 : 프로그램 실행
		Ctrl + Space : 입력 중에 완성 기능 호출(템플릿)
		Ctrl + D : 한 줄 삭제
		Ctrl + Shift + F : 소스 정렬
		Alt + 방향키(위/아래) : 위(아래) 줄과 바꾸기
		Ctrl + Alt + Up(Down) : 한 줄(블럭) 복사
		Ctrl + Shift + O : 자동 import, 안쓰는 import 삭제
		Ctrl + S : 소스코드 저장(현재 파일만)
		Ctrl + Shift + S : 모든 소스코드 저장
		Ctrl + / : 주석 자동완성
		Ctrl + Shift + / : 여러 줄 주석 자동완성
		*/
	}

}

 

 

 

  • PrintTest.class
package chapter01.basic;

public class PrintTest {

	/**
	 * java를 실행하기 위한 main 메서드
	 * @param args
	 */
	public static void main(String[] args) {
		// 출력
		// sysout + ctrl + space bar
		System.out.println("Hello java");
		System.out.print("출력1");   // print : 개행을 안 함
		System.out.println("출력2"); // println : 개행을 해 줌
		System.out.print("출력3");
		System.out.println("출력4");
		
		// 문자
		System.out.println('A');
		// 문자열
		System.out.println("ABCD");
		
		// 정수
		System.out.println(100);
		// 실수
		System.out.println(3.14);
		
		// 주석
		/*
		 * 여러 줄 주석
		 */
		/**
		 * 여러 줄 주석
		 * 
		 * 
		 */

	}

}

 

 

 

  • Variable_assign.class
package chapter01.basic;

public class Variable_assign {

	public static void main(String[] args) {
		// 변수의 선언
		int num;
		// System.out.println(num); --> 해당 명령어 실행 시 변수를 선언만 하였기에 코드 에러가 발생함
		
		// 변수의 초기화
		int value = 100;
		value = 200;
		System.out.println(value);

	}

}

 

 

 

  • InputTest.class
package chapter01.basic;

import java.util.Scanner;

public class InputTest {

	public static void main(String[] args) {
		// 입력
		// import : Ctrl + Shift + O or M
		Scanner scan = new Scanner(System.in);
		
		System.out.print("byte: ");
		byte a = scan.nextByte();
		System.out.print("short: ");
		short b = scan.nextShort();
		System.out.print("int: ");
		int c = scan.nextInt();
		System.out.print("long: ");
		long d = scan.nextLong();
		System.out.print("float: ");
		float e = scan.nextFloat();
		System.out.print("double: ");
		double f = scan.nextDouble();
		System.out.print("String: ");
		String g = scan.next();
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		System.out.println(e);
		System.out.println(f);
		System.out.println(g);

	}

}

 

 

 

  • Basic_Example01.class
package chapter01.basic;

import java.util.Scanner;

public class Basic_Example01 {

	public static void main(String[] args) {
		// 이름, 나이, 키를 입력받아 출력하세요!
		/*
		 * 출력결과
		 이름 : 홍길동
		 나이 : 33
		 키 : 189.3
		 이름은 홍길동이고 나이는 33세, 키는 189.3cm입니다.
		 */
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("이름 : ");
		String name = scan.next();
		System.out.print("나이 : ");
		int age = scan.nextInt();
		System.out.print("키 : ");
		double height = scan.nextDouble();
		
		System.out.println("이름은 " + name + "이고 나이는 " + age + "세, 키는 " + height + "cm입니다.");

	}

}

 

 

 

 

패키지 2) chapter02.data

  • DataType.class
package chapter02.data;

public class DataType {

	public static void main(String[] args) {
		/*
		 [데이터 타입]
		 
		 1) 기본형 데이터 타입
		 - 정수형
		   byte(1), short(2), int(4), long(8)
		   char(2)      // 정수형 & 문자형
		 - 실수형
		   float(4), double(8)
		 - 논리형
		   boolean(1)
		   
		 2) 참조형 데이터 타입
		 - 기본형 데이터 타입이 아닌 모든 "객체"
		   class, enum, array, interface, ...
		 */
		
		// 기본형 데이터 타입
		// 단, eclipse에서는 정수형의 경우 int, 실수형의 경우 double 형을 default 값으로 인식하고 있다는 점을 명심할 것!!
		byte a = 127; // 128을 값으로 입력 시 에러가 발생함(byte는 127까지가 제한 범위이기 때문이다.)
		short b = 12345;
		int c = 1234567890;
		long d = 12345678900L; // 소문자 l or 대문자 L을 써줘야 함!
		char e = 'A'; // char : 문자 1개만 담는다.
		String s = "ABCD"; // String : 문자열을 나타낸다.
		float f = 3.14f; // 소문자 f or 대문자 F를 써줘야 함
		double g = 3.14;
		boolean h = true;
		
		System.out.println("byte    : " + a);
		System.out.println("short   : " + b);
		System.out.println("int     : " + c);
		System.out.println("long    : " + d);
		System.out.println("char    : " + e);
		System.out.println("float   : " + f);
		System.out.println("double  : " + g);
		System.out.println("boolean : " + h);
		
		// java 8버전 이후부터 var가 생겼는데 아래와 같이 데이터 타입이 모호함!
		var v1 = 'B';
		var v2 = 123;
		System.out.println(v1);
		System.out.println(v2);
	}
}

 

 

 

  • Constant.class
package chapter02.data;

public class Constant {

	public static void main(String[] args) {
		// 상수(값 변경 안 됨!!)
		// final 지정자가 붙으며 초기화가 필수이다!
		final int num = 100;
		// num = 200; --> final 지정자를 사용해 상수로 정의했기에 값을 바꾸려하면 에러가 발생함
		System.out.println(num);
		
		// 리터럴
		// 변수에 대입되거나 수식에 직접 사용되는 어떤 값
		int number = 10000;
		char c = 'B';

	}

}

 

 

 

  • Casting.class
package chapter02.data;

public class Casting {

	public static void main(String[] args) {
		// 문자형 타입의 정수화
		char a = 'A';
		System.out.println(a);
		System.out.println((int) a);
		
		// 정수형 타입의 문자화
		char b = 66;
		System.out.println(b);
		
		int c = 67;
		System.out.println((char) c);

		// 묵시적 형 변환(자동 형 변환)
		int aaa = 10;
		double bbb = aaa;
		System.out.println(bbb);
		
		// 명시적 형 변환(강제 형 변환)
		double ccc = 3.14;
		int ddd = (int) ccc;
		System.out.println(ddd);
	}

}