웹_프론트_백엔드/JAVA프레임윅기반_풀스택

2020.03.16

shine94 2020. 3. 16. 22:33

[step01] JDK 설치와 환경설정


1. jdk 설치 여부 확인하기 
 : 윈도우 + r > 실행 창에 cmd 입력 > cmd창에 java -version, javac -version 명령어 실행

    java : 자바 실행 파일 *.class 파일을 실행

    javac : 자바 컴파일러 *.java 파일을 컴파일

 

 

2. 개발자는 탐색기에서 파일 확장명과 숨긴항목은 반드시 보이게 해놓는 것이 기본

 : 보기 > 표시/숨기기 > 파일 확장명, 숨긴 항목 체크



3. 경로 설정은 왠만하면 공백, 한글, 특수문자보다는 영어로 사용하는 것을 권장

 

 

4. jdk는 1.8 업데이트 241번째 버전을 사용함

 : http://oracle.com/ > Downloads 클릭

> Java(JDK) for Developers 클릭

> JDK Download 클릭

> 사용하는 운영체제에 맞춰서 다운로드 하기

 

 

5. 환경변수 설정
 : 고급 시스템 설정 > 환경변수 > 시스템변수


1) JAVA_HOME 생성

    JDK 위치

  
2) PATH 변경

    %JAVA_HOME%\bin

 

[step2] 프로그램 개발, 컴파일

 

1. 프로그램 개발을 위해서는 사람의 언어를 컴퓨터 언어로 번역해주는 수단이 필요

 : 컴파일러(compiler) 혹은 인터프리터(Interpreter)

 

사람이 이해하고 만들 수 있는 언어, programming language, 소스코드

클래스파일, 프로그램 소스, *.java, 자바문법에 의해 사람이 이해하는 소스문서파일

[컴파일러(compiler) 혹은 인터프리터(Interpreter)가 사이에 있어 서로 대화할 수 있게 번역해줌, 컴파일]

컴퓨터가 이해하고 실행할 수 있는 언어, binary code, 실행파일

바이트코드(Byte Code), JVM에서 실행가능한 결과물, *class, 이진코드(binary)로 되어 컴퓨터가 실행가능한 파일

 

[step3] JAVA

 

1. 기존의 주요 객체지향 언어인 C++의 단점 극복과 순수 객체지향 언어 필요성에 의해 Java가 등장하게 됨


2. 가장 큰 장점
 : 플랫폼 독립적인 언어! 

   즉, Java는 어느 플랫폼에서 개발했든 타 플랫폼에서도 동일하게 실행된다는 뜻
   (이게 왜 장점이냐면 C언어 같은 경우는 해당 플랫폼에서만 실행되기 때문) 

 

 

3. 플랫폼 관계없이 실행 가능한 이유는 JVM(Java Virtual Machine) 때문이다.

 

 

4. JVM에서 작동하는 언어는 Clojure, Groovy, JRuby, Kotlin, Scala가 있다.
 : 그 중에 Kotlin은 안드로이드 공식 개발 언어로 구글이 밀고 있는 언어

 

 

5. 장점
1) 널리 쓰인다
 : 특히 국내에서는 정부 및 산업 프레임워크 표준으로 채택되서 자바 기반의 비중이 높다

2) C, C++에 비해 프로그래밍 상의 안정성이 높고, 배우기도 상대적으로 쉽다 
 : 직접 메모리 관리를 해야하는 C나 C++과 달리 Java는 Garbage Collector가 자동으로 메모리 정리를 해줌


4. 단점 
1) 속도가 느리다


2) 소스 코드가 타 언어에 비해 길다

 

[step4] cmd창으로 컴파일하기

 

1. 기본 jdk로도 개발은 가능하나 편집 및 디버깅이 불편하다.
 : 그래서 등장한 것이 통합 개발 환경(IDE, Integrated Development Environment)

 

[step5] 통합개발환경(IDE, Integrated Development Environment)

 

1. 이클립스는 2019년 12월 버전 사용함

 : http://eclipse.org/ > Downloads 클릭

> Download Packages 클릭

