JAVA 61

[java2] #40 - Generic (제네릭)

Generic (제네릭) 프로그램에서 변수를 선언할 때, 메서드에서 매개변수를 사용할 때도 모든 변수는 자료형이 있다. 대부분은 하나의 자료형으로 구현하지만 변수나 메서드의 자료형을 필요에따라 여러 자료형으로 바꿀 수 있다면 프로그램이 훨씬 더 유연해질 것이다. 이처럼 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍 하는 것을 'Generic Programming (제네릭 프로그래밍)' 이라고 한다. '제네릭 프로그램'은 참조 자료형이 변환될 때 컴파일러가 검증을 해 꽤 안정적이다. '컬렉션 프레임워크'의 많은 부분이 이 제네릭으로 구현되어 있다. 컬렉션 프레임워크에 대한 내용 ↓ [JAVA 기본/java2] - [java2] #17 - Collection Frame..

JAVA/JAVA2 2022.11.30

[java2] #39 - TreeSet, TreeMap

Collection Framework는 검색 기능을 강화시킨 TreeSet과 TreeMap을 제공하고있다. 이 컬렉션들은 이진 트리(binary tree)를 이용해서 계층적(tree) 구조를 가지면서 객체를 저장한다. Collection Framework 자료 [JAVA 기본/java2] - [java2] #17 - Collection Framework(Set/List/Map), Iterator [java2] #17 - Collection Framework(Set/List/Map), Iterator 컬렉션 프레임 워크 컬렉션 프레임 워크란 데이터를 저장하는 클래스들을 표준화 한 설계이며 아래 그림과 같이 데이터를 저장하는 구조에 따라 3가지 인터페이스로 구성된다. Set, List, Map은 데 yoon..

JAVA/JAVA2 2022.11.27

[java2] #38 - Templete Method

