JAVA1 - 13.2 인스턴스 Instance

2022. 1. 20. 18:18·youtube.com|user|egoing2/JAVA1
728x90


인스턴스 Instance

 

 예제를 통해 알아보자.

 우선 result1.txt 파일에 Hello 1 이라는 텍스트를 JAVA를 이용해서 작성해볼 것이다.

 

 여러 방법이 있지만 PrintWriter라는 Class를 사용할 것이다. PrintWriter는 Math 라는 Class와 사용법이 다르다. 

 

public class InstanceApp {

	public static void main(String[] args){

		PrintWriter p1 = new PrintWriter("result1.txt"); // result1.txt 자리에는 저장하고 싶은 파일명 
       
       	/* PrintWriter에 new를 붙여서 복제본, 아바타 같은 것을 만든다. 
        그리고 복제본을 p1이라는 변수에 담았다. 
        그렇다면 변수에 담겨있는 어떠한 무엇을 PrintWriter라는 Class의 Instance인 것이다.
        이 p1변수에 아무것이나 들어가면 안되기 때문에 PrintWriter라는 Class의 Instance만 들어간다는 뜻에서 
        DataType으로 PrintWriter을 지정해줬다. */
        
	}

}

 

PrintWriter p1 = new PrintWriter("result1.txt"); 를 작성하면 빨간색 밑줄이 생긴다.

 

 

 Math의 경우에는 특별한 조치를 하지 않아도 사용할 수 있다.

그런데 PrintWriter는 JAVA에 내장되어 있기는 하지만 Package를 가져 오는 작업을 해야 한다. 

 

import java.io.PrintWriter; //이 파일 내에서PrintWriter라는 Class는 java.io에 소속되어 있는 것이다.
public class InstanceApp {

	public static void main(String[] args){

		PrintWriter p1 = new PrintWriter("result1.txt");
        
	}

}

 

 

 그래도 빨간색 밑줄이 그어져 있다.

 

 우리가 파일을 읽다보면 예를 들어 파일이 없으면 문제가 될 수 있다. 바로 그러한 경우를 JAVA에서는 예외 상황이라고 하는데 그런 예외 상황을 어떻게 처리할 지에 대해서 우리가 정해야 되는데 예외를 공부하기 이전 까지는 Add throws declaration을 클릭하자.

 

 그리고 IOException - java.io 클릭.

 

 

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
public class InstanceApp {

	public static void main(String[] args) throws IOException {

		PrintWriter p1 = new PrintWriter("result1.txt");
        	p1.write("Hello 1");
		p1.close();

	}

}

 

 이후에 복사해서 p2라는 변수에 result2.text를 담아보자.

그리고 Navigator에서 Refresh를 하면 어떤 일이 일어나는지 보자.

 

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
public class InstanceApp {

	public static void main(String[] args) throws IOException {

		PrintWriter p1 = new PrintWriter("result1.txt");
		p1.write("Hello 1");
		p1.close();
		
		PrintWriter p2 = new PrintWriter("result2.txt");
		p2.write("Hello 2");
		p2.close();		
	}

}

 

 

 result1.txt 와 result2.txt 가 생성된 것을 볼 수 있다.

 

Instance란 무엇인지 원점으로 돌아와 다시 살펴보자.

 

 

 여기서 PrintWriter는 new를 통해서 Instance를 만들었고 그 Instance는 내부적으로 각자의 상태를 가지고 있다.

 여기서의 상태는 p1은 result1.txt, p2는 result2.txt 라는 내부적인 상태를 내장하고 있기 때문에 

p1.write(" "); 는 result1.txt에 대한 것,

p2.write(" "); 는 result2.txt에 대한 것이다. 

 

오른쪽에 Math의 경우에는 일회용의 작업이다. 즉 아주 짧은 맥락의 작업들이다. 

