728x90
반응형
SMALL

(1) IO(Input/Output)

input : 키보드, 파일

output : 모니터, 파일

 

(2) 스트림(Stream) : 데이터가 돌아다니는 선(통로) → 데이터를 목적지까지 IO하는 방법

특징

  • 스트림은 단방향!! input, output은 따로따로 만들어줘야함
  • 자바에서 읽기/ 쓰기는 동시에 불가!
  • FIFO(First In First Out), 지연 가능

(3) 입출력 스트림 구조

  장치 또는 파일 ———> 입력 스트림 ————> 자바 프로그램

  장치 또는 파일 <——— 출력 스트림<————- 자바 프로그램

 

(4) 스트림의 특성

  • 바이트 단위로 입출력하는 바이트 스트림 : 클래스명이 Stream으로 끝남
  • 문자 단위로 입출력하는 문자 스트림 : 클래스명이 Reader, Writer로 끝남
  • 사용이 끝나면 Close()로 닫아야 메모리 누수(leak) 방지 가능

(5) 스트림의 대분류

  1) 바이트 스트림

     바이트(8비트) 단위로 데이터를 전송하는 방식

     이미지, 영상, 음악

     java.io.InputStram, java.io.OutputStram

  2) 문자 스트림

    자바에서는 char가 2 byte이기 떄문에 한글 전송 등은 바이트 스트림에서 깨짐

    이미지, 영상, 음악은 처리 불가!

    바이트 스트림은 byte[ ], 문자 스트림은 char[ ]

 

(6) InputStream의 메서드

int read()

int read(byte[ ] b)

int read(byte[ ] b, int offset, int len)

 

(7) InputStream의 종류

FileInputStream : 파일

pipeInputStream : 메모리

AudioInputStream : 오디오

ByteArrayInputStream : 프로세스

 

(8) InputStream Exercise

Image, URL(HTML), SequenceInputReader

 

(9) OutputStream

InputStream의 read를 write로 바꾸면 됨

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

Hello World!  (0) 2023.01.18
Swing  (0) 2023.01.09
스레드(Thread)  (0) 2023.01.09
컬렉션 프레임워크 (Collection Framework)  (0) 2023.01.09
기본 클래스(String 외)  (0) 2023.01.09
728x90
반응형
SMALL

(1) 정의

  1) 메모리를 할당받아 실행중인 프로그램을 프로세스라고 함

  2) 프로세스 내의 명령어 블럭

  3) 동시에 수행 가능

 

(2) Thread 클래스

 멀티스레드를 구현할 수 있음

 스레드의 슬립을 예외처리해주어야함

 

  1) 생성방법

  Thread(), Thread(String s)

 

  2) 주요 메서드

   sleep(long mesc) : mesc 동안 아무 일도 하지 않음

   start() : 스레드를 시작 // run을 실행시키기 위해 백그라운드 시킴 바로 run 쓰면 안됨!

   run() : 스레드가 할 일

   supend(), resume() : 중지, 다시 시작

 

(3) Thread 구현 방법

  1) Thread 클래스를 상속

  2) Runnable 인터페이스를 구현

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

Swing  (0) 2023.01.09
스트림(Stream)  (0) 2023.01.09
컬렉션 프레임워크 (Collection Framework)  (0) 2023.01.09
기본 클래스(String 외)  (0) 2023.01.09
예외(Exception) 처리  (0) 2023.01.09
728x90
반응형
SMALL

코딩을 하다가 객체를 저장하고 필요 시에 꺼내쓰는 경우가 많음

가장 간단한 케이스는 [ ] 배열임

 

배열 선언 방법

데이터 타입[] = new 데이터 타입[배열의 길이]

int[] int_array = new int [10];

 

배열은 우리가 들어갈 개수를 알고 있을 때 사용이 편함, 모르면 불가

그렇다고 배열을 1000개씩 만들면 공간의 낭비가 발생

배열에서 데이터를 삭제하면 그 공간은 빈 자리가 됨

 

배열의 문제점 + 알려진 자료구조로 데이터를 추가, 삭제, 검색이 가능하도록

java .util 패키지에 여러 가지 인터페이스와 클래스를 추가 => 컬렉션 프레임워크라고 부름

 

