study/Java

[sist] 2023.12.26_Java : Java 설치와 실행, 변수

듀2 2024. 1. 14. 17:18

* Java SE 개발킷 설치, 환경설정, 컴파일러 사용법, 기본문법(클래스 작성법), 변수(지역변수), 제어문(if, switch~case, for, while, do, break, continue, return), method, 변수(instance variable, static variable), OOP, class, String, Array, java.util 패키지의 클래스들, JCF(Java Collection Framework - List, Set, Map), JFC(Java Foundation Class - AWT, Swing), Event Handling, Exception Handling, IOStream, Network, Thread

 

* JDK 다운

 - 유료: http://java.sun.com 

 

Oracle Java Technologies | Oracle

Java Is the Language of Possibilities Java is powering the innovation behind our digital world. Harness this potential with Java resources for student coders, hobbyists, developers, and IT leaders.

www.oracle.com

 -> Oracle JDK - 추후 업데이트 제공

Oracle JDK Download

 

 - 무료: https://github.com/openjdk

 

OpenJDK

OpenJDK has 117 repositories available. Follow their code on GitHub.

github.com

 -> Open JDK - 추후 업데이트가 제공되지 않음

Open JDK Download

 

 - JDK 설치 후 Path가 설정되어있지 않으면 DOS창에서 java.exe를 사용할 수 없다.

 


 

* PATH: 설치된 프로그램을 경로에 상관없이 사용할 수 있도록 운영체제에서 설정하는 경로

 - Java에서 설정하는 PATH

 1. JAVA_HOME (bin이 보이는 폴더까지를 설정)

 2. HOME을 참조하는 PATH 설정

set DEV_HOME=E:/dev
set JAVA_HOME=%DEV_HOME%/java-17-openjdk-17.0.3.0.6-1

set PATH=%PATH%;%JAVA_HOME%/bin

 

 - C: \Users\user, E:\, E:\dev -> prompt : 현재 경로를 보여주는 일

 - 프로그램은 설치된 directory가 아닌 곳에서는 실행할 수 없다. -> 불편 -> 해결: PATH, bat파일을 제작하여 해결하거나 운영체제에서 제공하는 PATH 설정

 


 

* Java 역사

 - sun사에서 1995년에 발표한 프로그래밍 언어

 - 자바의 아버지: James Gosling 

 - 1995: Java1.0 최초 발표

 - 1997: JDK1.1 발표 - inner class 추가

 - 1998: Java2(Java2SE) - GUI용 Swing이 추가

 - 2000: Java2 SE 1.3 - Hotspot추가, JNDI 추가

 - 2002: Java2 SE 1.4 - 정규식 지원, IPv6를 지원

 - 2004: Java2 SE 1.5 - Generic 지원, autoboxing, unboxing 지원

 - 2006: Java SE 6 - Scripting Language 지원

 - 2010: Java SE 7 - switch~case에서 String 지원

 - 2014: Java SE 8 - Lambda식 지원

 - 2017: Java SE 9 - runtime module화 지원

 - 2018: Java SE 10 - var를 사용한 지역변수의 추론, Java SE 11 - 구독모델로 유료화 지원

 


 

* Java 실행: CUI(Character User Interface, 키의 입력(명령어의 입력)으로 프로그램을 실행하는 환경)에서 실행

 - CUI에서는 설치된 프로그램을 경로에 상관없이 사용하기 위해 PATH를 설정한다.

 

* PATH 설정

 1. Windows : 제어판 > 시스템 > 고급시스템 설정 > 환경변수 > 시스템 변수 > PATH편집

 

 2. 설정 파일

 - bat 파일을 생성

 - JDK가 설치된 후 JDK에서 제공하는 실행파일(javac.exe, java.exe)를 사용하기 위해 PATH를 가진 파일을 생성

 

 - XXX_HOME: 프로그램끼리 경로를 참조하여 사용할 때 정의하는 PATH

 - PATH: 설치된 프로그램을 어떤 경로에서든 사용하기 위해 정의하는 PATH

 - CLASSPATH: class파일(bytecode)를 어떤 경로에서든 참조하고 사용해야할 때 정의하는 PATH

 

 사용법)

 1. DOS창에서 환경파일을 로딩(e:\dev\env.bat)

 2. DOS창에서 프로그램 사용(java -version)

 


 

