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
- 윈도우용 앱개발용
- SE - Standard Edition
- WORA (Write Once, Run Anywhere)
- 한번 작성 어디에서나 사용 가능
- 메모리 관리를 JVM에서 알아서 함 (Garbage Collection)
- 자바의 단점은 느림
- CUI(Character User Interface) 환경에서 동작
- PATH 설정 필요
- Compiler와 실행기로 구분
- 컴파일러 javac.exe
- javac는 jre/bin에는 없음
- 실행기 java.exe
- 컴파일러 javac.exe
Java Path 설정
- 시스템 변수에 Path를 추가하는 방법
- Path는 특정프로그램(javac.exe, java.exe)를 설치된 경로에 상관없이 사용하기위해 설정하는 것
- 시스템 속성 - 고급 - 환경변수
- 시스템 변수에 Java bin디렉토리를 Path로 추가
- cmd에서 set path로 설정된 내용 확인 가능
- 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;
개발 순서
- 개발의 목적은 사람이 할 일을 컴퓨터가 대신하게 만들기 위한 것
- Source Code 작성
- 저장
- 컴파일
- 실행
// 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
javap -verbose Hello.class // 어셈블리어 보기
컴파일타임과 런타임
- 컴파일 에러는 코드의 문법적인 에러
- 런타임에러는 로직에 대한 문제
- 코딩의 순서가 잘못된 것
- 남이보면 더 잘잡는다
- 실행되는 프로그램 JVM (Java Virtual Machine)
- 최소 32MB가 있어야 실행이 됨
- 메모리, cpu를 사용
- 최소 32MB가 있어야 실행이 됨
- 플레시 없던 시절 글자와 움직이지 않는 이미지가 보여지는 전부였음
- 애플릿이란 기술은 웹브라우저에서 자바를 돌려서 페이지를 동적으로 만들어줌
- 자바를 알리는 계기가 되었지만 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("하세요..");
System.out.println("안녕");
System.out.print("하세요..");
// 한줄 주석
/*
여러줄 주석
*/
// 자바는 대소문자를 가린다, String을 'string'으로 변경 시
...
public static void main(string args[]) {
...
// PL/SQL과는 다르게 자바에선 에러를 구체적으로 알려줌
// 메모장에선 Ctrl+G를 눌러서 원하는 줄수로 이동이 가능
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));
}
}
변수(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, …
- 기본형 데이터형 (primitive type)