본문 바로가기

java47

[Java] Java에서 객체지향의 특징 객체지향 프로그래밍(Object Oriented Programming)캡슐화객체를 캡슐로 감싸 내부를 보호하고 외부에서 볼 수 없게 하는 것정보 은닉화를 위해 사용접근 제어자를 이용하여 캡슐화를 구현 상속상위 객체의 속성이 하위 개체에 물려져서, 하위 개체가 상위개체의 속성을 모두 가지고 있음코드의 중복 작성 방지 다형성함수 호출에 대하여 객체에 따라 다른 동작을 할 수 있도록 구성오버로딩, 오버라이딩 2017. 11. 28.
[java] 오토박싱(AutoBoxing) 및 래퍼 클래스(Wrapper Class) 이해 래퍼 클래스(Wrapper Class)기본형 변수도 객체로 다루어져야 하는 경우 래퍼 클래스를 이용Integer age = new Integer(30); 박싱 과 언박싱(Boxing, Unboxing)래퍼 클래스는 불변 객체이기 때문에 새로운 객체의 생성 및 참조만 가능기본자료형을 래퍼클래스로 변경하는 것을 박싱, 그 반대를 언박싱이라고 함JDK 1.5 버전 이상에서는 이를 자동으로 처리자동으로 처리하는 것을 오토박싱(AutoBoxing), 오토언박싱(AutoUnBoxing)이라고 함 2017. 11. 28.
[java] String객체의 불변성, 불변 클래스 불변성(Immutability)객체의 정보가 변하지 않는 것 불변 클래스인스턴스가 변경되지 않는 클래스String, 박싱된 원시 클래스, BigInteger, BigDecimal변하는 클래스보다 설계, 구현 및 사용이 용이메모리 할당String 생성시 JVM에서 상수를 이라는 메모리 공간에 할당새로 생성된 String값은 벼경할 수 없고, 이후 동일한 String 이 생성시 String 풀을 참조GC는 String 풀 영역에서는 동작하지 않음 2017. 11. 28.
[Java] Collections 의 종류와 특징, List, Map, Set, Tree 자바에서 자주 사용하는 자료구조에는 List, Set, Map이 존재한다. List, Set은 Collections 아래 존재하고, Map은 따로 존재한다. - 순서가 있는 저장 공간- 가변적인 저장 공간- 배열은 크기가 정해져 있음- 순서대로 검색하기 때문에 데이터가 뒤에 있는경우 속도가 문제 된다. ArrayListJava 1.2에서 도입된 Collection에서 구현Vector 클래스의 단점인 Thread-Unsafe, 낮은 성능을 보완하기 위해 제공됨인덱스를 통한 아이템의 접근을 지원내부적으로 배열을 가지고 있으며, 사이즈가 늘어날 경우 기존 배열의 데이터를 복사하여 처데이터의 개수가 변하지 않는 경우에 효과적잦은 데이터의 변경은 성능이 하락됨탐색은 빠르지만 추가/삭제가 느림 LinkedList각.. 2017. 11. 17.
[Java] JAVA9 의 특징 JAVA9의 특징에 대하여 정리된 글들이 있어서 찾아서 스크랩 해보았다. - jshell의 제공 - 스크립트 언어와 유사한 shell 제공- JAVA 모듈화 도입 - 필요한 라이브러리만 JAR로 묶어서 경량화 가능 나만 모르고 있던 – Java 9 (Java9 빠르게 훑어 보기)Java 9의 변화와 특징 대충 정리 Java9 특징 훑어보기 from duriepark 유현석 자바9 특징 (Java9 Features) from Chang-Hwan Han 2017. 11. 10.
[java] jar 파일 실행 Main 클래스가 포함된 파일을 jar로 묶어서 아래와 같이 실행한다. -cp에 필요한 클래스 파일을 콜론(:)을 이용하여 입력한다. * 윈도우는 세미콜론(;) 디렉토리 전체를 설정할 때는 *를 이용한다. 주의할 점은 *.jar은 안된다. java -cp jar1:jar2 your.package.MainClass arg1 arg2 java -cp ./*:/usr/lib/* your.package.MainClass args 2017. 7. 27.
[Java] Object와 String 객체의 equals() 비교 자바의 기본 객체 함수 중 하나인 equal() 함수는 객체의 값을 비교하는 연산자이다. == 연산자는 객체의 주소를 비교하고, equals()는 객체의 값을 비교하는 연산자이다. 보통 equals()는 문자열(String)의 값을 비교하는데 많이 사용한다. Object의 equals() 함수는 다음과 같다. 즉, 객체의 주소값을 비교하여 반환한다. public boolean equals(Object obj) { return (this == obj); } 하지만 String 객체의 equals() 함수는 다음과 같다. 문자열의 char 를 하나하나 비교하여 동일하면 true, 다르면 false 를 반환한다. public boolean equals(Object anObject) { if (this == a.. 2017. 3. 22.
[java][jsoup] HTML 파싱을 위한 jsoup 라이브러리 예제 자바에서 HTML 파싱을 위해서 jsoup 라이브러리를 이용하면 된다. 이 라이브러리를 이용하면 html 을 get, post 방식으로 가져오는 것부터 파싱하는 것까지 한번에 처리할 수 있다. Jsoup 홈페이지(https://jsoup.org/)에서 다운로드 해도 되고, 메이븐으로 디펜던시를 추가해도 된다. org.jsoup jsoup 1.10.1 이 라이브러리를 이용하여 다음의 해외축구 사이트의 순위표를 파싱하여 처리해보면다음과 같이 처리할 수 있다. http://score.sports.media.daum.net/record/soccer/epl/trnk.daum https://jsoup.org/ 2016. 11. 9.
[java][프록시] 네트워크 프록시 설정 자바에서 네트워크 프로그래밍을 하는 중에 프록시를 설정하는 방법은 Proxy 클래스를 이용하는 것과 시스템 프로퍼티에 프록시를 설정하는 방법이 있다. 아래의 예에서는 HttpURLConnection 을 이용하는 경우에는 Proxy 클래스를 이용하면 간단하게 처리할 수 있다. 만약 다른 외부 라이브러리를 이용하여 처리하는 경우 해당 라이브러리에 프록시 설정이 없다면시스템 프로퍼티를 이용하여 처리하면 된다. ex) jsoup package sdk.java.web; import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.InetSocketAddress;import .. 2016. 11. 8.
[java][스크랩] JSON 파서 선택하기 서비님이 JSON 라이브러리의 속도 관련해서 분석을 해주셨다. 많이 사용되고 있는 아래의 JSON 파싱 라이브러리 관련해서속도 체크를 한 결과 다음과 같다. JSON.simple ( Yidong Fang )GSON ( Google )Jackson ( FasterXML )JSONP ( Oracle ) 당신의 개발 환경이 빅데이터처리와 같이 주로 큰사이즈의 JSON을 처리해야한다면 Jackson 을 써라. 대용량 환경에서 GSON은 좋지않은 선택임.마이크로 서비스와 분산아키텍처 설정등과 같이 작은 용량의 많은 json 파일을 처리하는 환경이라면 GSON을 써라.대용량과 소용량 모두를 다양하게 처리하는 환경이라면 양쪽에서 2순위 정도를 기록한 JSON.simple 이 좋을수도 있겠다. 나는 작은 용량의 데이터.. 2016. 10. 6.
Tree 구조 트리구조 2016. 5. 24.
[Math] 좌표계의 x, y를 이용한 각도 구하기 Java의 Math 클래스를 이용하여 좌표계의 각도를 구하는 방법은 아래와 같다. 2016. 5. 19.
[개념] 스택(stack)과 힙(heap) 힙[heap]- new 연산을 이용하여 생성되는 객체의 저장 공간 - out of memory 가 발생하는 공간 스택[stack]- 컴파일러에 의해 사이즈가 결정- 지역변수, 매개변수 등을 위한 공간- 메소드가 호출될때 생성되었다가 사라진다. 2016. 2. 16.
[JDK8] Date, Calendar, LocaDateTime 날자 관련 객체들 사용법 Date, Calendar 자바에서는 날짜 관련 처리를 지원하기 위해서 Date, Calendar 객체를 제공한다. Date는 JDK 1.0, Calendar는 JDK 1.1 버전에서 지원되었다. Date 가 좀더 간단하고, 이전 버전과의 호환성을 위해 계속 제공하고 있다. Calendar는 Date 객체의 추상화 버전이라고 할 수 있고, Calendar객체를 이용하는 것을 권장한다. 특정 날짜를 지정하거나, 날짜 연산을 할 경우 Calendar를 사용한다. 또한 Calendar를 사용하여 지역화 처리를 할 수 있다. * JDK8 이전의 Date 객체에는 몇가지 문제점이 존재한다. (http://d2.naver.com/helloworld/645609) - 불변 객체가 아니기 때문에 스레드에서 문제가 발생.. 2015. 6. 9.
[어노테이션] 어노테이션과 리플렉션을 이용한 메소드 실행시간 출력하기 어노테이션과 리플렉션을 이용한 메소드 실행시간 출력 클래스에 PrintTime 어노테이션이 설정된 메소드를 찾아서 실행 시간을 출력한다. 어노테이션 @Target 은 어노테이션이 적용될 타입을 설정한다. Method, Filed 등을 설정할 수 있다. 한번에 여러 개를 적용하는 것도 가능하다. @Retention 은 어노테이션이 적용될 시점을 설정한다. Source, Runtime 등을 적용할 수 있다. 적용 시점에 따라 어노테이션 정보가 안 보일 수도 있다. 리플렉션 Class.forName() 메소드를 이용하여 데이터를 생성한다. 메소드와 메소드의 어노테이션 정보를 확인하여 @PrintTime 어노테이션이 적용된 메소드를 실행하고 실행시간을 출력한다. 테스트로 스트림을 이용한 버전과 for 문을 이용.. 2015. 6. 4.
[알고리즘] 퀵정렬 퀵 소트 퀵소트는 비교정렬의 한 종류이다. 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘이다. 데이터 양이 크고 섞여 있을 경우 가장 빠른 속도를 낼 수 있다. 알고리즘 1. 리스트 가운데서 하나의 원소를 고른다. (이 원소를 피벗이라 한다.) 2. 피벗 앞에는 피벗보다 작은 원소들이 오고, 피벗 뒤에는 큰 원소들이 오도록 피벗을 기준으로 리스트를 둘로 나눈다. 이렇게 피벗의 위치가 정해진다. 3. 피벗의 앞쪽 리스트와 피벗의 뒤쪽 리스트에 대하여 1, 2 를 반복한다. 소스코드[Java] package sdk.java.example.sort; import java.util.Random; public class QuickSort { /** * 퀵 소트 처리 * * @param array * @param.. 2015. 6. 1.
MSSQL 에서 Oracle 에 있는 테이블로 정보를 insert 프로그램 MSSQL의 테이블의 정보를 select 해서, Oracle의 테이블에 insert 하는 예제코드전제 조건은 씨퀄과 오라클 테이블의 칼럼명이 동일해야 한다는 것이다. ResultSetMetaData 를 이용하여 칼럼명을 자동으로 설정한다. 2013. 2. 5.