> 사용하는 운영체제에 맞춰서 다운로드 하기

 

 

2. 문자 인코딩은 utf-8로 설정하기 
 : 이거 안하면 한글이 깨짐

 


3. perspective(관점)
 : 이클립스에서 화면을 구성하고 있는 레이아웃

 

1) 프로젝트 만들기 전에 미리 관점 바꾸기

 

2) 관점 바꾸지 않은 상태에서 프로젝트 만들면 아래의 그림과 같이 관점 변경하라는 팝업이 뜸

 

3) Java 관점 추가, JavaEE와 Java 관점 클릭으로 선택 가능

 


4. src = source를 줄인 말

 

 

5. bin = binary를 줄인 말

 

 

6. 유용한 단축키

Ctrl + M : 해당 탭 전체화면/복귀 
Ctrl + F11 : 컴파일/실행
Ctrl + / : 라인 주석 (토글) 
Ctrl + Shift + / : 블록 주석 지정
Ctrl + Shift + \ : 블록 주석 해제 
Ctrl + F : 찾기, 바꾸기 
Ctrl + H : search 대화상자 
Ctrl +K, Ctrl + Shift + K : 선택한 문자열과 동일한 다음/이전 문자열 찾기 
변수, 메소드, 클래스 이름등을 선택한뒤 F3 : 정의된 곳으로 이동, 정의된 소스 파일 오픈 
Ctrl를 누른상태에서 이름위에 포커싱 한뒤 클릭 : 위의 동작과 비슷, 정의된 소스 파일 오픈 
Ctrl + Shift + O : Import 추가/정리 
Ctrl + Shift + F : 오토 인덴트. 소스코드 형식 정리 
Alt + UP , Alt + DOWN : 선택한 블록을 한줄 위로 / 아래로 
Ctrl+ Alt + 위/아래 방향키 : 커서행 OR 지정된 블럭을 방향으로 복사 
Ctrl + D : 커서행 지정된 블럭을 삭제 
ALT+ Shift +R : REFACTOR-RENAME  /  이름 바꾸기  
이클립스에서 Ctrl + Shift + R 누르면 Resource 검색(원하는 파일 찾기) 
특정행에서 트리플 클릭 :  그 행 전체 선택 
특정 단어에서 더블클릭  : 해당 단어 선택 
블럭 안에서 더블 클릭 : 블럭 범위 선택 
Ctrl + + : 글자 확대 
Ctrl + - : 글자 축소 
Ctrl + Shift + L : 단축키 일람 표시

 


7. 디버그 관련 단축키
Ctrl + Shift + B :  BREAKPOINT 설정 / 해제 (토글) 
F11 : 디버그 시작 
F5 : STEP INTO 
F6 : STEP OVER 
F7 : STEP RETURN 
F8 : RESUME 
Ctrl + F2 : 디버그 종료

 

[step6] 진법, 용량

 

1. 현실 세계는 10진법 사용

 


2. 진법 사용의 예
 : 달력(1년의 12달), 12간지, 연필 다스의 단위 수(12자루)

 


3. 컴퓨터의 기본 용량
 : 1 Byte = 8 bit

 


4. Byte 단위
   1 Byte = 8 Bit 
   1024 Byte = 1 KByte (kilo byte)
   1024 KByte = 1 MByte (mega byte)
   1024 MByte = 1 GByte (giga byte)
   1024 GByte = 1 TByte (tera byte)

 


5. 진법
   10진법 : Decimal, Dec  
   2진법 : Binary, Bin
   8진법 : Octal, Oct
   16진법 : Hexadecimal, Hex

 

 

 

 

 

 

 

 

[step7] 오늘 실습 코드

 

1. Lec01_Hello
1) com.lec.java.hello 패키지, Hello 클래스

package com.lec.java.hello;
/*
 * Java 첫 프로그램.
 * [학습목표]
 * - 기본 출력 : println(), print() 
 * - 주석 (Comment)
 */
public class Hello {

