728x90

학부 때 배울 때는 ecplipse로 많이 하지만 일할 때는 특히 스프링을 할 때 IntelliJ를 많이 사용함

Enterprise로 개발할 때 Gradle로 개발함


MainClass


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package org.example;
 
class Rectangle extends Shape {
    @Override
    public void draw() {
        System.out.println("사각형을 그리다");
    }
}
class Triangle extends Shape implements IColor {
    @Override
    public void draw() {
        System.out.println("삼각형을 그리다");
    }
 
    @Override
    public void paint() {
 
    }
}
public class MainClass {
    public static void main(String[] args) {
        // Shape shape = new Shape(); // Eroor 개념적으로 존재하기 때문에 객체 생성 X
        Circle circle = new Circle();
        Shape s1 = new Triangle();
        s1.draw();
    }
}
 
cs


IColor


1
2
3
4
5
6
package org.example;
 
public interface IColor {
    public void paint();
}
 
cs


Circle


1
2
3
4
5
6
7
8
9
10
11
12
13
14
package org.example;
 
public class Circle extends Shape implements IColor {
    @Override
    public void draw() {
        System.out.println("원을 그리다");
    }
 
    @Override
    public void paint() {
 
    }
}
 
cs


Wrapper 클래스

자바의 기본 자료형을 객체 타입으로 처리할 수 있도록 만든 클래스이다. 기본 자료형에 대응하는 클래스들이 모두 준비되어 있다. 각 Wrapper 클래스에는 해당 데이터 타입과 관련된 유용한 기능들이 제공된다.


기본형 타입 Wrapper 클래스

byte Byte

short Short

int Integer

long Long

float Float

double Double

char Character

boolean Boolean


Wrapper 클래스는 String과 같이 변수에 대입하는 형태로 사용하거나 new를 이용하여 새로운 객체를 생성하는 형태로 사용한다.

Integer num1 = new Integer(40);

int num3 = num1.intValue();


자바에서는 Wrapper 클래스에 오토 박싱과 언박싱을 지원한다.

Integer num2 = 40; 스택(40) -> 힙(객체) 오토박싱

int num4 = num2; 힙(객체) -> 스택(int) 오토언박싱

new 안 했지만 new한 것처럼 취급


Wrapper 클래스의 주요 메서드

static int MAX_VALUE

int의 표현 가능한 최대 크기의 수

static int MIN_VALUE

int의 표현 가능한 최소 크기의 수

static SIZE

2의 보수 형태로 표현된 정수형의 비트 수

double doubleValue()

int를 double형 데이터로 리턴

static int parseInt(String s)

문자열 숫자를 int형으로 리턴

static Integer valueOf(String s)

문자열을 Integer로 변환


System 클래스

자바 프로그램을 실행하는 것과 관련된 유용한 기능들을 제공한다.


System 클래스는 다음과 같은 세 개의 필드를 제공한다.

static InputStream in

static PrintStream out

static PrintStream err


System.out.println("test");

Scanner scanner = new Scanner(System.in);

System.exit(0);

0은 정상적으로 종료가 되었다는 뜻


주요 메서드

static void exit(int status)

프로그램을 종료(0은 정상, 1은 비정상 종료)한다.

static void gc()

가비지 컬렉션을 수행한다.

static String getenv(String name)

name에 해당하는 시스템 환경 변수값을 가져온다.

static String getProperty(String key)

key에 해당하는 속성값을 리턴한다.

static void setProperty(String key, String value)

key에 해당하는 속성을 설정하고 value값을 넣는다


1
2
3
4
5
6
public class MainClass {
    public static void main(String[] args) {
        System.out.println(System.getenv("JAVA_HOME"));
    }
}
 
cs


날짜 관련 클래스

Date 클래스

Date 클래스는 다음과 같이 인스턴스를 생성한 후 메서드를 호출하여 원하는 기능을 사용하거나 Date 클래스를 지원하는 다른 클래스에 파라미터로 전달하여 원하는 정보를 추출하는 형태로 사용한다.

