on
20211231(금)_국비지원 자바강의(1)
20211231(금)_국비지원 자바강의(1)
20211231(금)_국비지원 자바강의(1)
오늘 처음 강의를 들었다.
나름 인생을 건 대모험이라고 생각한다.
수업 내용을 몇 가지 기록해본다.
<자바의 특징>
9. Garbage Collection(GC)
- 10값 할당, 그 값 저장. 더 이상 필요 없어짐. 메모리 제거. 자바 나오기 전에는 직접 메모리 삭제. 자바부터는 알아서 필요없는 부분 버림. 메모리관리 필요 사라짐.
- 메모리 관리필요없음.
10, 멀티스레드
- <작업 관리자>에서 확인가능.
- 프로세스란? OS에서 실행중인 프로그램.
- 멀티프로세스? 실행중인 프로그램이 여러 개.메모리 할당해가며(10/80/10) (80/10/10) 등.
- 도스: 프로그램을 한 번에 한 개만.
- 스레드란? 프로세스 내에서 최소 작업.
11. 플랫폼 독립성이란?
- 운영체제 위에 파일이 실행됨.
- 운영체제와 파일은 서로 맞물려야 함.
- 어디서 만들든 상관없이(운영체제 상관없이)
vs C소스코드는 윈도우 '전용'프로그램이 만들어짐. 그래서 윈도우에서만 실행가능.
반면 자바는 서로 다른 모양의 운영체제 위에 '버츄얼머신'을 올려놓고 그 위에서 파일이 실행된다.
12. 오라클에서 자바설치
- 프로덕트-> 자바SE-> Dowload Java 클릭
- JDK 11버전 사용. 현업에서 가장 많이 씀.
- 제어판->시스템->비트확인-> JDK11은 64비트만 지원. JDK 8버전까지만 32/64비트 지원함.
- Java SE Development Kit 8u31141
- 오라클 계정생성 후 "jdk-8u311-windows-x64" 다운 및 설치.
- 경로는 가능하면 기본값으로. 아니면 따로 외워야 함.
- C경로로. JDK(Java dev. kit) 폴더로 이동. <보기>에서 <파일확장명>과 <숨김파일보기> 기능 체크.
- bin폴더 안에 아래 세 가지 파일 확인 가능.
(1) "java.exe"(콘솔) -> 콘솔에서 실행.\
(2) "javaw.exe"(실행) -> 콘솔과 상관없이.
(3) "javac.exe"(컴파일러) ->
- 환경변수 설정하기: 어느경로에서건 자바프로그램을 실행시킬 수 있다.
(1) Window+R > control.exe > 시스템 > 고급 시스템 설정
>환경변수
(2) 시스템 변수 > 새로 만들기
변수 이름 : JAVA_HOME
변수 값 : JDK 경로
(3) 시스템 변수 > path 변수 선택 후 편집
JDK폴더 안에 있는 bin폴더까지의 경로 추가
(기존 내용이 사라지면 안됨)
13. 자바 버츄얼머신(JVM)
- 자바 컴파일러에 의해 만들어진 바이트 코드를 해석하고 실행하는 버츄얼머신(CPU)
14. 프로그램이란?
- 컴퓨터는 이해할 수 있는 언어? 0, 1
- 프로그래밍 언어: 인간과 컴퓨터 대화위한.
- 저급언어: 속도 빠르고 성능이 뛰어남. 배우기 어렵고 유지보수 힘듦. 기계어, 어셈블리어가 이에 속함.
- 고급언어: 인간이 사용하는 언어와 유사하게 만들어진 언어. 배우기 쉽고 코드판독이 쉬워 유지보수 용이.(C/C++자바 파이썬등)
15. 소스코드
고급언어 형태로 텍스트파일로 작성.
16. 목적코드
- 고급언어로 작성된 소스코드를 실행하면 코드는 이진수로 이뤄진 목적코드로 변환됨.
- 소스코드를 목적코드로 변화하는 장치를 컴파일러 또는 인터프리터라고 한다.(java->javac.exe)
- 소스파일을 이진수로(바이트 코드)
- 컴파일러와 인터프리터의 차이?
- 컴파일러: 컴파일하면 새로운 바이트 코드 파일이 생김(통째로해서 바이트코드 파일이 생김). 통째로 바꾸어 놓고 그 파일을 실행시킴.
- 인터프리터: 실행할 때마다 한줄한줄 이진수로 바꾸고 실행시킴.(그때그때 번역해서 실행한다.)
17. 소프트웨어개발과정(PPT 있으니 쉬는 날 읽어오기)
18. 폴더 -> 경로. 이왕이면 영문으로 작성하기.
- C말고 D드라이브에 'workspace' 폴더 생성.
- cmd창 띄우기 ; 일단 workspace폴더에 텍스트파일 생성;
- public class {}
- 블럭({})
public class Ex1{
public static void main(String[] args){
System.out.println("hello, world");
}
}
- Ex1.jave로 파일명 변경. 헬로 월드 띄우기 대기 중.
- Cmd에서 경로바꾸기. 드라이브가 다를 때는 드라이브까지 다 올라가서. 상위폴더로 올라갈 때는 "cd.."
- d:
- cd d:\workspace
- javac Ex1.java
- \workspace 안에 확장자 클래스 파일이 생겼을 것임.(Ex1.class)
- 명령: java Ex1 => "hello, world"가 출력될 것임.
- 오타나면 cmd에 입력하면 어디 틀렸는지 대충 알려주나, 매번은 불편함. 그 대안은 이클립스!
19. 이클립스 설치
- 지금까지 JDK 설치 해봤고
- 자격증
(1) 정보처리기사/산업기사 상관없음. 학력에 맞춰서 따기. +a
(2) sqld(데이터베이스 모델링) 현업에 있는 사람도 떨어짐. 있으면 메리트가 큼.
(3) 운전면허증
(4) ocjp (비추) 자바시험.
- 이클립스 다운 설치 "Eclipse IDE for Enterprise Javaa and Web Developers"
* 경로를 못잡았다. 원인은? java11이 아니라 java8을 설치해버림. 그래도 그냥 진행함.
//4 - 13:30-14:30 점심-종로가츠동
20. 이클립스 설정
- 웹개발버전으로.
- 왼쪽은 패키지탐색기; 오른쪽의 클래스파일의 구성확인.
- 하나의 프로젝트는 하나의 프로그램이라고 생각하면 됨.
- 우상단 '오픈 퍼스펙티브'; java; javeEE가 있어야 함; java 선택 open;
- 너무 많이 껐다면, windows->Show view에서 찾기.
- Project -> Build Automatically 체크 (세이브하면 자동으로 컴파일, 풀고 직접할 수도 있으나 굳이)
- Run: 실행.
- Windows->Preferences. 웹어플리케까지.
- 인터넷을 한다? Local(내컴) <---(인터넷망)---> Naver; 한글을 보내면 안됨. 특정 글자로. 한글용 케릭터셋(UTF8) -한글이 깨지지 않도록. UTF8을 앞으로 사용할 것
- window > preference > textfile encoding : utf-8 변경
=> 제너럴-워크스페이스-UTF8-Apply
- 제너럴-어피어런스-컬러앤폰츠-베이직-텍스트폰트-글씨크기(16으로 함)
- 테마바꾸기: 어피어런스-테마-'다크'
*노트북을 들고 와도 좋음.
- Creat a project 클릭 > java project 선택 > "DecJava" > 유즈 디폴트 로케 > JRE 확인 > Module 해제
- 자바파일은 늘 DecJava > src 에 java파일을 넣을 것임. bin에는 class파일을 넣음.
- 화면에선 bin 폴더 안보여줌.
- src: java 파일 저장
--패키지: 관련 있는 클래스를 묶어주는 폴더
2~3단계 정도의 이름을 사용
com.sample.test (주로 패키지 이름으로 사용, 일반적으로 전부 소문자로 사용, 숫자를 넣을 수 있으나 숫자로 시작은X)
- bin: class파일 저장(이클립스 화면에선 안보임)
- C:\Users\soldesk\eclipse-workspace에 저장됨. DecJava
21. 패키지 만들기
src > 우클릭 > new > "com.test.day1231"
- 패키지 안에 클래스명 Ex1 만들기 > public static void main(String[] args) 체크. > finish
- public static void main이 시작점
- "//"은 주석. 프로그램에 영향 안줌.
- 런 클래스 메인 블록{} 안에 실행. 메인 끝나면 프로그램 종료.
**
package com.test.day1231;
public class Ex1 {
//main : 프로그램 시작점
public static void main(String[] args) {
}// main 끝- 프로그램 종료
}
22. 실행 단축키
Ctrl+F11
23.노란줄 빨간줄
- 빨간줄은 잘못지적
- 노란줄은 안했으면 좋겠다 '권고'. 불필요.
- 회사에선 빨간줄 없게. 노란줄은 이왕이면 없게.
24. 컴퓨터의 시초
- 계산기: 하나씩 쪼개서.
- 과정: 입력 => 연산(기능) => 출력
# 동시에 실행되는 건 절대 없다. 하나씩 쪼개서 순서대로 실행.
- 세분화 세분화.
- System.out.println(값); : 괄호 안에 내용을 출력 후 줄 바꿈. - \(*역슬래시)n: 라인 피드(*커서를 다음 줄로 이동) - Sysout => Ctrl+Space => System.out.println. - System.out.println(); //출력 안하고 줄만 바꿈 - System.out.print(값); 괄호 안의 내용을 출력. 커서는 그대로 유지. - System.out.print(); => println()은 가능하지만, print()이란 건 없다! - System.out.printf("서식",값, 값...); => 데이터 집어넣어서 원하는 순서대로 출력. ==> 서식값: %s 문자열 %d 정수 %f 실수 #비교 System.out.println(2+"*"+4+"="+8); System.out.printf("%d * %d = %d", 2, 4, (2*4)); package com.test.day1231; public class Ex1 { //main : 프로그램 시작점 public static void main(String[] args) { // int i = 0; System.out.println("hello java!"); System.out.println(); //출력 안하고 줄만 바꿈 System.out.println("hello world!"); System.out.print("test"); System.out.print("aaaa"); System.out.print("test"); System.out.println(); System.out.println("test"+"bbbb"); System.out.printf("%s%s
", "test","bbbb"); // 문자열과 문자열 더하는 건 별로 좋지는 않음. System.out.printf("%d원입니다.
", 10000); System.out.println(2+"*"+4+"="+8); System.out.printf("%d * %d = %d", 2, 4, (2*4)); }// main 끝- 프로그램 종료 } => 결과값 hello java! hello world! testaaaatest testbbbb testbbbb 10000원입니다. 2*4=8 2 * 4 = 8
25. 뉴클래스
- PrintfTest 생성
- 정수와 실수. 정수는 소수점 없음. 실수는 소수점 있음.
-
은 줄바꿈; \t는 탭 들여쓰기랑 같은 효과.
package com.test.day1231; public class PrintfTest { public static void main(String[] args) { System.out.printf("%d
", 123); System.out.printf("%5d
", 123);//5자리로 표시하고, 없으면 비워두겠다. System.out.printf("%05d
", 123);//5자리로 표시하고, 없으면 0으로 두겠다.위와 자리수 맞추기 위해 사용. System.out.printf("%f
", 123.45);//플로트가 표현가능한 자리수까지 꽉 채워서 보여줌. 값이 없으니 0으로. System.out.printf("%7.1f\t", 123.45);// 7.1의 의미? 전체 일곱자리, 뒤에는 소수점 한자리 System.out.printf("%7.3f\t", 123.45);// 7.3의 의미? 전체 일곱자리, 뒤에는 소수점 세자리 // 이렇게 전체 자리수를 결정하는 것은 '문자열'도 가능하다. System.out.printf("%s\t", "hello"); System.out.printf("%10s\t", "hello"); } } => 결과값 123 123 00123 123.450000 123.5 123.450 hello hello
27. 뉴클래스
- 클래스 이름은 항상 대문자로 시작하자.
- CalculatorEx
- 입력 Scanner클래스 사용: 내가 원하는 목적지에 입력값 보내줌.
- 입력값 읽어와서 데이터 사용.
- 데이터 저장시켜놓고 사용.
- 변수 : 하나의 값을 저장하는 공간. 그 값은 변할 수 있음 vs 상수: 하나의 값을 저장하는 공간. 한 번 저장하면 그 값은 고정됨
- 스캐너가 보낸 값을 변수에 저장.
- 변수선언하면 저장공간이 할당됨. 해당공간에 있는 값을 꺼내 사용. 해당공간에 20값을 집어넣으면? 기존 값 지워지고 20값이 저장된다. 10에서 20으로 변함. 저장되고 있는 값은 변할 수 있어서 '변수'임. 이와 반대가 '상수'다. 하나의 값만 저장되는 공간. 고정되는 것을 상수라 한다.
- Scanner s = new Scanner(system.in) ;
s.next(); // 키보드로 값을 입력하고 엔터를 누를 때까지 기다렸다가 엔터를 누르면 입력한 값을 읽어온다. (문자열로 읽어온다)
s.nextInt();//키보드로 값을 입력하고 엔터를 누를 때까지 기다렸다가 엔터를 누르면 입력한 값을 읽어온다. (숫자로 읽어온다.)
System.out.println("100"+"100");//100; 문자열과 문자열의 더하기=이어쓰기
System.out.println(100+100);// 200
Scanner s = new Scanner(System.in);
s.next(); // 키보드로 값을 입력하고 엔터를 누를때까지
기다렸다가 엔터를 누르면 입력한 값을 읽어온다.(문자열)
s.nextInt();// 키보드로 값을 입력하고 엔터를 누를때까지
기다렸다가 엔터를 누르면 입력한 값을 읽어온다.(숫자)
s.close();
<계산기 순서> 1. Scanner s = new Scanner(System.in); 2. 첫 번째 숫자를 입력 > 엔터 > 저장 3. 두 번째 숫자를 입력 > 엔터 > 저장 4. 첫 번째 숫자 + 두 번째 숫자 결과 저장 5. 결과 출력 6. s.close() ; - JRE library> java.base > java.util > Scanner package com.test.day1231; import java.util.Scanner; public class CalculatorEx { public static void main(String[] args) { Scanner s = new Scanner(System.in); // 어떤 패키지에 있는 클래스라고 지정해야 함. //2. 첫 번째 숫자를 입력 > 엔터 > 저장 System.out.print("첫번째 정수를 입력하세요. >"); int first = s.nextInt(); //=은 '저장한다는 것', 퍼스트에 인트를 저장한다. //3. 두 번째 숫자를 입력 > 엔터 > 저장 System.out.print("두번째 정수를 입력하세요. > "); int second = s.nextInt(); //4. 첫 번째 숫자 + 두 번째 숫자 결과 저장 int result = first + second; //5. 결과출력 System.out.printf("%d + %d = %d", first, second, result ); s.close(); } } ==> 결과값 첫번째 정수를 입력하세요. >10 두번째 정수를 입력하세요. > 10 10 + 10 = 20 //7교시
28. 크롬 리모트 데스크탑
Chrome Remote Desktop
29. 저장순서
오른쪽에서 왼쪽으로 저장.
강제종료 Terminate (빨간네모)
30. 사칙연산 계산기 (일괄)
package com.test.day1231; import java.util.Scanner; public class CalculatorEx { public static void main(String[] args) { Scanner s = new Scanner(System.in); // 어떤 패키지에 있는 클래스라고 지정해야 함. //2. 첫 번째 숫자를 입력 > 엔터 > 저장 System.out.print("첫번째 정수를 입력하세요. >"); int first = s.nextInt(); //=은 '저장한다는 것', 퍼스트에 인트를 저장한다. //3. 두 번째 숫자를 입력 > 엔터 > 저장 System.out.print("두번째 정수를 입력하세요. > "); int second = s.nextInt(); //4. 첫 번째 숫자 + 두 번째 숫자 결과 저장 int result = first + second; //5. 결과출력 System.out.printf("%d + %d = %d
", first, second, result ); int result2 = first - second; System.out.printf("%d - %d = %d
", first, second, result2 ); result = first * second; System.out.printf("%d * %d = %d
", first, second, result ); result = first/second; System.out.printf("%d / %d = %d
", first, second, result ); s.close(); } }
31. inch를 입력하면 cm단위로 변환해주는 것
입력받을 값 스캐너. 스캐너 명령어 갖고 값을. 출력은 프린트 엘엔, 프린트 에프.
package com.test.day1231; import java.util.Scanner; public class ChangeNumber { //inch를 입력하면 cm단위로 변환해 출력 //1 inch == 2.54cm public static void main(String[] args) { Scanner s = new Scanner(System.in); s.nextInt("inch값을 입력하세요. >"); int inch = s.nextInt(0); double cm = inch * 2.54; // 실수는 double, 정수는 int System.out.printf("%d inch는 %.2fcm입니다.", inch, cm); //System.out.print("inch값을 입력해주세요. >"); //double first = s.nextInt(); //double result = 2.54*first; //System.out.print(result+"cm"); s.close(); } }
32. 오류 잡기
package com.test.day1231; import java.util.Scanner; public class ChangeNumber { //inch를 입력하면 cm단위로 변환해 출력 //1 inch == 2.54cm public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("inch값을 입력하세요. >"); //s.nextInt(); int inch = s.nextInt(); double cm = inch * 2.54; // 실수는 double, 정수는 int System.out.printf("%d inch는 %.2fcm입니다.", inch, cm); //System.out.print("inch값을 입력해주세요. >"); //double first = s.nextInt(); //double result = 2.54*first; //System.out.print(result+"cm"); s.close(); } }
from http://nerdtrepang.tistory.com/8 by ccl(A) rewrite - 2022-01-01 08:28:31