* Java 코딩 순서

 1. 소스코드 작성

 2. 컴파일(javac.exe)

 3. 실행(java.exe)

 

 1. Source code 작성

 - 메모장, 범용에디터, IDE

 

 *주의사항:

 - 대, 소문자 구분

 - 문장(명령)의 끝에는 반드시 ;를 붙인다.

 - 괄호는 반드시 짝으로 구성된다.

 

 구성)

 class 클래스명 {

   코딩

 }

 

 2. 저장

 클래스명.java

 

 3. Compile (사람의 언어를 Computer언어로 변환)

 compiler가 필요(javac.exe)

 

 사용법)

 javac 소스파일명.java

 -> 성공: bytecode가 생성(기계어로 만들어진 파일)

 

 *high-level language

 - 사람의 언어로 코딩한다. (영어, 한글, 숫자)

 - Java, C/C++, PyThon,,,

 

 *low-level language

 - 컴퓨터의 언어로 코딩한다. (기계어)

 - COBOL, Assembly,,,

 

 4. Run (생성된 bytecod를 사용하여 컴퓨터에게 일을 시킨다.)

 

 사용법) - 파일의 확장자를 기술하지 않는다.

 java 패키지명.bytecode명

 


 

* Java 실행

* JVM의 장점

 - WORA(Write Once Run Anywhere) 한 번 만들어진 bytecode는 소스 수정 없이 어떤 OS에서든 실행된다.

 - 완벽한 OOP 언어

 - 메모리 관리의 편의성

 

* 단점: 속도가 느리다

 


 

* 자바 표준 출력(console 출력)

 - System.out 표준 출력 스트림을 사용하여 Console에 출력할 수 있다.

 

 사용법)

System.out.print( 값 );		// 출력 후 줄 변경하지 않음.
System.out.println( 값 );	// 출력 후 줄 변경.

 

* 값

 - 상수: 변하지 않는 값

  정수 상수: 12, 2023

  실수 상수: 12.26, 2023.12

  문자 상수: 'A', '0', '가'

  불린 상수: true, false

  문자열 상수: "안녕하세요", "오늘은 화요일"

 

 - 변수: 변할 수 있는 값

  기본형 데이터 형, 참조형 데이터 형으로 선언된 변수

 

 - 연산식: 연산자를 사용한 연산의 결과 출력

  12 + 26이 입력되면 38이 출력

 


 

* 변수(Variable)

 목적: 프로그램에서 필요한 값을 일시적으로 저장하고, 사용할 때.

 - 값에 대해 별명을 부여하여 가독성을 향상시킬 수 있다.

 - 모든 데이터 형을 사용하여 변수를 만들고 사용할 수 있다.

 - java에서는 instance variable(member variable), static variable(class variable), local variable 3가지 형태의 변수 지원.

 

* Local Variable(지역변수)

 - method 안에서 선언하고, 사용하는 변수.

 - method 외부에서 사용할 수 없다.

 - 자동초기화가 되지 않기 때문에 개발자가 반드시 초기화해주어야 한다.

 - 초기화하지 않은 변수를 사용하면 error

 - method를 호출하면 memory에 올라가고, method 호출이 끝나면 memory에서 내려온다. (값이 유지되지 않는다.)

 

 사용법)

 1. 변수 선언.

  데이터형 변수명;

  - 데이터형: 기본형 데이터 형(byte, short, int, long, char, float, double, boolean), 참조형 데이터 형(class, String, array)

  int age; -> 한 단어: 다 소문자

  int myAge; -> 여러 단어: 첫 글자는 소문자로, 나머지는 첫 글자만 대문자로

 

 2. 값 할당.

  변수명 = 값;

age = 26;
myAge = 27;

 

 3. 값 사용. (출력, 연산, 재할당 셋 중 반드시 하나는 해야 한다.)

System.out.println(age);	// 변수가 가진 값 26을 출력

 

int maxScore = 100;
int myScore = 80;

// 3. 값 사용: 출력	-> myScore 80점으로 사용
System.out.print("최고점수 " + maxScore + "점, 내 점수 " + myScore);
System.out.println("최고 점수와의 차이: " + (maxScore - myScore) + "점");

// 2. 값 할당을 여러 번 할 수 있다.
myScore = 95;

// 3. 값 사용: 출력 -> myScore 95점으로 사용
System.out.print("최고점수 " + maxScore + "점, 내 점수 " + myScore);
System.out.println("최고 점수와의 차이: " + (maxScore - myScore) + "점");

 

* 초기화하지 않은 지역변수를 사용하면 error가 발생

파일명, 에러 라인수, 에러 이유, 대략 위치 확인 가능

 

* 변수의 초기화: 변수를 선언하면서 값을 할당하는 것

 문법)

 데이터형 변수명 = 초기화값(initial value);

 int i = 0;

class Test{
// class field
	int i;	// instance variable
    static int j;	// static variable
    
    public static void main(String[] args){
    // local 	
        int i;	// local variable, 영역이 다르므로 같은 이름의 변수 선언 가능
        int k;	// 변수명이 다르기 때문에 생성 가능
        int i;	// 위에 같은 이름의 변수가 존재하므로 error (선언 불가)
    // local
    }
// class field
}
728x90