(1) 컬렉션 프레임워크의 대분류

리스트(List), 셋(Ser), 맵(Map)

 

(2) 리스트(List)

객체를 일렬로 늘어놓은 구조

객체를 인덱스로 관리

객체를 저장하면 인덱스는 자동 생성

인덱스로 객체를 검색, 삭제 기능 보유

Array List, Vector, LinkedList

주요 메서드) add( ), set( ), contain( ) get( ) size( ) clear( ) remove( )

 

  1) ArrayList

    ArrayList al = new ArrayList() => 기본으로 10개의 저장소 생성

 

  2) LinkList

   인접 참조를 링크해서 체인처럼 관리

 

*끝에 데이터를 추가하는 경우 ArrayList가 속도가 빠름

*중간에 데이터를 추가하는 경우 LinkList가 속도가 빠름

 

*Iterator

컬렉션 프레임워크 객체에 저장된 데이터에 접근할 수 있는 인터페이스

모든 컬렉션은 iterator로 변환 가능

hasNext() : 다음 데이터가 있는지 체크

next() : 다음 데이터 읽기

remove() : 삭제하기

 

*ListIterator

Iterator 인터페이스를 상속

hasPrevious() : 이전 데이터가 있는지 체크

set() : 데이터 교체

previousIndex() : 이전 데이터의 인덱스

nextIndex() : 다음 데이터의 인덱스

 

(3) Set 컬렉션

  • 중복을 허용하지 않음
  • 저장 순서가 유지되지 않음
  • 대표적인 클래스는 HashSet

(4) Map 컬렉션

  • 키(key)와 값(value)로 구성된 Entry 객체를 저장하는 구조 : key-value store키는 중복 저장이 안됨
  • {name{:{Lee}, {age}:{100}
  • 대표적인 클래스는 HashMap
  • KeySet(), entrySet(), put(), get()

 

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

스트림(Stream)  (0) 2023.01.09
스레드(Thread)  (0) 2023.01.09
기본 클래스(String 외)  (0) 2023.01.09
예외(Exception) 처리  (0) 2023.01.09
인터페이스(Interface)  (0) 2023.01.09
728x90
반응형
SMALL

(1) System

  System.crrenttimeMilis() : 현재 시간을 밀리초 단위로 가져온다.

  특정 시점 기준이어서 읽기는 어려움

  변수1 = crrenttimeMilis();

  실행로직

  변수2 = crrenttimeMilis();

  변수2 - 변수1이 수행시간을 의미함

 

(2) stringBuffer

  String과 다른 점은 String은 값이 바뀔 때마다 새롭게 공간할당

  equals()가 없음 ⇒ toString()이 있음!

  intsert, delete, append

 

(3) Math

  abs() : 절대값

  ceil(), floor() : 올림과 내림

  min(), max() : 최소, 최대

  round(숫자, 소수몇째자리까지?//안쓰면 0이 됨) : 반올림

 

(4) Date, SimpleDateFormat

  Date : 날짜 클래스

  SimpleDateFormat : 날짜, 출력할 모습을 결정할 수 있음

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

스레드(Thread)  (0) 2023.01.09
컬렉션 프레임워크 (Collection Framework)  (0) 2023.01.09
예외(Exception) 처리  (0) 2023.01.09
인터페이스(Interface)  (0) 2023.01.09
String Class  (0) 2023.01.09
728x90
반응형
SMALL

에러 : 컴파일시 발생하는 에러와 런타임시 발생하는 에러가 있음

예외 : 런타임시 발생하는 에러 가운데, 사용자 처리가 가능한 에러

          사용자 처리가 불가능한 사례 : 메모리 부족

 

(1) 예외 처리 방법

try {

예외 후보 구문

}

catch(예외코드){

예외가 발생하면 실행되는 부분

}

finally {

예외가 발생하든지 말든지 실행하는 부분

}

 

(2) 예외 출력

Excetion 계열 e

e.getMessage() :오류에 대한 기본적인 내용을 출력, 상세X

e.toString() “ getMessage 보다는 상세한 예외정보 제공

e.printStackTrace() : 가장 자세한 예외정보 제공 (가장 많이 사용)

 

(3) 사용자 예외 처피

메서드 선언 시에 메서드 ( ) throw Excepition { //예외날 수도 있다.

}

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

컬렉션 프레임워크 (Collection Framework)  (0) 2023.01.09
기본 클래스(String 외)  (0) 2023.01.09
인터페이스(Interface)  (0) 2023.01.09
String Class  (0) 2023.01.09
상속  (0) 2023.01.09
728x90
반응형
SMALL

(1) 사전적 의미

하나의 시스템을 구성하는 2개의 구성요소(하드웨어, 소프트웨어)

또는 두 개의 시스템이 상호 작용할 수 있도록 접속하는 경계

상호 접속하기 위한 하드웨어, 소프트웨어, 조건, 규약 등을 포괄적으로 가리키는 말

 

(2) Java에서의 인터페이스

객체와 객체간의 관계

프로그램과 프로그램을 연결해주는 것

한마디로 요약하면 인터페이스는 [규제]이다.

특정한 규약에 따라서 개발하도록 하는 목적

클래스가 인터페이스를 사용하려면 “반드시” 인터페이스에 정의된 메서드를 구현해야 함

인터페이스의 메서드를 구현하지 않으면 컴파일도 되지 않음!

 

(3) 사용법

[public] interface 인터페이스명 {

[public][static][final] 자료형 상수 = 값;

[public] 리턴타입 메서드명 (매개변수) { };

[public] default 리턴타입 메서드명 (매개변수) {함수내용};

[public] static 리턴타입 메서드명 (매개변수) {함수내용};

}

//[public] default 리턴타입 메서드명 (매개변수) { 함수내용 };

//[public] static 리턴타입 메서드명 (매개변수) { 함수내용 };

//이 두개 때문에 헷갈릴 수있다

 

(4) 간단한 사용예

interface Interface1 {

  public void mtMethod1();

}

class Interface1_Class inplements Interface1 {

  public void mtMethod1() {

 }

}

 

(5) 인터페이스의 특징

  1) 인터페이스와 상속은 다르다.

  2) 상속은 부모 클래스의 기능을 자식 클래스가 물려받는 것

   인터페이스는 자식 클래스의 특정한 메서드가 반드시 존재하도록 강제하는 것

  3) 클래스 선언은 class, 인터페이스 선언은 interface

  4) 클래스 상속은 extends, 인터페이스 구현은 implements

    “클래스가 인터페이스를 구현한다.”

 

