| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- sort
- 백준 16927
- 프로그래머스 도둑질 java
- Codility
- 백준 16935
- 프로그래머스 옹알이 java
- 백준 14391
- 백준 17425
- 프로그래머스 연속된 수의 합 java
- 자바
- 알고리즘
- 네트워크
- Algorithm
- 프로그래머스 네트워크 java
- mysql
- java 내림
- java
- 백준 18290
- java 반올림
- Arrays
- 백준 15661
- 프로그래머스 숫자의 표현 java
- java 올림
- 백준 4375
- time complexity
- 백준 11723
- Math.floor()
- 코딩테스트
- 0으로 채우기
- Math.ceil()
- Today
- Total
목록분류 전체보기 (151)
취미처럼
프로그램 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 것을 에러 또는 오류라 한다. 자바에서는 실행시 발생할 수 있는 프로그램 오류를 에러(error)와 예외(exception) 두 가지로 구분한다. 예외는 에러에 비해 비교적 덜 심각한 상황으로 프로그래머가 관리해야할 예외(exception)와 실행중에 발생하는 에러(runtime exception)로 구분할 수 있다. 예외 클래스는 Throwable을 상속받는다. 자바의 예외 처리는 4가지 방법으로 처리할 수 있다. 1. 예외가 발생한 메서드 안에서 처리(try-catch-finally) 2. 예외가 발생한 메서드를 호출한 곳에서 처리(throws) 3. 강제로 예외를 발생시켜서 처리(throw) 4. 사용자 예외를 생성하여 처리..
자바 객체의 직렬화(Serializable) 자바에서 입출력에 사용되는 것은 스트림이라는 데이터 통로를 통해 이동하는 형태이다. 하지만 객체는 바이트형이 아니라서 스트림을 통해 파일에 저장하거나 네트워크로 전송할 수 없다. 따라서 객체를 스트림을 통해 입출력 하기 위해서는 바이트 배열로 변환하는 것이 필요한데, 이를 직렬화라고 한다. 반대로 스트림을 통해 받은 직렬화된 객체를 원래 모양으로 만드는 과정을 역직렬화라고 한다. 직렬화 조건 1. 기본형 타입(int, char, String, short, double, long, byte 등등)은 직렬화가 가능하다. 2. Serializable 인터페이스를 구현한 객체여야 한다. 3. transient가 사용된 멤버는 전송되지 않는다. 4. 생성자나 메소드는 ..
Pattern, Matcher 자바에서 정규식을 사용하기 위해서는 Pattern, Matcher 클래스 객체가 필요하다. 문자열로 정의한 정규 표현식을 Pattern 객체로 만들기 위해 Pattern 클래스의 compile() 메소드를 사용한다. 컴파일된 패턴은 Matcher 객체를 만드는데 사용되며, Matcher객체는 임의의 입력 문자열이 패턴에 부합되는지 여부를 판단하는 기능을 가지고 있다. Pattern 객체들은 비상태 유지 객체들이기 때문에 여러 개의 Matcher 객체들이 공유할 수 있다. Pattern클래스 주요 메서드 Name Description static Pattern compile(String regex) 주어진 정규표현식으로부터 패턴을 만들어낸다(이를 ‘컴파일 한다’고 표현한다)...
Class Description java.util.Date 특정 날짜를 저장한다. java.util.Calendar 일시에 대한 다양한 조작을 한다. java.text.SimpleDateFormat 지정한 서식에 따라 문자열을 Date 클래스로 변환하거나, 그 반대로 처리한다. Date import java.util.Date; public class Main { public static void main(String[] args) { Date now = new Date(); System.out.println(now); } } Calendar import java.util.Calendar; import java.util.Date; public class Main { public static void mai..
JVM(Java Virtual Machine) JVM(Java virtual machine)은 자바를 실행하기 위한 가상 기계라고 할 수 있다. 여기서 가상 기계란 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것이라고 해석할 수 있습니다. JVM은 Java Byte Code를 OS에 맞게 해석해주는 역활을 한다. Java Compiler가 *.java 파일을 컴파일 하면 .class라는 Java Byte Code로 변환시켜 주며, Byte Code는 기계어가 아니기 때문에 OS에서 바로 실행 되지 않는다. 이 때 JVM이 OS가 이해할 수 있도록 해석해 준다. 자바로 작성된 어플리케이션은 모두 JVM을 통해서 실행되기 때문에 자바 어플리케이션이 실행되기 위해서는 반드시 JVM..
String str= "ABC"; System.out.println(str); str += "DEF"; System.out.println(str); String을 사용하여 DEF를 더하게 되면 기존에 선언된 ABC에 DEF를 더하는 것이 아니라 새로운 메모리에 ABCDEF가 생겨나고 기존에 ABC는 GC(가비지컬렉션)에 의해 삭제가 된다. 따라서 String를 이용하여 지속적으로 문자열을 바꾸는 것은 많은 메모리를 소모하게 된다. 이런 문제를 해결하기 위해 StringBuffer와 StringBuilder 등장하게 되었다. StringBuffer/StringBuilder의 차이 StringBuffer/StringBuffer는 String 과 다르게 동작한다. 문자열 연산 등으로 기존 객체에 공간이 부족하..
어댑터 패턴(Adapter pattern) 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. 어댑터 패턴을 예로 들자면 자바에서 데이터베이스를 접속할 때 사용하는 JDBC를 예를 들 수 있다. JDBC를 통해 다양한 데이터베이스를 접근할 수 있다. /** * Java code sample */ /* the client class should instantiate adapter objects */ /* by using a reference of this type */ interface Stack { void push (T o); T pop (); T top (); } /* DoubleLink..
데코레이터 패턴(decorator pattern) 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다. 데코레이터 패턴은 프록시 패턴과 구현 방법이 같다. 차이점은 프록시 패턴은 클라이언트가최종적으로 돌려 받는 반환값을 조작하지 않고 그대로 전달하는 반면, 데코레이터 패턴은 클라이언트가 받는 반환값에 장식을 덧입힌다. // the Window interface interface Window { public void draw(); // draws the Window public String getDescription(); // returns a description of the Window } // impleme..
빌더 패턴(builder pattern) 빌더 패턴이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다 (생성자 오버로딩) /** "Product" */ class Pizza { private String dough = ""; private String sauce = ""; private String topping = ""; public void setDough(String dough) { this.dough = dough; } public void setSauce(String sauce) { this.sauce = sauce; } public void setTopping(String topping) { this.topping = t..
프록시 패턴(proxy pattern) 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴 이를 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다. 프록시 패턴을 간단하게 정리하자면 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴 import java.util.*; interface Image { public void displayImage(); } //on System A class RealImage implements Image { private String filename; public RealImage(String filename) { this.filename = filename; loadIm..