• Home
  • About
    • Young's Github Pages photo

      一日不作一日不食

    • About
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

Java 정리 01

14 Nov 2018

Reading time ~4 minutes

Java 정리 01 - Java, 기본문법


Java

  • 전세계 개발자들이 가장 많이 사용하는 언어
    • https://www.tiobe.com/tiobe-index/
  • 1994 Sun사에서 JDK beta 발표
  • 2018 메이저버전 Java SE 8 (JDK 1.8), 시험버전 Java 9, 10, 11
  • 자바의 아버지 James Gosling
  • 완벽한 OOP 언어
    • Object Oriented Programming
  • 개발 버전 3가지 (Java SE, Java EE, Java ME) + FX
    • SE - Standard Edition
      • 데스크탑 환경에서 동작
    • EE - Enterprise Edition
      • 기업 환경에서 동작
      • .web 환경에서 동작
    • ME - Mircro Edition
      • Embeded 환경에서 동작
    • FX
      • 윈도우용 앱개발용
  • WORA (Write Once, Run Anywhere)
    • 한번 작성 어디에서나 사용 가능
  • 메모리 관리를 JVM에서 알아서 함 (Garbage Collection)
  • 자바의 단점은 느림
  • CUI(Character User Interface) 환경에서 동작
    • PATH 설정 필요
  • Compiler와 실행기로 구분
    • 컴파일러 javac.exe
      • javac는 jre/bin에는 없음
    • 실행기 java.exe

01


Java Path 설정

  • 시스템 변수에 Path를 추가하는 방법
    • Path는 특정프로그램(javac.exe, java.exe)를 설치된 경로에 상관없이 사용하기위해 설정하는 것
    • 시스템 속성 - 고급 - 환경변수
      • 시스템 변수에 Java bin디렉토리를 Path로 추가
    • cmd에서 set path로 설정된 내용 확인 가능

02

03

  • bat파일로 Path를 추가하는 방법
    • 절대경로를 이용하기 때문에 다른 장소, 같은 디렉토리에 저장 시 바로 사용가능
    • 설치된 java 디렉토리를 원하는 디렉토리에 넣고 다음과 같이 설정
    • txt에 경로 설정하는 bat 코드를 넣고 배치파일로 변경 후 cmd에서 실행
      • rem은 주석
      • ~home path는 bin까지 경로로 잡지 않는다.
    • 배치파일 실행 시 실행한 cmd내에선 설정된 path만 갖는다.
rem xxx_home - 프로그램끼리 경로를 참조하기 위해 설정하는 path

set dev_home=C:\Users\owner\dev
set java_home=%dev_home%\Java\jdk1.8.0_191

set path=%java_home%\bin;

05

04


개발 순서

  • 개발의 목적은 사람이 할 일을 컴퓨터가 대신하게 만들기 위한 것
  1. Source Code 작성
  2. 저장
  3. 컴파일
  4. 실행
// 1. Source Code 작성
class Hello {
    // 단독으로 실행하여 결과를 제공하는 프로그램 : Java Application
    public static void main(String args[]) {
        System.out.println("Hello Java");
    }
}

// 2. 저장 (클래스명.java) - Hello.java

// 3. 컴파일 : javac 소스파일명.java
// 클래스명이 곧 파일명
// 컴파일러(javac.exe)가 사람언어를 컴퓨터의 언어로 변환함
// 컴파일이 실패하면 에러출력, 수정 후 성공할때까지 반복 수행
javac Hello.java

// 4. 실행 : java 바이트코드명
// 컴파일이 완료되면 똑같은 이름의 .class 파일(byte code)이 생성됨
// 실행 시 확장자(.class)는 적지 않는다
java Hello

// source code != byte code

06

07

javap -verbose Hello.class // 어셈블리어 보기

08


컴파일타임과 런타임

09

  • 컴파일 에러는 코드의 문법적인 에러
  • 런타임에러는 로직에 대한 문제
    • 코딩의 순서가 잘못된 것
    • 남이보면 더 잘잡는다
  • 실행되는 프로그램 JVM (Java Virtual Machine)
    • 최소 32MB가 있어야 실행이 됨
      • 메모리, cpu를 사용
  • 플레시 없던 시절 글자와 움직이지 않는 이미지가 보여지는 전부였음
    • 애플릿이란 기술은 웹브라우저에서 자바를 돌려서 페이지를 동적으로 만들어줌
    • 자바를 알리는 계기가 되었지만 applet은 현재 죽은기술