( System.out.println(Math.PI); // 3.14가 필요하다. )

그런데 우리가 어떤 파일을 수정한다는 것은 그 파일 하나만 수정하는 것이 아니라 그 파일에 대한 작업들이 후속으로 여러 개 들어오게 되고 그리고 동시에 여러 개의 파일을 작업하게 될 수도 있다. 

 

 그렇기 때문에 하나의 Class를 사용하기보다는

하나의 Class 앞에 new를 붙여 복제해서 각각의 다른 상태를 가지고 있는 Instance를 만들어서 사용하는 것이 더 효율적일 수 있다.

 


 

 Math 와 PrintWriter 는 어떤 차이가 있는지 메뉴얼을 통해서 살펴보자. 

 

 

 PrintWriter 는 Constructor을 가지고 있다는 것이다.

 

 우리가 어떤 Class를 사용할 때 그 Class를 Instance로 활용하기를 원한다면 Constructor을 갖고 있고,

예재에서 살펴보면 new 뒤에 PrintWriter("result1.txt")가 Constructor 라고 할 수 있다. 

 

 Constructor 앞에 new를 붙이면 Instance가 되고 그 Instance에 어떤 값이 올 수 있느냐를 규제하기 위해서 앞에다가 PrintWriter라고 하는 Class의 이름을 적는다. 

 

 

저작자표시 (새창열림)

'youtube.com|user|egoing2 > JAVA1' 카테고리의 다른 글

JAVA1 - 14.1 나의 앱 만들기 (OT, 기본 기능 구현)  (0) 2022.01.21
JAVA1 - 13.3 상속 Inheritance  (6) 2022.01.20
JAVA1 - 13.1 자바 문서 보는 법 (패키지, 클래스, 변수, 메소드)  (2) 2022.01.20
JAVA1 - 10. 디버거  (0) 2021.12.16
JAVA1 - 9. 프로그래밍 예제 IoT  (3) 2021.12.16
'youtube.com|user|egoing2/JAVA1' 카테고리의 다른 글
  • JAVA1 - 14.1 나의 앱 만들기 (OT, 기본 기능 구현)
  • JAVA1 - 13.3 상속 Inheritance
  • JAVA1 - 13.1 자바 문서 보는 법 (패키지, 클래스, 변수, 메소드)
  • JAVA1 - 10. 디버거
ro117youshin
ro117youshin
코딩 / 외국어공부 (영어, 중국어) / 독서 등 자기계발을 기록합니다.
  • ro117youshin
    Taking an extra step
    ro117youshin
  • 전체
    오늘
    어제
    • 분류 전체보기 (153)
      • DDD (5)
      • JAVA (13)
      • Spring Boot (2)
      • Spring (4)
      • MySQL (1)
      • C (1)
      • Algorithm & Data Structure (34)
        • study (15)
        • programmers (0)
        • boj (18)
        • assignments (1)
      • CS: Computer Science (6)
        • CS50 2019 (4)
        • Network (2)
        • Database (0)
      • Git (3)
      • foreign language (16)
        • English (0)
        • Chinese (16)
      • BOOK (2)
      • ETC (2)
      • youtube.com|user|egoing2 (64)
        • WEB1 - HTML & Internet (5)
        • WEB2 - CSS (9)
        • WEB2 - JavaScript (18)
        • JavaScript Immutability (0)
        • DATABASE1 (4)
        • DATABASE2 MySQL (12)
        • JAVA1 (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발공부
    중국어공부
    나의 앱 만들기
    BOJ
    variable
    최범균
    코딩공부
    HSK6급공부
    알고리즘문제
    JAVA1
    도메인 주도 설계
    Domain Driven Design
    mysql
    조건문
    HSK6급
    HSK6급필수어휘
    DATABASE2
    생활코딩
    백준
    Java
    HSK6급모의고사
    HTML
    javascript
    ddd
    css
    객체
    Java자료구조
    js
    자바
    baekjoon
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ro117youshin
JAVA1 - 13.2 인스턴스 Instance
상단으로

티스토리툴바