Date date = new Date();

System.out.println(date);

Calendar 클래스

Calendar 클래스는 추상 클래스로, 객체를 생성할 수 없다. 대신 getInstance() 메서드를 사용하여 시스템의 날짜와 시간 정보를 가져온다.

Calendar cal = Calendar.getInstance();

int year = cal.get(Calendar.YEAR);

int hour = cal.get(Calendar.HOUR_OF_DAY);


Scanner 클래스

Scanner 클래스는 입력 스트림으로, 데이터를 입력받는 클래스이다.

고급 입출력은 자바 I/O에서 제공하는 클래스들을 사용해야 하며, Scanner 클래스는 상대적으로 간단한 입력을 처리하는데 사용한다.

객체를 생성할 때 입력 스트림을 변경하면 키보드 외의 파일, 네트워크 등에서 데이터 입력을 받아올 수 있다.


boolean hasNext()

String next()


Random 클래스

Random 클래스는 난수를 생성하는 클래스이다.

일련의 규칙에 따라 난수를 생성하는 관계로, 객체를 생성할 때 현재 시간 정보를 시드(seed)로 하여 더 유용한 난수 생성이 가능하다. 난수 생성 범위를 지정하면 0부터 시작하므로 1부터 시작해야 할 때는 생성한 난수에 1을 더하도록 한다.


StringTokenizer 클래스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
package org.example;
 
import java.util.StringTokenizer;
 
public class MainClass {
    public static void main(String[] args) {
        String data = "홍길동, 010-123-1234, 서울시 종로구, 학생";
        StringTokenizer st = new StringTokenizer(data, ", ");
        while(st.hasMoreElements()){
            System.out.println(st.nextToken());
        }
    }
}
 
cs


java.text 패키지의 주요 클래스

java.text 패키지는 주로 문자 형태로 구성된 정보의 변환을 지원하는 클래스들로 구성되어 있다.

java.text에서는 SimpleDateFormat과 DateFormat 클래스로 좀 더 간편하게 날짜 및 시간 정보를 처리할 수 있는 기능을 제공

날짜 형식을 지정하는 클래스로 DateFormat과 SimpleDateFormat이 있으며 자바 8에는 java.time API가 새롭게 추가되었다.


DateFormat은 추상 클래스이기 때문에 인스턴스를 만들 수 없고, abstract 메서드인 getInstance() 메서드로 객체를 가져와 필요한 메서드를 호출해야 한다.

SimpleDateFormat은 객체를 생성할 때 파라미터로 원하는 형식을 지정하고 format() 메서드를 호출하면 원하는 정보를 얻을 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class DateTest {
    public static void main(String[] args) {
        DateFormat df = DateFormat.getInstance();
        System.out.println(df.format(new Date()));
 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        System.out.println(sdf.format(new Date()));
    }
}
 
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class DateTest {
    public static void main(String[] args) {
        DateFormat df = DateFormat.getDateInstance(DateFormat.FULL);
        System.out.println(df.format(new Date()));
 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd, h시mm분 a");
        System.out.println("SimpleDateFormat : "+sdf.format(new Date()));
    }
}
 
cs


숫자 형식 지정 클래스

NumberFormat, DecimalFormat


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
 
public class NumberTest {
    public static void main(String[] args) {
        int num1 = 340000000;
        NumberFormat nf1 = NumberFormat.getInstance();
        System.out.println("정수 : "+nf1.format(num1));
        double num2 = 35.8293;
        DecimalFormat df2 = new DecimalFormat("00.##");
        df2.setRoundingMode(RoundingMode.DOWN);
        System.out.println("실수 "+df2.format(num2));
    }
}
 
cs


메시지 형식 지정 클래스

프로그램에서 메시지는 프로그램과 프로그램 또는 시스템과 시스템 사이에 주고받는 의미있는 데이터 구조라고 정의할 수 있다.

