Language/JAVA 15

(JAVA)IO

IO(Input & Output) input - 사용자가 프로그램에 데이터 전달하는 것 output - 프로그램이 결과를 내보내는 것 용어 스트림 : 흐르는 데이터 혹은 파이프의 구조 입출력 스트림 : 데이터를 읽고 쓰는 구조를 프로그램의 구조로 만들어 놓은 것 버퍼 : 데이터를 임시적으로 담아두는 공간 노드 : 데이터와 직접적으로 관여하는 필수적인 부분 (Byte, Char, String, File, Piped, Socket, System in) 필터 : 사용하면 성능을 향상시킬 수 있지만 없어도 되는 부분(node이외에는 모두 filter) Stream 자료의 입출력을 도와주는 중간 매개체 입출력 스트림 : Byte단위 전송 입출력 -er(Reader,Writer) : Char단위 전송 연속적인 데이..

Language/JAVA 2023.01.27

(JAVA)예외 처리

예외 처리 예외가 발생할 것을 대비하여 코드상에서 제어하도록 하는 것 에러(Error) 코드 상에서 프로그램 자체적으로 처리할 수 없는 오류 시스템이 종료되어야 할 상황 예외(Exception) Exception은 클래스로 볼 수 있음 (상속받은 다양한 Exception들이 있다) 프로그램 자체적으로 처리할 수 있는 오류 프로그램 실행 중에 발생하는 예외 ex) 0으로 나눌 때, 배열의 범위를 벗어나는 인덱스를 사용할 때 이러한 예외들은 미리 수정할 수 없기 때문에 프로그램 내에서 미리 예외 처리 java.io, java.net , java.sql의 패키지를 사용하려면 무조건 예외처리 필요 CheckedException 컴파일시에 예외 발생하고 반드시 예외 처리를 해야함(try catch or throw..

Language/JAVA 2023.01.26

(JAVA)Getter와 Setter

객체지향프로그래밍에서 객체들의 데이터(멤버변수)를 외부에서 직접적으로 접근하는 것을 방지하기 위해서 Getter와 Setter를 사용하여 접근하는 방법을 사용한다 또한, 외부에서 메소드를 거쳐서 데이터를 변경(Setter)하고 데이터를 읽는 방법(Getter)을 사용하는 것이 좋다. 메소드를 통해서 데이터에 접근하는 것이 좋은 이유는 메소드는 매개변수의 값을 유효한 값만 저장하기 때문에 객체의 무결성을 보장할 수 있기 때문이다. Getter private 접근제한자로 필드를 만들고 필드의 값을 숨긴 채 내부의 값을 꺼낼 때 Setter private 접근제한자로 필드를 만들고 전달 받은 값을 내부에서 변경해 필드에 넣을 때 코드 public class GetSet { //외부에서 접근할 수 없도록 접근제..

Language/JAVA 2023.01.22

(JAVA)인터페이스

인터페이스(Interface) implements 추상클래스 - 미완성된 요소를 포함, 상속강요 인터페이스 - 모든 메서드가 추상 메서드로만 이루어짐(구현이 안된것들로만 구성), 구현강요 인터페이스 내에서 기능은 미구현(ex) void show(); -> public abstract void show(); 값은 상수로 (ex) int a=1 -> public final static int a= 1; 위와 같이 두 방법으로 코드를 작성해도 오류가 나지 않고 각각 두번째의 코드로 인식을 한다. new 예약어로 객체 생성 불가 private 접근제한자 사용 불가 , public 혹은 protected사용 body ({ })를 붙이지 않는다 인터페이스의 추상메서드를 구현하지 않으면, 자식클래스는 추상 클래스가 ..

Language/JAVA 2023.01.20

(JAVA)추상 클래스

추상클래스(abstract) 완전하지 않은 클래스 지금 구현하지 않고 상속 클래스에서 확장하기 위한 클래스 추상클래스를 상속받으려면 추상클래스에 구현된 추상메서드를 반드시 구현해야 한다 추상메서드를 하나이상 가진 클래스 new 예약어를 사용해서 객체생성을 할 수 없다. 추상클래스 내에서 추상메서드 외에 다른 메서드를 사용하기 위해서는 자식클래스에서 추상클래스를 상속받고 추상메서드를 반드시 오버라이드 해야한다. 상속강요와 객체생성을 금지하기 위해 abstract class를 선언하기도 한다. 코드가 작성되는 body가 필요없고 abstract를 붙인 메서드명을 선언해주면 사용이 가능하다. 구조 코드 //부모클래스 public abstract class Computer { public abstract voi..

Language/JAVA 2023.01.19

(JAVA)상속-super, this

상속 부모클래스에서 정의한 속성과 메소드를 자식클래스에서 그대로 사용하는 것 this 현재 클래스의 멤버변수를 지정할 때 사용 현재 클래스의 생성자, 멤버필드 초기화 현재의 클래스에서 외부로부터 변수의 이름이 같은 파라미터를 받을 경우에 현재 클래스의 멤버와 외부로부터 들어온 변수를 구분하기 위해서 this를 사용 super 하위클래스(자식)에서 상속받은 상위클래스(부모)의 멤버변수를 참조할 때 사용 부모의 생성자, 부모 멤버필드 초기화 코드 //부모클래스 public class Parent { public int num1; public int num2; public Parent() { this.num1 = 1; this.num2 = 2; } public Parent(int num1, int num2) ..

Language/JAVA 2023.01.19

(JAVA)객체 지향 프로그래밍(OOP)

OOP(Object Oriented Programming) 객체 지향 프로그래밍 좋은 설계 : 낮은 결합도 -> 연관성이있도록 설계하게 될 경우 하나를 바꾸면 연쇄적으로 다 바꿔야 하는 경우가 생길 수 있다. 3대 개념 1. 은닉화(Encapsulation) 데이터의 보호 목적 접근제한자(private)로 속성들을 만들어 클래스 밖에서 접근하여 변경하지 못하게 함 메서드를 통해서만 멤버필드에 접근가능 은닉화 예시(싱글톤 패턴) public class Singleton { private static Singleton singleton; //멤버필드 private로 접근제한 private Singleton() { } //객체가 생성 되었는지 확인해서 new를 제한하는 메서드 //getSingleton 메서드..

Language/JAVA 2023.01.18

(JAVA)배열

배열 같은 타입의 값을 나열한 것 -> 인덱스의 개념이 필요 참조타입(mutable) : 주소값으로 변경 new사용하지 않아도 객체로 생성 기본타입 배열 선언방법 3가지 1. int[ ] a={1,2,3}; 2. int[ ] b=new int[] {1,2,3}; 3. int[ ] c=new int[3]; 1,2번은 선언 후 초기화 3번은 int형의 3의 크기를 가진 배열이고 값을 초기화하지는 않음 초기화 하지 않을 시 0으로 초기화 (int : 0 , boolean : false, char : \u0000) 참조타입의 경우 null로 초기화 예시 1번과 같은 기본타입 배열은 heap영역에 배열크기만큼 영역을 가지고 기본타입에 맞게 초기화 2차원 배열 int [행] [열] 로 생각하면 이해하기 편함 1. ..

Language/JAVA 2023.01.16

(JAVA)String 메서드(문자열 자르기)

문자열 자르기 Substring 문자열.substring(from,to)의 형태로 인덱스를 기준으로 from~(to-1)까지의 범위 String s="a,b,c,,d"; String subS=s.substring(2,6); System.out.println(subS); //b,c, StringTokenizer 문자열을 일정한 Token으로 잘라서 배열로 저장 클래스로 생성을 해서 메서드를 사용 String s="a,b,c,,d"; StringTokenizer st=new StringTokenizer(s,","); while(st.hasMoreElements()) { System.out.println(st.nextToken()); } a b c d 문자열 s를 보면 c와 d사이에는 ","안에 아무것도 없다..

Language/JAVA 2023.01.13