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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바