날짜와 시간 & 형식화 date, time and formatting
·
Language/Java
Date는 날짜와 시간을 다룰 목적으로 JDK1.0부터 제공되어온 클래스입니다. 그러나 Date클래스는 기능이 부족했기 때문에 Calendar라는 새로운 클래스를 JDK1.1부터 제공하기 시작했습니다. 다만 Calendar 클래스도 단점이 존재하기 때문에, JDK 1.8부터 'java.time'패키지라는 기존의 단점들을 개선한 새로운 패키지가 추가되었습니다. Calendar Calendar는 추상클래스로 직접 객체를 생성할 수 없고, 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 합니다. Calendar cal = Calendar.getInstance(); 다음은 Calendar의 get메서드로 받아올 수 있는 값들에 대한 예제입니다. package ch10; import java.util.C..
java.lang패키지와 유용한 클래스
·
Language/Java
java.lang 패키지 java.lang패키지는 자바 프로그래밍에 가장 기본이 되는 클래스를 포함하고 있기 때문에, java.lang패키지의 클래스들은 import문 없이도 사용할 수 있습니다. 다음에 정리할 내용들은 java.lang패키지에 포함되어 있는 대표적인 클래스들입니다. Object 클래스 모든 클래스들의 최고 조상으로, 11개의 메서드를 지니고 있습니다. equals(Object obj) public boolean equals(Object obj){ return (this==obj); } 위의 코드는 Object클래스에 정의되어 있는 equals메서드로, 두 객체의 같고 다름을 참조 변수 값으로 비교합니다. package ch9; class EqualsEx1 { public static v..
예외처리
·
Language/Java
예외처리 - 에러/오류 : 프로그램 실행 중 어떤 원인에 의해서 오작동을 하건 비정상적으로 종료가 되는 경우 - 컴파일 에러 : 컴파일할때 발생하는 에러 - 런타임 에러 : 프로그램 실행 도중 발생하는 에러 - 논리적 에러 : 컴파일도 잘 되고 실행도 잘 되지만 의도한 것과 다르게 동작하는 것 - 자바에서는 실행시 발생할 수 있는 프로그램 오류(런타임 에러)를 에러, 예외 두가지로 구분하였음 - 에러(Error) : 프로그램 코드에 으해서 수습될 수 없는 심각한 오류 ex) OutOfMemory / StackOverflow - 예외(Exception): 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 - 자바에서는 실행 시 발생할 수 있는 오류(Exception과 Error)를 클래스로 정의하였..
객체지향 프로그래밍2
·
Language/Java
01. 상속 - 상속이란, 기존의 클래스를 재 사용하여 새로운 클래스를 작성하는 것이다. - 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고, 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. - 생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다. - 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다. - 다중 상속을 허용하지 않는다. - 조상 클래스만 변경해도 모든 자손 클래스에, 자손의 자손 클래스에까지 영향을 미치기 때문에, 클래스간의 상속 관계를 맺어주면 자손 클래스들의 공통적인 부분은 조상 클래스에서 관리하고 자손 클래스는 자신에 정의된 멤버들만 관리하면 되므로 각 클래스의 코드가 적어져서 관리가 쉬워진다. ..
완독 스터디 - 객체지향 프로그래밍1
·
Language/Java
새로 알게된 사실이나, 중요하다고 생각하는 개념 위주로 정리해보았습니다. JVM 구조 1. 메소드 영역(=클래스 영역, static영역) - 메소드 영역, 클래스 파일의 바이트 코드가 로드되는 곳으로 JVM이 어떤 것들을 실행하려면 그 바이트 코드들이 메모리 공간에 저장이 되어있어야 합니다. JVM은 자바 프로그램에서 특정 클래스가 사용되면 해당 클래스의 클래스 파일을 읽어들여, 해당 클래스에 대한 정보를 메소드 영역에 저장합니다. 그 클래스의 변수도 이 영역에 저장됩니다. 2. 힙영역 - 인스턴스가 생성되는 공간으로, 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성됩니다. 즉 인스턴스 변수들이 생성되는 공간입니다. 3. 스택영역 - 이 메모리는 메서드가 작업을 수행하는 동안 지역변수들과 연산의 ..
직렬화와 역직렬화
·
Language/Java
자바의 직렬화란, java 내부 시스템에서 사용되는 객체나 데이터를 외부에서 사용할 수 있도록 byte형태로 변환하는 것입니다. 역직렬화란 byte로 변환된 Data를 원래대로 Object나 Data로 변환하는 기술로,직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 적재시킵니다. 생성된 바이트는 플랫폼에 독립적이기 때문에 어디에서나 쓰일 수 있으며 한 플랫폼에서 직렬화된 객체는 다른 플랫폼에서 역직렬화를 통해 데이터를 받아올 수 있습니다. 직렬화는 생성한 클래스를 java.io.Serializable 인터페이스를 구현하는 클래스로 만들어야 그 조건이 성립됩니다. Serializable 인터페이스는 메소드도 필드도 없는 마킹 역할을 하는 인터페이스입니다. public class Tako impl..
Java Checked Excpetion, UnChecked Exception
·
Language/Java
자바에서 예외는 전체적으로 Error와 Exception으로 나뉘게 됩니다. Error란 시스템 레벨에서 발생하는 심각한 수준의 오류를 뜻하며, 개발자가 미리 예측할 수 없는 오류입니다. Exception이란 로직 상에서 발생하는 오류로, 개발자가 구현한 코드에서 발생하여 예외를 예측할 수 있으며 미리 예방할 수 있습니다. 이러한 예외 클래스들은 최상위 클래스인 Object를 상속받은 Throwable이라는 클래스를 기반으로 Error와 Exception클래스로 나뉘며, 이때 Exception클래스는 RuntimeException 상속 여부에 따라 CheckedException과 UncheckedException으로 나뉘게 됩니다. RuntimeException의 상속 여부에 따라 CheckedExcep..
자바 - 동일성과 동등성(equals, == )
·
Language/Java
동등성은 실제 인스턴스가 같음을 의미하며, 참조하는 값을 비교하는 == 비교의 값과 같습니다. 동일성은 인스턴스가 가지고 있는 값이 같은 것을 의미하며 동등성 비교는 equals메소드를 통해 구현해야합니다. * == 연산자 : 두 객체가 같은지 검사합니다. - 피 연산자가 원시타입인 경우(int, double, boolean, ...) : 값이 같은지 비교합니다. - 피 연산자가 참조타입인 경우(Integer, Double) : 객체의 주소가 같은지 비교합니다. * (override된) equals() 연산자 : 내용이 같은지 검사합니다. - 피 연산자가 원시타입인 경우 : 내용이 같은지 비교합니다. - 피 연산자가 참조타입인 경우 : 객체의 주소가 같은지 비교합니다. public boolean equa..
SOLID 원칙
·
Language/Java
다음은 객체지향적으로 설계할 때 참고해야 할 5대 원칙입니다. 1. 단일 책임 원칙 (SRP) 모든 클래스는 각각 하나의 책임만 져야 합니다. 클래스는 그 책임을 완전히 캡슐화해야함을 의미합니다. ex ) 특정한 기능을 수행할 목적으로 있는 클래스가 있다면 해당 기능만을 책임져야하고 이를 수정한다고 한다면 그 이유는 해당 기능과 관련되어서만 수정되어야 함 2. 개방-폐쇄 원칙(OCP) - 확장에는 열려있고 수정에는 닫혀있어야 합니다. 기존 코드를 변경하지 않으면서 기능을 추가할 수 있도록 해야합니다. ex ) 캐릭터의 수정은 필요 없고 움직임의 패턴만 재정의하면 됩니다. 3. 리스코프 치환 법칙(LSP) - 자식 클래스는 언제든 부모 클래스를 대체할 수 있어야 한다는 원칙입니다. 4. 인터페이스 분리 원..
takoyummy
'Language' 카테고리의 글 목록 (4 Page)