java.io는 입력/출력(I/O) 작업을 수행하기 위한 클래스를 제공하는 Java 패키지입니다. 패키지에는 파일, 네트워크 소켓 및 기타 입력/출력 소스를 읽고 쓰기 위한 클래스가 포함되어 있습니다. java.io에서 가장 일반적으로 사용되는 클래스는 다음과 같습니다.
FileInputStream 및 FileOutputStream - 파일에서 이진 데이터를 읽고 쓰는 데 사용됩니다.
FileReader 및 FileWriter - 파일에서 문자 데이터를 읽고 쓰는 데 사용됩니다.
BufferedReader 및 BufferedWriter - 성능 향상을 위해 입력 및 출력을 버퍼링하는 데 사용됩니다.
DataInputStream 및 DataOutputStream - 기본 데이터 유형을 이진 값으로 읽고 쓰는 데 사용됩니다.
ObjectInputStream 및 ObjectOutputStream - 개체를 이진 값으로 읽고 쓰는 데 사용됩니다.
다음은 이러한 클래스를 사용하는 방법에 대한 몇 가지 예입니다.
FileInputStream 및 FileOutputStream:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
FileInputStream input = new FileInputStream("input.bin");
FileOutputStream output = new FileOutputStream("output.bin");
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = input.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
input.close();
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위의 예에서는 "input.bin"이라는 파일에서 이진 데이터를 읽는 FileInputStream 개체와 "output.bin"이라는 파일에 이진 데이터를 쓰는 FileOutputStream 개체를 만듭니다. 그런 다음 'buffer'라는 바이트 배열을 만들어 입력 파일에서 읽은 데이터를 보관하고 while 루프를 사용하여 한 번에 1024바이트 단위로 데이터를 읽습니다. 그런 다음 FileOutputStream 개체의 write() 메서드를 사용하여 각 데이터 청크를 출력 파일에 씁니다. 마지막으로 close() 메서드를 사용하여 두 파일을 모두 닫습니다.
반응형
2.FileReader 및 FileWriter:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
FileReader reader = new FileReader("input.txt");
FileWriter writer = new FileWriter("output.txt");
int c;
while ((c = reader.read()) != -1) {
writer.write(c);
}
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위의 예에서는 "input.txt"라는 파일에서 문자 데이터를 읽는 FileReader 개체와 "output.txt"라는 파일에 문자 데이터를 쓰는 FileWriter 개체를 만듭니다. 그런 다음 while 루프를 사용하여 FileReader 객체의 read() 메서드를 사용하여 입력 파일에서 각 문자를 읽고 FileWriter 객체의 write() 메서드를 사용하여 출력 파일에 씁니다. . 마지막으로 close() 메서드를 사용하여 두 파일을 모두 닫습니다.
3.BufferedReader 및 BufferedWriter:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
FileReader reader = new FileReader("input.txt");
BufferedReader bufferedReader = new BufferedReader(reader);
FileWriter writer = new FileWriter("output.txt");
BufferedWriter bufferedWriter = new BufferedWriter(writer);
String line;
while ((line = bufferedReader.readLine()) != null) {
bufferedWriter.write(line);
bufferedWriter.newLine();
}
bufferedReader.close();
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
Java 맵은 각 키가 값과 연결된 키-값 쌍의 모음입니다. 해당 키를 기반으로 값을 저장하고 검색할 수 있습니다.
단어가 키이고 정의가 값인 사전으로 지도를 생각하십시오. 키를 검색하여 사전에서 단어의 정의를 찾는 방법과 마찬가지로 Java 맵에서 키와 연결된 값을 검색할 수 있습니다.
맵은 일반적으로 값 발생 횟수 계산, 구성 저장 및 결과 캐싱과 같은 작업에 사용됩니다.
Java 맵 구현의 일부 예로는 HashMap, TreeMap 및 LinkedHashMap이 있습니다
import java.util.HashMap;
public class MapExample {
public static void main(String[] args) {
// Create a new HashMap
HashMap<String, Integer> map = new HashMap<>();
// Add some key-value pairs
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Retrieve values based on their keys
int appleCount = map.get("apple");
int bananaCount = map.get("banana");
// Print the values
System.out.println("Number of apples: " + appleCount);
System.out.println("Number of bananas: " + bananaCount);
}
}
오늘 범위가 연산자 부분이어서 이전에 이해하고 넘어간 부분이라 강의만 쭉 듣고 챗gpt 로 정리 하려고 한다
오늘 강의가 2시간 짜리라 다 듣진 못했다. (수업종료후 파이썬 강의듣기전 듣고 넘어갈 예정이다)
chatGPT 의 연산자 강의
확신하는! Java 연산자는 하나 이상의 피연산자에 대해 특정 작업을 수행하는 기호 또는 키워드입니다. 다음은 일반적으로 사용되는 몇 가지 Java 연산자와 작동 방식입니다.
산술 연산자: 더하기, 빼기, 곱하기, 나누기와 같은 산술 연산을 수행하는 데 사용됩니다. 이러한 작업에 사용되는 기호는 다음과 같습니다.
+(더하기)
-(빼기)
*(곱하기)
/(나누기)
% (모듈로 또는 나머지)
예:
int a = 10;
int b = 3;
int sum = a + b; // sum = 13
int diff = a - b; // diff = 7
int product = a * b; // product = 30
int quotient = a / b; // quotient = 3
int remainder = a % b; // remainder = 1
2. 할당 연산자: 변수에 값을 할당하는 데 사용됩니다. 이러한 작업에 사용되는 기호는 다음과 같습니다.
=(단순 할당)
+= (더하기 대입)
-=(빼기 대입)
*= (곱셈 대입)
/= (나누기 할당)
%= (모듈로 할당)
예:
int a = 10;
a += 5; // a = a + 5; a = 15
a -= 3; // a = a - 3; a = 12
a *= 2; // a = a * 2; a = 24
a /= 4; // a = a / 4; a = 6
a %= 2; // a = a % 2; a = 0
3.비교 연산자: 값을 비교하고 부울 값(true 또는 false)을 반환하는 데 사용됩니다. 이러한 작업에 사용되는 기호는 다음과 같습니다.
==(같음)
!=(같지 않음)
>(보다 큼)
<(미만)
>=(크거나 같음)
<=(작거나 같음)
예:
int a = 10;
int b = 5;
boolean result1 = a == b; // result1 = false
boolean result2 = a != b; // result2 = true
boolean result3 = a > b; // result3 = true
boolean result4 = a < b; // result4 = false
boolean result5 = a >= b; // result5 = true
boolean result6 = a <= b; // result6 = false
4.논리 연산자: 부울 값에 대한 논리 연산을 수행하고 부울 값을 반환하는 데 사용됩니다. 이러한 작업에 사용되는 기호는 다음과 같습니다.
&&(논리적 and)
||(논리적 or)
!(논리적 아님)
예:
boolean a = true;
boolean b = false;
boolean result1 = a && b; // result1 = false
boolean result2 = a || b; // result2 = true
boolean result3 = !a; // result3 = false
이들은 Java의 기본 연산자입니다. 비트 연산자, 삼항 연산자 등과 같은 다른 연산자도 많이 있지만 이러한 기본 연산자를 이해하면 작업하기에 좋은 기반이 됩니다.
커뮤니티 게시글 보다보면 chatGPT 멍청하다 뭐하다 그런글 많던데 적어도 개발언어 분야에서 내가하는 수준까지는 만족할만한 답변이 나온다.
package ch6;
public class Student2 {
//학생이름 name
//반 ban
//번호 no
//국어점수 kor
//영어점수 eng
//수학점수 math
String name;
int ban;
int no;
int kor;
int eng;
int math;
public Student2(int kor, int eng, int math) {
super();
this.kor = kor;
this.eng = eng;
this.math = math;
}
public Student2(String name, int ban, int no) {
super();
this.name = name;
this.ban = ban;
this.no = no;
}
public Student2(String name, int ban, int no,
int kor,int eng, int math) {
super();
this.name = name;
this.ban = ban;
this.no = no;
this.kor = kor;
this.eng = eng;
this.math = math;
}
int getTotal() {
return this.kor+this.eng+this.math;
}
double getAverage() {
return getTotal() / 3.0;
}
public Student2(String name) {
super();
this.name = name;
}
@Override
public String toString() {
return "Student2 [name=" + name + ", ban=" + ban + ", no=" + no + ", kor=" + kor + ", eng=" + eng + ", math="
+ math + "]";
}
}
를 이용해 학생정보 작성하기
package ch6;
import java.util.Scanner;
public class StudentEx3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("이름: ");
String name = sc.nextLine();
System.out.println("반 : ");
int ban = Integer.parseInt(sc.nextLine());
System.out.println("번호 : ");
int no = Integer.parseInt(sc.nextLine());
System.out.println("국어 : ");
int kor = Integer.parseInt(sc.nextLine());
System.out.println("영어 : ");
int eng = Integer.parseInt(sc.nextLine());
System.out.println("수학 : ");
int math = Integer.parseInt(sc.nextLine());
Student2 student = new Student2(name, ban, no, kor, eng, math);
System.out.println(student);
}
}
2교시
package ch6;
//상품 관리
public class GoodsStock {
//속성
String code; //상품코드
int stockNum; //재고수량
//생성자를 명시하지 않으면
//기본생성자를 생성해줌
public GoodsStock(String code, int stockNum) {
super();
this.code = code;
this.stockNum = stockNum;
}
//기능
//재고수량 감소
void addStock() {
System.out.println("재고수량 증가");
}
//재고수량 증가
void subtractStock() {
System.out.println("재고수량 감소");
}
@Override
public String toString() {
return "GoodsStock [code=" + code + ", stockNum=" + stockNum + "]";
}
}
package ch6;
import java.util.Scanner;
public class GoodStockEx2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// System.out.println("코드를 입력해주세요>>");
// String code = sc.nextLine();
// System.out.println("재고수량 입력해주세요>>");
// int stockNum =Integer.parseInt(sc.nextLine());
//
// GoodsStock stock = new GoodsStock(code, stockNum);
// System.out.println(stock);
//3개의 상품에 대해서 인스턴스를 생성해야 한다면?
GoodsStock[] goods = new GoodsStock[3];
for (int i = 0; i < goods.length; i++) {
System.out.println("코드를 입력해주세요>>");
String code = sc.nextLine();
System.out.println("재고수량 입력해주세요>>");
int stockNum =Integer.parseInt(sc.nextLine());
goods[i] = new GoodsStock(code, stockNum);
System.out.println("-----------------------");
}
for (int i = 0; i < goods.length; i++) {
System.out.println(goods[i]);
}
}
}
며칠째 같은내용을 반복해서 하니 졸리다...
기초가 중요하다곤 하지만 이렇게 공부하는게 맞는걸까..? 하면할수록 그냥 귀찮다는 생각밖에 안든다.
3교시
/* 상속 * 기존의 클래스를 재사용하여 새로운 클래스를 작성 * 상성 장점 * 1)적은 양의 코드로 새로운 클래스를 작성할 수 있음 * 2)코드를 공통적으로 관리하기 때문에 추가 및 변경이 용이함 * * extends : 상속을 표현 * * 상속대상 * 1)자손 클래스는 조상 클래스의 모든 멤버를 상송받음 (단, 생성자와 초기화 블럭은 상속 안됨) * 2)자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많음- */
4교시
package inheritense;
public class Tv {
boolean power;
int channel;
void power() {
power =! power;
}
void channelUp() {
channel ++;
}
void channelDown() {
channel --;
}
}
package inheritense;
//Tv 클래스를 상속받은 SmartTv
public class SmartTv extends Tv {
boolean caption;
void displayCaption(String text) {
System.out.println(text);
}
}
package inheritense;
public class SmartTvEx1 {
public static void main(String[] args) {
SmartTv stv = new SmartTv();
//상속여부 확인
stv.channel = 10;
stv.channelUp();
System.out.println("현재채널" + stv.channel);
stv.power();
System.out.println("전원 상태 "+ stv.power);
stv.displayCaption("Hello world");
stv.caption = true;
stv.displayCaption("hello world");
}
}
5교시
//this() : 생성자에서 다른 생성자를 호출시 //, this.변수명 : 자기자신 //super() : 생성자에서 부모 생성자를 호출 시 //, super.변수명 : 부모
6교시
클래스 작성시 부모를 지정하지 않으면 최상위 부모는 Object 클래스가 존재함
이걸 만들 예정
package Exam;
public class Account {
private String ano;
private String owner;
private String balance;
public Account(String ano, String owner, String balance) {
super();
this.ano = ano;
this.owner = owner;
this.balance = balance;
}
public String getAno() {
return ano;
}
public void setAno(String ano) {
this.ano = ano;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getBalance() {
return balance;
}
public void setBalance(String balance) {
this.balance = balance;
}
}