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