본문 바로가기

JAVA

(72)
JAVA(2022.06.02) - 쓰레드와 공유객체 - 하나의 객체를 여러 개의 Thread가 사용한다는 것을 의미한다 ex) 공유객체 > 그네 쓰레드 > 아이(사용자) - 공통으로 사용할 것을 클래스와 인스턴스로 만든다 - 위 인스턴스와 클래스를 각각의 쓰레드에서 사용한다 코드예시) 공유객체 MusicBox public class MusicBox { //신나는 음악!!! 메시지가 1초이하로 쉬면서 10번 출력 public void playMusicA(){ for(int i = 0; i < 10; i ++){ System.out.println("신나는 음악!!!"); try { Thread.sleep((int)(Math.random() * 1000)); //대기시간을 지정. 이클립스가 알아서 예외처리를 해준다 } catch (InterruptedExcep..
JAVA(2022.06.01) - Inner nested class 내부중첩클래스 - 중첩 클래스를 사용하면 두 클래스의 멤버들을 서로 쉽게 사용할 수 있고 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점이 있습니다 ex) 1. class A{ class B{...} } - 인스턴스 멤버 클래스(A 객체를 생성해야만 B중첩 클래스를 사용할 수 있다) 2. class A{ static class B{...} } - B중첩클래스는 A클래스로 바로 접근가능하다 3. class A{ void method(){ class B{...} } } - 메소드 내부에서 선언되는 로컬 클래스 - 메소드 실행 시 사용되고, 메소드 종료되면 사라진다
JAVA(2022.05.31) - Thread Thread(쓰레드) - 동시에 여러가지 작업을 동시에 수행할 수 있게 해준다 - 독립적으로 실행되는 하나의 작업 단위 extend Thread (쓰레드 만들기) - Thread를 상속받아서 생성한다 - java.lang.Thread클래스를 상속받는다 - Thread 클래스가 가지고 있는 start()메소드를 호출한다 ex) public class MyThread1 extends Thread { String str; public MyThread1(String str){ this.str = str; } public void run(){ for(int i = 0; i < 10; i ++){ System.out.print(str); try { //컴퓨터가 너무 빠르기 때문에 수행결과를 잘 확인 할 수 없어서 ..
JAVA(2022.05.30) - Annotation(어노테이션) Annotation - 어노테이션은 주석이라는 의미를 가진다 - 어노테이션은 클래스나 메소드 위에 붙인다 @(at)기호로 이름이 시작한다 - 어노테이션을 클래스나 메타코드에 붙인 후, 클래스가 컴파일되거나 실행될 때 어노테이션의 유무나 어노테이션에 설정된 값을 통하여 클래스가 좀 더 다르게 실행되게 할 수 있습니다 - 설정파일처럼 설명하는 경우도 있다 - 사용자가 직접 작성하는 어노테이션을 Custom 어노테이션이라고 한다 Custom 어노테이션을 이용하는 방법 - 어노테이션을 정의한다 - 어노테이션을 클래스에서 사용한다(타켓에 적용) - 어노테이션을 이용하여 실행 ex) import java.lang.annotation.Retention; import java.lang.annotation.Retenti..
JAVA(2022.05.29) - char 단위 입출력(Console, File) Char 단위 입출력(Console) - char단위 입출력 클래스는 클래스 이름이 Reader나 Writer로 끝이 난다 - char단위 입출력 클래스를 이용해서 키보드로부터 한줄 입력 받아서 콘솔에 출력 System.in - 키보드를 의미(InputStream) BufferedReader - 한줄씩 입력 받기위한 클래스 BufferedReader 클래스의 생성자는 InputStream을 입력받는 생성자가 없다 System.in은 InputStream 타입이므로 BufferedReader의 생성자에 바로 들어갈 수 없으므로 InputStreamReader 클래스를 이용해야함 ex) import java.io.BufferedReader; import java.io.FileWriter; import jav..
JAVA(2022.05.28) - 다양한 타입의 출력(DataOutputStream, DataInputStream) DataInputStream, DataOutputStream - 데이터를 변환까지 해주어서 파일을 읽고 쓰는 클래스 - 프리미티브 타입의 데이터를 읽고 쓸 수 있다 DataOutputStream 사용법 - DataInputStream과 DataOutputStream은 스스로 파일을 읽고 쓸 수 없다 - 그래서 선안할 때 , FileOutputStream을 매개변수로 받아서 사용해야 한다 ex) DataOutputStream DataOutputStream out = new DataOutputStream(new FileOutputStream("data.txt")); - write() 메소드를 데이터를 작성할 수 있다 writeInt() - 정수값으로 저장 > 정수형(4Byte)를 4등분으로 쪼개서 파일에 작..
JAVA(2022.05.27) - Byte 단위 입출력 심화 Byte 단위 입출력 심화 - 입출력 클래스는 클래스의 이름이 InputStream이나 0utputStream으로 끝난다 - 파일 읽을 때는 FileInputStream으로 읽게 된다 - FileInputStream안에 있는 read()메소드는 기본적으로 1byte 단위로 읽게 된다 buffer를 사용하지 않고 읽으면 stream은 512바이트를 가져와서 1바이트를 읽는 과정을 거치기에 매우 비효율적이다 buffer를 사용하면 512바이트씩 가져와서 읽기 때문에 매우 효율적이다 ex) 1024명의 승객을 512인승 비행기에 1명만 태우고 여러번 왔다갔다 하는 것보다 512명을 다 태우고 2번 반복하는게 더 효과적인 것과 같은 맥락 ///파일을 빨리, 내가 원하는 byte만큼 읽어오는 코드 public c..
JAVA(2022.05.26) - Byte단위 입출력 Byte단위 입출력 코드를 통해 살펴보도록 하겠다 FileInputStream > 파일을 읽어오는 객체 FileOutputStream > 파일에 쓸 수 있게 해주는 객체 read()메소드는 읽을 값이 있을때는 항상 양수를 , 더 이상 읽을 값이 없을 때 -1을 return한다 public class ByteIOExam1 { public static void main(String[] args){ FileInputStream fis = null; //파일을 읽는 객체 FileOutputStream fos = null; //파일을 쓰는 객체 try { fis = new FileInputStream("src/javaIO/exam/ByteExam1.java"); fos = new FileOutputStream("..