예제) 계산기 개발 프로젝트, 시간은 없음

  계산기 클래스 A가 만들고 B는 계산기 클래스를 이용하는 로직 개발

  동시에 개발을 하기 때문에 B는 A가 계산기 클래스를 잘 개발할 것이다 라고 가정하고 진행함

package Day07.Inter2;

public class Calculator implements CalcInterface {
int left, center, right;

public void setOperand(int first, int second, int third) {
	left = first;
	center = second;
	right = third;
}

public int sum() {
	System.out.println(left+center+right);
	return (left+center+right);
}

public double avg() {
	System.out.println((left+center+right)/3.);
	return (left+center+right)/3.;
}

}

  5) 하나의 클래스가 여러 개의 인터페이스를 구현할 수 있음

interface I1 {

void x();

}

interface I2 {

void y();

}

class A i, plement I1,I2 {

void x();

void y();

}

 

  6) 인터페이스도 상속이 된다.

interface I3 {

void x();

}

interface I4 extends I3 {

void z();

}

class B implements I4 {

void z(){ }

void x(){ }

}

 

7) 추가 특징

인터페이스의 멤버는 반드시 public 타입!!

인터페이스는 자신을 구현할 클래스를 어떻게 조작할 것인가를 규정

default, static 접근 제어자를 java 8부터 사용가능

default의 의미 : 메서드를 인터페이스가 구현

                        (라이브러리 업데이트 때문에 만들었음)

static의 의미 : 구현 없이 인터페이스만으로 호출 가능

                        (객체를 만들지 않고도 수행할 수 있음)

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

기본 클래스(String 외)  (0) 2023.01.09
예외(Exception) 처리  (0) 2023.01.09
String Class  (0) 2023.01.09
상속  (0) 2023.01.09
클래스 심화  (0) 2023.01.09

+ Recent posts