컴파일러 - 프로그래밍 언어(고급언어)를 컴퓨터가 알아들을수 있는 언어(기계어)로 변환해 주는 것
-> 내가 사용하는것은 openjdk

os(window)에 openjdk(컴파일러)

* eclipse 환경변수 ->  window  어디를가든 openjdk를 사용할 수 있도록 설정했음
* eclipse 툴 다운로드 -> 윈도우에 preference 에 java(jdk를 통해)를 쓸수 있도록 설정


c, c++, java           ->  컴파일러 있어야 실행가능 (컴파일러 언어)
python, JavaScript   -> 컴파일러 없어도됨 (인터프리터 언어)



* 컴파일러 언어
  컴파일러를 통해 전체 소스코드를 한번에 기계어로 변환 후 실행파일 생성
  컴파일 단계과 실행 단계가 각각 분리되어있음
  컴파일은 한번만 수행
  컴파일/실행단계 분리로 실행시에는 실행만 하면되므로 코드실행속도가 빠름

* 인터프리터 언어
  프로그랭밍 언어의 소스코드를 바로 실행하는 프로그램
  코드 한 줄 씩 중간 코드인 바이트코드로 변환 후 실행
  실행파일 생성없음
  한줄씩 바이트코드로 변활 후 즉시 실행
  컴파일/실행단계분리되어있지 않아 반복수행함으로 실행속도가 느림



* java특징 - 운영체제(윈도우,리눅스,유닉스,,,)의 독립적(이식성이 높다)
                ->JAVA는 JVM(java virtual machine) 위에서 돌아가기 때문 (다른언어는 운영체제이서 돌아감)
             - 객체지향언어 (상속, 캡슐화, 다형성)
             - C++에서 연산자.기본구분 + 스몰톡에서 객체지향언어관련 구문 가져옴
             - Garbage Collection(자동메모리관리)
               -> 자동적으로 메모리 관리를 해줌 : 따로 관리 불필요
             - 네트워크와 분산처리지원
             - 멀티쓰레드 지원


* Java SE (Standard Addition)

  -JDK(java development Kit) : 자바 개발 키트
  -JRE(Java Runtime Environment) : 자바 실행 환경
  -JVM(Java Virtual Machine) -> JRE에 포함되어 있음
    자바를 실행하기 위한 가상 머신
    자바로 작성된 애플리케이션은 모두 이 가상컴퓨터(JVM)에서만 실행되기 때문에 자바에플리케이션이 실행되기 위해서는 반드시 JVM 필요


 

- bit 1 자리 (0 또는 1)
- byte = bit 8개  (JAVA는 byte로 컴파일됨)
  ex) 1byte -> 00101000

- 대문자로시작 .java -> 클래스
- 소문자로시작        -> 메소드 ( ex>main )
  => 의무는 아니지만 대체로 이렇게 함

- 소괄호 앞의 단어는 무조건 메소드
- 소괄호 안에는 매개변수 (있을때도 없을때도 있음)
- class 의 시작과 끝은 중괄호 열고 닫는다.


* java 언어 프로그램 기본 구조

 

** Hello.java 작성 ----(javac.exe)(컴파일)----> Hello.class 생성 ----(java.exe)(실행)----> "Hello World" 출력

  class 클래스이름{
	public static void main(String[]args){	// main메소드 선언부		
		// 실행될 문장들을 적는다.
	}
}
public class Hello {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*첫번째 실습
		 * System.out.println("Hello, World...");
		System.out.println("1111111");
	}
}

 


 

- 모든 자바프로그램에서  뭔가 가져다 쓰려면 정의를 해줘야함
- 하지만 Java.랭.object 에서 가져다 쓴다.(jdk)
- System.out.println() -> println은 메소드
- 어떤 이름뒤에 소괄호 ()있으면 그 앞에있는 단어는 무조건 메소드

- public이 붙은 class 뒤의 이름은 파일 명과 같아야한다 (public 없으면 상관없음)
- public class는 둘 이상 안됨


 

* 주석문(comment) - 프로그램 설명을 기입하는 것으로 컴파일과 실행을 하지 않음.(설명)

// : 한줄주석(뒤부터 한줄만 주석)
/* */ : 범위주석. 한줄 혹은 여러줄 주석(/*로 시작해서 */끝날때까지 주석)
Ex) /************************************
   여기주석
************************************/


 

* 대문자로시작 .java -> 클래스
 소문자로시작        -> 메소드 ( ex>main )
=> 의무는 아니지만 대체로 이렇게 함



* 표준 입출력 클래스(출력)
  - 자바에서는 System이라는 표준 입출력 클래스를 정의하여 제공
  - 이러한 System클래스는 java.lang 해키지에 포함되어 제공
 
  - System.in 스트림을 사용하여 표준 입력 작업

  - System.out.println()
  - System.out.println(출력할데이터)

   println 은 줄바꿈 (출력후 엔터 적용)
   print 줄바꿈없음


 

 **실습** (항상 왼->오/위->아래 방향)

public class Hello {

