<목차>
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);
}
}
'Java' 카테고리의 다른 글
Java(6) - 반복문(for 문) 예제 풀이 (0) | 2024.04.17 |
---|---|
Java(5) - 반복문(while 문, do-while 문, for 문) (0) | 2024.04.16 |
Java(4) - 조건문(switch-case 문), 반복문(for 문) (0) | 2024.04.15 |
Java(3) - 제어문(if 조건문), eclipse 실습 코드 (0) | 2024.04.12 |
Java(2) - 변수, 진수, 데이터 타입, 연산자 (0) | 2024.04.11 |