템플릿 메서드 추상 메서드나 구현된 메서드를 활용해서 코드의 흐름(시나리오)를 정의하는 메서드이며 전체 일을 수행하는 구조를바꾸지 않으면서 특정 단계 수행 내역을 바꾸는 패턴을 의미한다. final 키워드로 선언해 자식 클래스에서 오버라이딩 할 수 없게 만든다. 프레임워크에서 많이 사용하는 설계 패턴이며 추상 클래스로 선언된 부모 클래스에서 템플릿 메서드를 활용해 흐름을 정의하고 자식 클래스에서 다르게 구현되어야 하는 부분은 추상 메서드로 선언해 자식 클래스에서 오버라이딩하도록 한다. 예제 package com.it.abstractClass; public abstract class Car { //자식 클래스에서 반드시 구현되어야 하는 부분은 추상 클래스에서 추상 메소드로 선언한다. public abstr..

JAVA/JAVA2 2022.11.24

[java2] #37 - extends, Override, super

상속 자바에서 상속은 부모클래스의 메서드와 변수가 같은 멤버와 자원을 자식 클래스에서 사용할 수 있음을 의미한다. 상속을 사용하면 중복된 코드를 줄이고 코드의 재사용성을 높여 유지보수가 편리하다. 부모 클래스 : parent class, 기반 클래스, super class, 상위 클래스 자식 클래스 : children class, 후손 클래스, sub class, 하위 클래스 상속을 받게 되면 부모 클래스의 필드, 메서드와 같은 멤버 등을 물려받게 된다. 하지만 접근제어자가 private인 멤버는 불가능하며 부모 클래스와 패키지가 다를 경우 접근제어자가 default인 멤버도 상속 불가능하다. 상속 형식 class 자식클래스명 extends 부모클래스명 { } 자바에서는 하나의 자식클래스가 여러개의 부모..

JAVA/JAVA2 2022.11.24

[java2] #36 - PrintWriter (Text File Write Test)

텍스트 파일에 데이터를 저장하는 printWriter를 사용해 키보드로 입력받은 데이터를 파일에 저장하는 코드를 작성해보자 package com.it.textfileio; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.Scanner; public class TextFileWriteTest { public static void main(String[] args) { Scanner sc = null;//텍스트 파일로 저장할 데이터를 입력받는 Scanner PrintWriter pw = null;//텍스트 파일에 데이터를 저장하는 printWriter String filename = "./src/com/kor..

JAVA/JAVA2 2022.11.23

[java2] #35 - StringTokenizer, DecimalFomat Class

StringTokenizer 사용자가 지정하는 구분자를 경계로 데이터를 분리한다. 구분자를 생략하면 공백과 탭을 기본 구분자로 사용하며 구분자로 구분된 데이터를 Token이라 부른다. BufferedReader 클래스의 메서드로 입력을 읽어들일땐 라인 단위로 읽어들일 수 밖에 없다. 꼭 BufferedReader 클래스 뿐만 아니라도 콤마, 공백을 기준으로 분리하거나 특정 문자에 따라 문자열을 나누고 싶을 때 StringTokenizer를 사용한다. StringTokenizer 생성자 StringTokenizer를 생성하는 방식은 3가지가 있다. //1. 공백 또는 탭으로 문자열 분리 StringTokenizer st = new StringTokenizer(문자열); //2. 구분자(ex: 콤마, 점)를..

JAVA/JAVA2 2022.11.23

[java2] #34 - Memo Project

MemoVO Class : 한 개의 게시물을 기억하는 클래스 글 번호(자동 증가), 이름, 비밀번호, 메모, 작성일 멤버를 선언한다. * 글 번호를 자동 증가하기 위해 증가시켜서 넣어 줄 다른 멤버도 선언한다. 멤버들을 초기화 할 생성자를 선언한다. -> 이름, 비밀번호, 메모를 입력받고 글 번호는 증가, 날짜는 입력 됐을 때의 시간을 넣어준다. 멤버들의 getter & setter 를 선언한다. (단축키 사용) 원하는 출력 형식으로 toString()을 재정의한다. * MemoList에서 전체 게시물을 출력할 때 MemoVO의 toString() 형식으로 출력된다. package com.koreait.memoList; import java.util.Date; //게시글 1건을 기억할 클래스 public..

JAVA/JAVA2 2022.11.19

[java2] #33 - varargs (가변인자)

Java에는 오버로딩(Overloading)이란 개념이 존재한다. 오버로딩은 같은 이름의 메서드를 매개변수의 타입과 개수를 다르게 정의하여 다양한 메서드를 구현하는 것을 의미한다. 먄약 Varargs 클래스에서 String 타입의 매개변수를 1,2,3 개씩 가지는 print() 메서드를 오버로딩 한다고 해보자. 아마 다음과 같이 구현할 것이다. class Varargs { public void print(String s1) { System.out.println(s1); } public void print(String s1, String s2) { System.out.println(s1 + " " + s2); } public void print(String s1, String s2, String s3) {..

JAVA/JAVA2 2022.11.19

[java2] #32 - Date, Calendar, SimpleDateFormat Class

Date Class 날짜 및 시각 정보를 관리하는 클래스로 *java.util.Date에 포함되어있다. 대부분의 메서드가 deprecated로 처리되어 있으므로 현재 사용되지 않지만 기존에 제공되는 API들의 대다수가 Date타입을 사용하고있다. 예시 Date d1 = new Date(); System.out.println(d1); //toString() 생략되어 있음(= 오버라이딩) 현재 날짜 및 시각 정보가 Wed Jun 24 16:02:18 KST 2020 형태로 출력되며 EEE MMM dd HH:mm:ss zzz yyyy 패턴을 사용하여 toString() 메서드가 오버라이딩 됨 Date d2 = new Date(15000000000L); System.out.ptintln(d2) 생성자에 long..

JAVA/JAVA2 2022.11.17

[java2] #31 - ArrayList (개념/사용법)

ArrayList Collection 프레임워크의 일부이며 java.util 패키지에 소속되어있다. 표준 배열보다는 느리지만 배열에서 많은 조작이 필요한 경우 유용하게 사용할 수 있다. List 인터페이스에서 상속받아 사용된다. ArrayList는 객체가 추가되어 용량을 초과하면 자동으로 부족한 크기만큼 용령이 늘어난다. ArrayList 선언 주로 타입으로 선언을 많이하고, 추가로 다른 타입(String, Character) 등의 타입으로 선언이 가능하다 타입을 선언하면 해당 타입의 데이터만 추가가 가능하고 ArrayList를 선언하면서 초기용량 및 초기값을 세팅할 수 있다. ArrayList list = new ArrayList(); // 타입 설정x Object로 사용 ArrayList demo =..

JAVA/JAVA2 2022.11.15