	public static void main(String[] args) {
		System.out.print(7);		//print() 메소드는 줄 바꿈을 하지 않는다.
		System.out.println(3);
		System.out.println(3.14);	//실수 출력
		System.out.println("자바!!");		//문자열 출력
		System.out.println("문자열끼리의 " + "연결도 가능합니다.");
		System.out.println("숫자" + 3 + 7 + "과 문자열의 연결도 가능합니다.");
		System.out.println(3 + 7 + "이번 결과는...");
	}
}

/*
실행 결과=>
73
3.14
자바!!
문자열끼리의 연결도 가능합니다.
숫자37과 문자열의 연결도 가능합니다.
10이번 결과는...
*/

 


 

* printf 출력 서식


%d 정수
%f 실수
%c 문자(' ')     -> 한글자
%s 문자열(" ")  -> 한글자 이상
%o
%x
%b
%B
%e


cf) \n -> 줄바꿈
    System.out.println();  -> 줄바꿈
   
    Ctrl + s   -> 저장
    Ctrl + F11   ->  실행 (run)


 

** 실습 **

		// printf 서식문자 (%d, %f, %c, %s)
		System.out.printf("정수 첫번째 %d, 정수 두번째 %d 입니다.\n", 10, 20);
		System.out.printf("실수 %f 입니다.\n", 2.6123456);
		// 실수를 소수점 둘째자리까지만 출력 (반올림)
		System.out.printf("소수점 둘째자리 실수 %.2f 입니다.\n", 26.123456);
		System.out.println();
		System.out.printf("문자 %c 입니다.\n", 'A');	// "A" 하면 오류남
		System.out.printf("문자 %c 입니다.\n", '가');	// 자바는 된다 (한글도 한글자로 인식)
		System.out.printf("문자열 %s 입니다.\n", "테스트");


		결과
		정수 첫번째 10, 정수 두번째 20 입니다.
		실수 2.612346 입니다.
		소수점 둘째자리 실수 26.12 입니다.

		문자 A 입니다.
		문자 가 입니다.
		문자열 테스트 입니다.

 


 

** 실습 **

		/* 출력예) 수식을 출력하면 계산 결과 출력됩니다.
		 * 		10 + 5 = 15
		 * 		내 생일은 2005년 5월 8일 입니다.
		 * 		
		 * 		단) printf 메서드를 사용.
		 * 		   2번째줄 출력은 -> 10, 5, 10 + 5
		 * 		   3번째줄 출력은 -> 2016-11, 5, 8
		 */

		System.out.printf("수식을 출력하면 계산 결과 출력됩니다.\n");
		System.out.printf("%d + %d = %d\n", 10, 5, 10+5);
		System.out.printf("내 생일은 %d년 %d월 %d일 입니다.\n", 2016-11, 5, 8);

		System.out.print("수식을 출력하면 계산결과 출력됩니다.\n");
		System.out.printf("%s \n", "수식을 출력하면 계산결과 출력됩니다.");
		System.out.printf("%d + %d = %d\n", 10, 5, 10+5);
		System.out.printf("내 생일은 %d년 %d월 %d일 입니다.\n", 2016-11, 5, 8);

 


 

** 실습 **

// 정렬 (왼쪽 / 오른쪽)

		System.out.printf("숫자가 [%8d]입니다.\n", 123);		// 숫자는 기본으로 오른쪽 정렬 | %8d 숫자앞에 8자리 공간을 확보한다는 의미
		System.out.printf("숫자가 [%-8d]입니다.\n", 123);		// 숫자 왼쪽정렬하기
		System.out.printf("알파벳 [%10s]입니다.\n", "abc");
		System.out.printf("알파벳 [%-10s]입니다.\n", "abc");

//=> 결과
	숫자가 [     123]입니다.
	숫자가 [123     ]입니다.
	알파벳 [       abc]입니다.
	알파벳 [abc       ]입니다.

 


 

** 실습 **

		/* 출력예)  subject      score      (subject 8개 공백5  score 6개)
				 ===================
				    korea         90
				  english        100
				 conputer         80
			단) printf 메서드를 이용하여 ""에는 서식문자와 줄바꿈만 표함
			   subject는 문자 3자리(%8s), score 숫자6자리(%6d)로 고정
			   		*/
		
		System.out.printf("%8s%5s%6s\n", "subject"," ", "score");
		System.out.printf("%s\n", "===================");
		System.out.printf("%8s%5s%6d\n", "korea"," ", 90);
		System.out.printf("%8s%5s%6d\n", "english"," ", 100);
		System.out.printf("%8s%5s%6d\n", "computer"," ", 80);
		System.out.printf("%8s     %6s \n", "subject", "score");



// 결과

 subject      score
===================
   korea         90
 english        100
computer         80
 subject      score

 

 

 

 

 

 

 

 

'수업끄적끄적_7MONTH > Java' 카테고리의 다른 글

11/07 수업 (7일차)  (1) 2023.11.07
11/06 수업 (6일차)  (0) 2023.11.06
11/02 수업 (4일차)  (0) 2023.11.05
11/01 수업 (3일차)  (0) 2023.11.05
10/31 수업 (2일차)  (0) 2023.11.05

+ Recent posts