728x90
수업내용
1교시 (09:30-10:20)
- Exam_HashMap_2
package a.b.c.ch6;
import java.util.HashMap;
import java.util.Iterator;
public class Exam_HashMap_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("이름", "홍길동");
hm.put("나이", "30");
hm.put("주소", "서울시 송파구");
String name= hm.get("이름");
String age = hm.get("나이");
String addr = hm.get("주소");
System.out.println("name >>> : " + name);
System.out.println("age >>> : " + age);
System.out.println("addr >>> : " + addr);
System.out.println("\n#########################\n");
System.out.println("hm.keySet() >>> : " + hm.keySet());
System.out.println("hm.values() >>> : " + hm.values());
System.out.println("hm.entrySet() >>> : " + hm.entrySet());
System.out.println("\n#########################\n");
/*
hm.keySet() : 이름, 나이, 주소가 배열로 있음
.iterator() : hm.keySet() 함수에서 리턴한 [이름, 나이, 주소] 데이터를
Iterator keys 참조변수에 대입한다.
다른 말로 Iterator keys 참조 변수가
hm.keySet() 함수에서 리턴한 [이름, 나이, 주소] 데이터를 가리킨다.
*/
// Iterator 이터레이터 : 자료를 순차적으로 접근할 수 있도록 처리하는 객체 : 반복자
Iterator keys = hm.keySet().iterator();
// Iterator 참조변수 keys를 이용해서 이터레이터에 들어있는 데이터를 hasNext() 함수로 확인한다.
while (keys.hasNext()) {
String key = (String)keys.next();
String value = "";
if ("이름".equals(key)) {
value = (String)hm.get(key);
}
if ("나이".equals(key)) {
value = (String)hm.get(key);
}
if ("주소".equals(key)) {
value = (String)hm.get(key);
}
System.out.println(key + " : " + value);
}
}
}
2교시 (10:30-11:20)
- Exam_HashMap_2
package a.b.c.ch6;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
public class Exam_HashMap_3 {
public ArrayList<HashMap<String, String>> hashMapGeneric() {
HashMap<String, String> hm0 = new HashMap<String, String>();
hm0.put("이름", "김건호");
hm0.put("나이", "27");
hm0.put("주소", "부천시 춘의동");
HashMap<String, String> hm1 = new HashMap<String, String>();
hm1.put("이름", "신지현");
hm1.put("나이", "26");
hm1.put("주소", "서울시 금천구");
HashMap<String, String> hm2 = new HashMap<String, String>();
hm2.put("이름", "민현호");
hm2.put("나이", "27");
hm2.put("주소", "서울시 양천구");
ArrayList<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
aList.add(hm0);
aList.add(hm1);
aList.add(hm2);
return aList;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Exam_HashMap_3 ex3 = new Exam_HashMap_3();
ArrayList<HashMap<String, String>> aList1 = ex3.hashMapGeneric();
System.out.println("aList1.size() >>> : " + aList1.size());
for (int i=0; i < aList1.size(); i++) {
HashMap<String, String> hm = aList1.get(i);
Iterator<String> keys = hm.keySet().iterator();
// Iterator 참조변수 keys를 이용해서 이터레이터에 들어있는 데이터를 hasNext() 함수로 확인한다.
while (keys.hasNext()) {
String key = keys.next();
String value = "";
if ("이름".equals(key)) {
value = hm.get(key);
}
if ("나이".equals(key)) {
value = hm.get(key);
}
if ("주소".equals(key)) {
value = hm.get(key);
}
// if ("이름".equals(key) || "나이".equals(key) || "주소".equals(key)) {
// value = hm.get(key);
// }
System.out.println(key + " : " + value);
}
}
}
}
- [교재 511p] 자바 입출력 - 수정 필요
자바
1. 키워드
package import
class interface abstract
public protected private
static new
void return
final
byte char short int
2. 연산자
+ - * / = < > == != && || ++ += () !
3. 식별자
클래스 이름 : 대문자로 시작
함수 이름 : 소문자 시작
변수 이름 : 소문자로 시작
4. 빌트인 클래스 자원 API
java.lang.* 자바 기본 클래스 : 문자, 숫자, 시스템 관련 클래스 : coreJava
java.lang.Object
java.lang.System
java.lang.String
java.lang.Integer
java.lang.Double
java.lang.Math
java.lang.StringBuffer
java.lang.reflect.Method
java.lang.Class
java.lang.Thread
java.lang.Throwable
java.lang.Exception
java.util.* 날짜, 데이터 다루는 클래스
java.util.Date
java.util.Calendar
java.util.HashMap
java.util.UUID
java.util.Random
java.util.Scanner
java.util.StringTokenizer
java.util.Iterator
java.io.*
java.text.* 날짜 포맷
java.text.SimpleDataFormat
java.math.*
java.math.BigDecimal
3교시 (11:30-12:20)
- Exam_IOTest
package a.b.c.ch6;
import java.util.Scanner;
public class Exam_IOTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("IO 테스트 숫자 : ");
Scanner sc = new Scanner(System.in);
int data = sc.nextInt();
System.out.println("data >>> : " + data);
System.out.println("binary >>> : " + Integer.toBinaryString(data));
System.out.println("IO 테스트 문자 : ");
Scanner sc1 = new Scanner(System.in);
String dataS = sc1.nextLine();
System.out.println("문자 >>> : " + dataS);
for (int i=0; i <dataS.length(); i++) {
char c = dataS.charAt(i);
System.out.println("binary >>> : "
+ " : " + c
+ " : " + (byte)c
+ " : " + Integer.toBinaryString((byte)c));
}
sc.close();
sc1.close();
}
}
4교시 (12:30-13:20)
- Exam_IOTest_1
package a.b.c.ch6;
import java.io.FileInputStream;
public class Exam_IOTest_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
파일, 디렉토리 구분자
윈도우 \
이클립스 \\
유닉스, 리눅스 /
*/
// 절대 경로 : 파일이 있는 위치에서 그 디렉토리의 루트부터 읽어오는 경로
String filePath = "C:\\00.KOSMO108\\10.JExam\\eclipse_java_work\\firstProject\\src\\a\\b\\c\\ch6";
String file = "Exam_IOTest_1.java";
try {
FileInputStream fis = new FileInputStream(filePath + "\\" + file);
System.out.println("fis >>> : " + fis);
// public int read() throws IOException
int data = fis.read();
System.out.println("data >>> : " + data);
System.out.println("(byte)data >>> : " + (byte)data);
System.out.println("(char)data >>> : " + (char)data);
while ((data = fis.read()) != -1) {
System.out.println(data + " : " + (char)data);
}
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("에러가 >>> : " + e.getMessage());
}
}
}
5교시 (14:30-15:20)
- Exam_IOTest_2
package a.b.c.ch6;
import java.io.FileInputStream;
public class Exam_IOTest_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
파일, 디렉토리 구분자
윈도우 \
이클립스 \\
유닉스, 리눅스 /
*/
// 절대 경로 : 파일이 있는 위치에서 그 디렉토리의 루트부터 읽어오는 경로
String filePath = "C:\\00.KOSMO108\\10.JExam\\eclipse_java_work\\firstProject\\src\\a\\b\\c\\ch6";
String file = "Exam_IOTest_1.java";
try {
FileInputStream fis = new FileInputStream(filePath + "/" + file);
System.out.println("fis >>> : " + fis);
// public int read() throws IOException
int data= 0;
while ((data = fis.read()) != -1) {
System.out.print((char)data);
}
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("에러가 >>> : " + e.getMessage());
}
}
}
- Exam_IOTest_3
package a.b.c.ch6;
import java.io.FileInputStream;
import java.io.FileOutputStream;abstract
public class Exam_IOTest_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
파일, 디렉토리 구분자
윈도우 \
이클립스 \\
유닉스, 리눅스 /
*/
// 절대 경로 : 파일이 있는 위치에서 그 디렉토리의 루트 부터 읽어오는 경로
String filePath = "C:\\00.KOSMO108\\10.JExam\\eclipse_java_work\\firstProject\\src\\a\\b\\c\\ch6";
filePath = filePath.replace('\\', '/');
try {
FileInputStream fis = new FileInputStream(filePath + "/" + "Exam_IOTest_3.java");
System.out.println("fis >>> : " + fis);
FileOutputStream fos = new FileOutputStream(filePath + "/" + "Exam_IOTest_3.java");
System.out.println("fos >>> : " + fos);
// public int read() throws IOException
int data = 0;
while ((data = fis.read()) != -1) {
System.out.print((char)data);
fos.write(data);
}
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("에러가 >>> : " + e.getMessage());
}
}
}
6교시 (15:30-16:20)
- FilePath
package a.b.c.common;
public abstract class FilePath {
// 상수
public static final String FILE_PATH_CH6 = "C:/00.KOSMO108/10.JExam/eclipse_java_work/firstProject/src/a/b/c/ch6";
}
- Exam_FileInputStream
package a.b.c.ch6;
import java.io.File;
import java.io.FileInputStream;
import a.b.c.common.FilePath;
/*
자바 프로그램에서는 메모르 관리를 하지 않는다.
소스에서 개발자가 메모리를 지우는 행위를 할 수 없다.
자바에서 메모리를 지우는 역할을 담당하는 것은 가비지 컬렉터라고 한다.
자바에서 메모리를 지운다는 것은 가비지 컬렉터에게 요청하는 것과 같은 뜻이다.
프로그램 입장에서는 메모리가 언제 지워지는지 알 수 없다.
*/
/*
자바에는 null 키워드가 있다.
null 키워드가 의미하는 것은 데이터를 가리키지 않는다.
나는 현재 이 참조변수에 데이터가 없다.
*/
public class Exam_FileInputStream {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
지역변수 사용하는 방법
1. 지역변수는 함수에서 태어나서 함수에서 죽는다.
단 : 죽이는 것은 GC(가비지 컬렉터)가 한다.
2. 지역변수는 죽으라고 명령을 할 수가 없다.
3. 지역변수는 가비지 컬렉터가 그 프로그램의 메모리 상황을 보고
4. 프로그램의 우선순위도 보고 스케줄링에 의해서 메모리에서 제거된다.
*/
/*
지역변수를 사용하는 규칙
1. 지역변수는 선언과 동시에 디폴트 값으로 초기화한다.
객체 참조변수 = null;
기초자료형 지역변수 = 디폴트값; 0, 0.0, '\u0000', false
String s= "";
String s1 = null;
2. 통신 관련, I/O가 발생하는 객체는 사용한 후
flush(), close(), null 처리를 해야 한다.
예) FileInputStream fis = null; // null 초기화
// 객체 오픈
fis = new FileInputStream(filePath + "/" + file);
// 객체 닫기
fis.close();
// 사용을 다한 객체 null 초기화
fis = null;
*/
// 지역변수, 객체, 참조변수
// 객체 null 초기화
FileInputStream fis = null;
try {
String filePath = FilePath.FILE_PATH_CH6;
filePath = filePath + "/" + "Exam_FileInputStream.java";
System.out.println("filePath >>> : " + filePath);
File f = new File(filePath);
boolean bFile = f.exists();
System.out.println("bFile >>> : " + bFile);
if (bFile) {
fis = new FileInputStream(f);
System.out.println("fis >>> : " + fis);
// public int read() throws IOException
int data = 0;
while ((data = fis.read()) != -1) {
System.out.print((char)data);
}
// 정상적으로 수행되었을 때 수행되는 루틴
// FileInputStream I/O 객체를 닫는다.
fis.close();
} else {
System.out.println("파일이 없습니다. >>> : ");
}
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("에러가 >>> : " + e.getMessage());
} finally {
if (fis != null) {
try {
fis.close(); fis=null;
} catch (Exception e) {}
}
}
}
}
7교시 (16:30-17:20)
- Exam_FileOutputStream
package a.b.c.ch6;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import a.b.c.common.FilePath;
public class Exam_FileOUtputStream {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 파일 패스 공통클래스에서 불러오기
String filePath = FilePath.FILE_PATH_CH6;
// 파일 패스 및 사용할 파일 명까지 초기화
String inFile = filePath + "/" + "Exam_FileOutputStream.java";
String outFile = filePath + "/" + "Exam_FileOutputStream.bak";
// 지역변수 디폴트 값으로 초기화
FileInputStream fis = null;
FileOutputStream fos = null;
File f = null;
int data = 0;
boolean bFile = false;
try {
f = new File(filePath);
// 파일이 있는지 여부 체크하는 boolean
bFile = f.exists();
System.out.println("bFile >>> : " + bFile);
// 파일이 있을 때만 수행한다.
if (bFile) {
// 파일을 읽기 위해서
fis = new FileInputStream(inFile);
System.out.println("fis >>> : " + fis);
// 파일을 쓰기 위해서
fos = new FileOutputStream(outFile, true);
System.out.println("fos >>> : " + fos);
// 파일을 읽어서 파일에 쓰기
// public int read() throws IOException
while ((data = fis.read()) != -1) {
System.out.print((char)data);
}
// io를 닫을 때는 여는 순서의 반대로 닫는다.
// 정상적으로 수행이 되었을 때 수행되는 루틴
fos.close();
fis.close();
} else {
System.out.println("파일이 없습니다. >>> : ");
}
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("에러가 >>> : " + e.getMessage());
} finally {
if (fos != null) {
try { fos.close(); fos=null;} catch (Exception e) {}
}
if (fis != null) {
try { fis.close(); fis=null;} catch (Exception e) {}
}
}
}
}
8교시 (17:30-18:30)
- Exam_FileReader
package a.b.c.ch6;
import java.io.File;
import java.io.FileReader;
import a.b.c.common.FilePath;
public class Exam_FileReader {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 지역변수, 객체, 참조변수
// 객체 null 초기화
FileReader fr = null;
try {
String filePath = FilePath.FILE_PATH_CH6;
filePath = filePath + "/" + "Exam_FileReader.java";
System.out.println("filePath >>> : " + filePath);
File f = new File(filePath);
boolean bFile = f.exists();
System.out.println("bFile >>> : " + bFile);
if (bFile) {
fr = new FileReader(f);
System.out.println("fr >>> : " + fr);
// public int read() throws IOException
int data = 0;
while ((data = fr.read()) != -1) {
System.out.print((char)data);
}
// 정상적으로 수행이 되었을 때 수행되는 루틴
// FileReader I/O 객체를 닫는다.
fr.close();
} else {
System.out.println("파일이 없습니다. >>> : ");
}
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("에러가 >>> : " + e.getMessage());
} finally {
if (fr != null) {
try {
fr.close(); fr=null;
} catch (Exception e) {}
}
}
}
}
- Exam_FileWriter
package a.b.c.ch6;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import a.b.c.common.FilePath;
public class Exam_FileWriter {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 파일 패스 공통 클래스에서 불러오기
String filePath = FilePath.FILE_PATH_CH6;
// 파일 패스 및 사용할 파일 명까지 초기화
String inFile = filePath + "/" + "Exam_FileWriter.java";
String outFile = filePath + "/" + "Exam_FileWriter.bak";
// 지역 변수 디폴트 값으로 초기화
FileReader fr = null;
FileWriter fw = null;
File f = null;
int data = 0;
boolean bFile = false;
try {
f = new File(inFile);
// 파일이 있는지 여부 체크하는 boolean
bFile = f.exists();
System.out.println("bFile >>> : " + bFile);
if (bFile) {
// 파일을 읽기 위해서
fr = new FileReader(f);
System.out.println("fr >>> : " + fr);
// 파일을 쓰기 위해서
fw = new FileWriter(outFile, true);
System.out.println("fw >>> : " + fw);
// 파일을 읽어서 파일에 쓰기
// public int read() throws IOException
while ((data = fr.read()) != -1) {
System.out.print((char)data);
fw.write(data);
}
// io를 닫을 때는 여는 순서의 반대로 닫는다.
// 정상적으로 수행이 되었을 때 수행되는 루틴
fw.close();
fr.close();
} else {
System.out.println("파일이 없습니다. >>> : ");
}
} catch (Exception e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("에러가 >>> : " + e.getMessage());
} finally {
if (fw != null) {
try { fw.close(); fw=null; } catch (Exception e) {}
}
if (fr != null) {
try { fr.close(); fr=null; } catch (Exception e) {}
}
}
}
}
- 오늘 강의 노트
- 자바
1. 키워드
package import
class interface abstract
public protected private
static new
void return final byte char short int long float double
if else for while do switch case default
break
2. 연산자
+ - * / = < > == != && || ++ += () !
3. 식별자
클래스 이름 : 대문자로 시작
함수 이름 : 소문자로 시작
변수 이름 : 소문자로 시작
4. 빌트인 클래스 자원 API
java.lang.* 자바 기본 클래스 : 문자, 숫자, 시스템 관련 클래스 : corejava
java.lang.Object
java.lang.System
java.lang.String
java.lang.Integer
java.lang.Double
java.lang.Math
java.lang.StringBuffer
java.lang.reflect.Method
java.lang.Class
java.lang.Thread
java.lang.Throwable
java.lang.Exception
java.util.* 날짜, 데이터 다루는 클래스
java.util.Date
java.util.Calendar
java.util.ArrayList
java.util.HashMap
java.util.UUID
java.util.Random
java.util.Scanner
java.util.StringTokenizer
java.util.TimeZone
java.util.Iterator
java.io.*
java.text.* 날짜 포맷
java.text.SimpleDataFormat
java.math.*
java.math.BigDecimal
javax.swing.*
java.awt.*
java.io 패키지
-----------------
input 입력 output 출력 : 입출력 : io
System.in : 입력
System.out. : 출력
스트림 : 2진수 형태로 다닌다
1byte : 바이트 단위 스트림 : 영어 : 한글(깨짐)
2byte : 문자 단위 스트림 : 영어 : 한글(안깨짐)
영어 : 1byte
한글 : 2byte 이상
바이트 단위 스트림
---------------
InputStream
DataInputStream
FileInputStream
BufferedInputStream
OutputStream
DataOutputStream
FileOutputStream
BufferedOutputStream
PrintStream
문자 단위 스트림
--------------
Reader
FileReader
BufferedReader
InputStreamReader
Writer
FileWriter
BufferedWriter
OutputStreamWriter
PrintWriter
Notes
728x90
'국비지원교육 (22.01-22.07) > 강의노트' 카테고리의 다른 글
22-03-03(목) 025일차 [Oracle] Oracle DB 설치, SQL Developer 설치 (0) | 2022.05.09 |
---|---|
22-03-02(수) 024일차 [Java] 파일 IO, 방화벽 (0) | 2022.05.09 |
22-02-25(금) 022일차 [Java] String, Date, Time, HashMap (0) | 2022.05.09 |
22-02-24(목) 021일차 [Java] BigDecimal, 사칙연산을 하는 계산기 만들기, String 자르기(StringTokenizer) (0) | 2022.05.09 |
22-02-23(수) 020일차 [Java] java.util.Math (0) | 2022.04.20 |