기본 출력

  • 메인메소드가 있는 클래스를 자바 애플리케이션이라고 한다.
// 자바의 표준출력 method
// 모든 JDK에서 사용가능
System.out.print(값);    // 출력 후 줄변경 안함
System.out.println(값);  // 출력 후 줄변경
// 값으로 상수(정수상수, 실수상수, 문자상수, 문자열상수), 
// 변수, 연산식이 들어갈 수 있음
System.out.println(11);	// 정수상수
System.out.println(11.13);  // 실수상수
System.out.println('A');    // 문자상수
System.out.println("Hello Java"); // 문자열상수
// 기본형 데이터형(primitive type) 변수
// byte, short, int, long, char, float, double, boolean
// 참조형 데이터형(reference type) 변수
// class, array ... 
// 연산식 : 연산된 결과만 출력

// 아래 메소드들은 JDK 1.5+ 에서만 사용가능 - 나중에 사용법 설명
System.out.printf();
System.out.format();
    System.out.print("안녕");
    System.out.println("하세요..");

10

    System.out.println("안녕");
    System.out.print("하세요..");

11

// 한줄 주석
/*
   여러줄 주석
*/
// 자바는 대소문자를 가린다, String을 'string'으로 변경 시
...
  public static void main(string args[]) {
...
// PL/SQL과는 다르게 자바에선 에러를 구체적으로 알려줌
// 메모장에선 Ctrl+G를 눌러서 원하는 줄수로 이동이 가능

12

class UsePrint{
  public static void main(String args[]) {
    int i=11; // 지역변수
    String s="오늘은 화요일"; // 문자열 객체(변수)

    System.out.println(i); // 기본형 데이터형 변수
    System.out.println(s); // 참조형 데이터형 변수
    System.out.println(11 + 13); // 연산식, 연산된 결과만 나온다

    // 문자열은 형변환없이 바로 출력
    System.out.println("11 + 13 = " + 11+13);   // 1113이 출력됨
    // 가로를 사용하면 정상적인 결과 출력
    System.out.println("11 + 13 = " + (11+13));
  } 
}

13


변수(Variable)

  • 프로그램에서 필요한 값을 일시적으로 사용하기위해 사용
  • 가독성 향상!
  • instance 변수, static 변수, local 변수 3가지 지원
    • 선언되는 위치로 구분
class 클래스명 {
    // 변수 선언가능 - instance 변수, static 변수
    public static void main(String[] args) {
        // 변수 선언가능 - local 변수
    }
    //
}

지역변수 (Local Variable)

  • method 안에서 선언되고 사용되는 변수
    • method 외부에서는 변수를 사용할 수 없다
    • method 호출 시 memory에 설정되고 호출이 끝나면 memory에서 소멸됨
  • 자동초기화가 되지 않는다.
    • 초기화 되지 않은 변수를 사용하면 Error.
    • 초기화 - 변수를 선언하고 선언된 변수에 값을 넣는 것
  • 모든 데이터형으로 변수를 선언할 수 있다.
// 1. 선언
데이터형 변수명;
// 변수명은 영어 소문자로 시작
// 영어 대소문자, 숫자, 특수문자(_,$)로 생성 가능
// 한글로 변수명 줄 수 있으나 지양
// 변수명은 선언되는 영역에서는 유일 
// 숫자로 시작하면 안됨

// 2. 값 할당
변수명 = 값;
// 여러번 가능(이전 값을 덮어씀)

// 선언과 값 할당을 한번에 가능 = 변수초기화
데이터형 변수명 = defaultValue;

// 3. 사용 - 출력, 연산, 재할당
System.out.println(변수명);
또다른변수 = 변수명;
...
  • 데이터형
    • 기본형 데이터형 (primitive type)
      • byte, short, int, long, char, float, double
    • 참조형 데이터형 (reference type)
      • class, String, array, …


Java