프로그램이나 시스템 간에 데이터를 송수신할 때 이용할 수 있고, 규칙화된 문자열 패턴에 데이터를 매핑하는 용도로도 사용한다. 

MessageFormat 클래스는 패턴과 데이터 조합을 쉽게 연결하여 원하는 문자열을 만들 수 있도록 도와준다.


MessageFormat은 문자열 패턴과 로케일 등을 파라미터로 삼아 객체를 생성한 후 format 관련 메서드를 사용하여 원하는 형태로 문자열 메시지를 조합하는 형태를 취한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.text.MessageFormat;
import java.util.Date;
 
public class MessageTest {
    public static void main(String[] args) {
        String msg = "{0,date}일 {0,time}에 {1}에서 {2}과 만나기로 했다";
        Object[] objs = {new Date(), "종로""홍길동"};
        MessageFormat mf = new MessageFormat(msg);
        System.out.println(mf.format(objs));
 
        String from = "홍길동";
        String to = "김기동";
 
        final int CHAT_SEND = 1;
        String location = "HOME";
 
        String chatMsg = "{0}|{1}|{2}-{3}|{4}";
        System.out.println(MessageFormat.format(chatMsg, CHAT_SEND, new Date(), from, to, location));
    }
}
 
cs


배열

int[] values; // 자바 방식

int values[]; // C언어 유사 방식


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
public class ScoreTest {
    public static void main(String[] args) {
        int[] score = new int[3];
        String[] str = {"영어 입력 : ","국어 입력 : ","수학 입력 : "};
        int sum = 0;
        for(int i=0;i<3;i++){
            Scanner sc = new Scanner(System.in);
            System.out.println(str[i]);
            score[i] = sc.nextInt();
            sum += score[i];
        }
        System.out.println("총점 : "+sum+"\n평균 : "+(float)sum/3);
    }
}
 
cs


static 메소드는 가급적 만들지 않기


객체들의 배열

Car[] cars = new Car[5];


각 원소에 들어가는 객체는 따로 생성해야 한다

cars[0] = new Cars();


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Car {
    public int speed;
    public int mileage;
    public String color;
 
    public Car() {
        speed = mileage = 0;
        color = "red";
    }
    public void speedUp() {
        speed += 10;
    }
 
    @Override
    public String toString() {
        return "속도: "+speed+"주행거리: "+mileage+"색상: "+color;
    }
}
public class CarTest {
    public static void main(String[] args) {
        final int NUM_CARS = 5;
        Car[] cars = new Car[NUM_CARS];
 
        for(int i=0;i< cars.length;i++){
            cars[i] = new Car();
            cars[i].speedUp();
            System.out.println(cars[i]);
        }
    }
}
 
cs


2차원 배열


자료구조


연결 리스트

이중 연결 리스트

해시 테이블

스택

트리

그래프


컬렉션 프레임워크


자바에서는 배열 대신에 ArrayList를 많이 사용

삽입 삭제가 자주 일어나면 안 쓰는 게 좋음


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.ArrayList;
 
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList al1 = new ArrayList();
        ArrayList<String> al2 = new ArrayList<String>();
 
        al1.add("홍길동");
        al1.add("몰라요");
//        al1.add(10);
 
        al2.add("현대");
        al2.add("기아");
//        al2.add(100);
        al2.addAll(al1);
 
        for(int i=0;i<al1.size();i++){
            System.out.println(al1.get(i));
        }
        System.out.println("-------------");
        for(String s:al2){
            System.out.println(s);
        }
    }
}
 
cs


HashMap

자바의 딕셔너리

HashMap은 기본적으로 (Key, Value) 쌍으로 데이터를 관리하는 자료구조를 제공한다.

ArrayList와 같은 순차적 접근이나 특정 인덱스를 이용한 접근 방법은 전체 데이터를 차례로 처리하는 데 유리


빠르게 보여주려면 메모리DB를 써야함


728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기