	public static void main(String[] args) {
		System.out.println("Hello Java!!");		//한 줄 주석 : line comment
		System.out.println("안녕하세요");		//println()은 화면 출력하고 줄바꿈.
		
		System.out.println();
		
		System.out.println(1 + 2);
		System.out.println("1" + "2");
		System.out.println('A' + 'B');
		System.out.println('1' + 2);
		System.out.println();
		System.out.println('J' + "ava");
		
		//print()는 출력하고 줄바꿈 안함
		System.out.print("자바");
		System.out.print("프레임워크");
		System.out.println("풀스택 과정");
		System.out.println("2020-03-16");
	}
	
}

 

 

2. Lec02_FirstJava
1) com.lec.java.firstjava 패키지, FirstJava 클래스

package com.lec.java.firstjava;
/*
 * 모든 자바 프로그램은 main() 메소드로부터 '시작'한다
 * 프로그램 실행순서는 '시작' 부터 한 문장(Statement) 씩 실행되는 것이 원칙
 * 문장의 끝은 반드시 세미콜론 ';' 으로 마무리 해야 한다
 */

// 블럭 주석
// /* ~ */

// Ctrl + / : 한 줄 주석 
public class FirstJava {

	public static void main(String[] args) {
		System.out.println("My First Java App");
		
		System.out.println(123);
		System.out.println();		// 줄바꿈만
		System.out.println(10 + 20);	// 10, 20은 숫자로 인식
		System.out.println("10 + 20");	// " ~ " 안의 10 + 20은 문자열로 인식
		
		// 문자열 출력은 반드시 " ~ "로 감싸야 한다.
		//System.out.println(안녕하세요);	//에러
		
		System.out.println(3.141592 * 10 * 10);
		System.out.println(10 * 10 / 2);
		
		// + 연산자의 여러가지 동작
		// 좌우측 중 한개라도 "문자열"이면 '문자열 연결' 연산
		System.out.println("안녕하세요" + " 여러분");	
		System.out.println("결과: " + 10);			
		System.out.println("결과: " + 10 + 20);		
		System.out.println("결과: " + (10 + 20));
		
		// 사칙연산(+, -, *, /)
		System.out.println("10 + 20 = " + (10 + 20));
		System.out.println("10 - 20 = " + (10 - 20));
		System.out.println("10 * 20 = " + (10 * 20));
		System.out.println("10 / 20 = " + (10 / 20));	// 정수 / 정수 결과는 정수(소수점 이하 절삭)
		System.out.println("10 / 20 = " + ((double)10 / 20));
		
		// 이스케이프 문자(escape character)
		// " ~ " 문자열 안에서 특수한 문자 출력
		// 역슬래시(\) 와의 조합문자로 구성
		
		// \" : 쌍따옴표 출력
		// \n : 줄바꿈
		// \t : 탭문자
		// \\ : 역슬래시
		
		// she says "Hi" <-- 출력하려면?
		//System.out.println("she says "Hi"");	//에러
		System.out.println("she says \"Hi\"");
		
		System.out.println("\t123\t456");
		System.out.println("\t10\t4");
		System.out.println("Avengers\n\\Endgame\\");
	}
    
}

 


3. Lec03_Variables
1) com.lec.java.variable01 패키지, Variable01Main 클래스

package com.lec.java.variable01;
/*
	변수 (Variables) :
		값을 담는 공간.  변수이름(variable name)을 부여해서 관리
		
	변수는 사용하기 전에 먼저 '선언(declaration)' 해야 한다
	변수 선언:
		변수타입 변수이름;
	
	변수의 초기화 (initialization)
	변수에 최초로 값(value) 을 대입 (assignment) 하는 것.
	변수(지역변수)를 사용/참조하려면 그전에 반드시 초기화가 되어야 함.
*/
public class Variable01Main {

	public static void main(String[] args) {
		System.out.println("변수(Variables)");
		
		// 변수 선언
		//	변수타입 변수이름;
		
		// int - (정수타입, integer)
		
		int num1;		// int타입 변수 num1 선언
		int num2;		// int타입 변수 num2 선언
		
		// 변수의 초기화
		num1 = 10;		// 대입연산자(=) 사용하여 변수에 값을 대입(assign)
						// assignment operator
		// 변수 초기화 전에 '사용' 하려 하면 에러!, The local num2 may not have been initialized
		//System.out.println("num2 = " + num2);
		
		num2 = 20;
		
		//num3 = 30;	// 에러, 왜? num3를 선언하지 않았기 때문에, cannot be resolved to a variable
		
		System.out.println("num1 = " + num1);
		System.out.println("num2 = " + num2);
		
		num1 = 123;		// 변수의 값은 변경 가능! 그래서 변수!
		System.out.println("num1 = " + num1);
		
		System.out.println("num1 + num2 = " + (num1 + num2));
		
		//num1 - num2 결과를 화면에 출력
		System.out.println("num1 - num2 = " + (num1 - num2));

		//num1 * num2 결과를 화면에 출력
		System.out.println("num1 * num2 = " + (num1 * num2));
		
		//num1 / num2 결과를 화면에 출력
		System.out.println("num1 / num2 = " + (num1 / num2));
	} // end main()

} // end class


2) com.lec.java.variable02 패키지, Variable02Main 클래스

package com.lec.java.variable02;

//자바의 기본 자료형(primitive data type)
//정수 타입: byte(1바이트), short(2바이트), int(4바이트), long(8바이트)
//실수 타입: float(4바이트), double(8바이트)
//문자 타입: char(2바이트)
//논리 타입: boolean

public class Variable02Main {

	public static void main(String[] args) {
		System.out.println("정수타입 변수들");
		
		System.out.println("byte: " + Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE);
		byte num1 = -128;	//대입연산자가 convert 되는지 보고 convert한 뒤 대입한다
		byte num2 = 0;
		byte num3 = 123;
		//byte num4 = 1234;	// 에러: byte에 저장할 수 있는 크기를 넘어섬
        				// Type mismatch: cannot convert from int to byte
		
		System.out.println("short: " + Short.MIN_VALUE + " ~ " + Short.MAX_VALUE);
		short num5 = -12345;
		short num6 = 12345;
		//short num7 = 32768;	// 에러 : 저장할 수 있는 크기를 넘어섬
		//short num8 = -32769;	// 에러 : 저장할 수 있는 크기를 넘어섬
        				// Type mismatch: cannot convert from int to short
		
		System.out.println("int: " + Integer.MIN_VALUE + " ~ " + Integer.MAX_VALUE);
		System.out.println("long: " + Long.MIN_VALUE + " ~ " + Long.MAX_VALUE);
		
		//int num9 = 9876543210;	// 에러 : The literal 9876543210 of type int is out of range
		//long num10 = 9876543210;	// 에러 : The literal 9876543210 of type int is out of range
						// 큰 것에서 작은 것을 담을 수 있으나 큰 값은 작은 값을 담을 수 없다.
		// 리터럴 : literal
		//  코드상에 직접 입력한 값들
		//   정수리터럴 --> int로 형변환 하려 한다
		//   실수리터럴 --> double로 형변환 하려 한다
		//   "~"리터럴 --> 문자열(String)로 형변환
		//   ...
		
		long num11 = 9876543210L;	// 뒤에 L을 붙여줌으로써 long형 literal이 되는 것임!
		long num12 = 12;		// 12는 convert가 가능해서 넣는게 가능함
		long num13 = 12L;
		//int num15 = 12L;		// long 타입을 int에 대입 불가, 큰 사이즈는 작은 사이즈에 대입 불가
						// Type mismatch: cannot convert from long to int
		
		// 값의 경계선
		byte num15 = Byte.MAX_VALUE;	//127
		byte num16 = (byte)(num15 + 1);
		System.out.println("num15 = " + num15);
		System.out.println("num16 = " + num16);	// 출력 : -128, overflow
	} // end main()
    
} // end class

'웹_프론트_백엔드 > JAVA프레임윅기반_풀스택' 카테고리의 다른 글

2020.03.20  (0) 2020.03.20
2020.03.19  (0) 2020.03.19
2020.03.18  (0) 2020.03.18
2020.03.17  (0) 2020.03.17
학습목표 및 일정(3월 16일 ~ 8월 06일)  (0) 2020.03.16