java

정확한 답이 필요하다면 float와 double은 피하라 flat와 double 형은 기본적으로 과학 또는 엔지니어링 관련 계산에 쓰일 목적으로 설계된 자료형이다. 이 자료형들은 이진 부동 소수점 연산을 수행하는데, 이것은 넓은 범위의 값에 대해 정확도가 높은 근사치를 제공하지만 정확한(exact) 결과를 제공하지 않기 때문에 정확한 결과가 필요한 곳에서는 사용하면 안된다 (특히 돈과 관계된 계산) float이나 double로는 0.1 을 비롯한 10의 음의 거듭제곱 수(10^-1, 10^-2 등등)을 정확하게 나타낼 수 없기 때문이다. public static void main(String[] args){ System.out.println(1.03-0.42); System.out.println(1.00..
MyLinkedList 구현 및 분석Java List 인터페이스를 구현한 MyLinkedList를 작성 123public class MyLinkedList implements List { ..}Colored by Color Scriptercs LinkedList(연결리스트)에 대한 간단한 설명자료구조가 연결되었다 함은 노드(node)라는 객체들이 다른 노드에 대한 참조를 포함한 형태로 저장된 것을 의미한다.연결 리스트에서 각 노드는 리스트의 다음 노드에 대한 참조를 포함한다. (연결 구조의 다른 예로는 트리와 그래프가 있음)이때 노드는 둘 이상의 다른 노드에 대한 참조를 포함한다. LinkedList를 구현하려면 일단 Node를 구현해야 하는데, MyLinkedList 안에 inner class로 Nod..
MyArrayList 구현 및 분석Java List 인터페이스를 구현한 MyArrayList를 작성123public class MyArrayList implements List { ...}Colored by Color Scriptercs get 메서드 구현1234567@Overridepublic E get(int index) { if(index = size) { throw new IndexOutOfBoundsException(); } return array[index];}Colored by Color Scriptercs=> get 메서드에 있는 모든 것은 상수 시간 set 메서드 구현123456@Overridepublic E set(int index, E element) { E old = get(inde..
예외처리블랙홀 예외처리=> catch블록을 이용해 화면에 메시지를 출력한 것은 예외를 처리한 것이 아니다.예외를 처리할 때 반드시 지켜야 할 핵심 원칙은 한가지다.모든 예외는 적절하게 복구되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게 통보돼야 한다.123456try{ // .. 로직}catch(SQLException e){ e.printStackTrace(); System.exit(1);}cs(그나마 나은 예외처리.. 시스템 종료) 무의미하고 무책임한 throws=> 기계적으로 throws를 던진다면, 결과적으로 적절한 처리를 통해 복구될 수 있는 예외상황도 제대로 다룰 수 있는 기회를 박탈 당한다. 예외의 종류와 특징예외처리에서 가장큰 이슈는 checked Exception(명시적 처..
Set 구현체 TreeSetTreeSet은 이진검색트리(binary search tree)라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스이다. 이진검색트리는 정렬, 검색, 범위검색(range search)에 뛰어난 성능을 보이는 자료구조이며, '레드-블랙 트리'로 구현되어 있다.(이미지 출처) 이진 트리(binary tree)는 링크드리스트처럼 여러 개의 노드가 서로 연결된 구조로, 각 노드에 최대 2개의 노드를 연결할 수 있으며 '루트(root)'라고 불리는 하나의 노드에서부터 시작해서 계속 확장해 나간다.이진트리의 노드를 코드로 표현하면 다음과 같다.12345Class TreeNode{ TreeNode lfet; // 왼쪽 자식노드 Object element; // 객체를 저장하기 위한 Tre..
Set 구현체 HashSetSet인터페이스를 구현한 가장 대표적인 컬렉션으로, Set의 특징대로 중복된 요소를 저장하지 않는다.HashSet의 특징을 이용하면, 컬렉션 내의 중복된 요소들을 쉽게 제거할 수 있다.(이미지 출처) ArrayList와 같이 List 인터페이스를 구현한 컬렉션과 달리 HashSet은 저장순서를 유지하지 않으므로 저장순서를 유지하고자 하면 LinkedHashSet을 사용해야 한다.123456789101112131415161718192021public class HashSetTest { public static void main(String[] args){ Integer[] intArr = {4, 4, 5, 6, 1, 1, 1, 2, 2, 3, 3, 7, 8,}; // HashSe..
StringBuffer아래의 코드를 살펴보자1234567public String joinWords(String[] words) { String sentence = ""; for(String word : words) { sentence += word; } return sentence;}Colored by Color Scriptercs이 코드는 문자열 배열을 하나로 합쳐서 리턴해주는 함수이다. 언뜻보아서는 아무런 문제가 없어보이지만 이 코드의 실행 시간은 어떻게 될까?간단하게 문자열 길이는 전부 x라고 하고 문자열 개수는 n이라고 해보자. 문자열을 연결할때 마다 새로운 문자열 객체가 만들어지고 (sentence), 연결할 문자열의 값이 문자 단위로 복사된다. 그러므로 첫 번째 루프에서 x개의 문자가 복사되고..
Key 인터페이스JCA에서 지원하는 모든 키는 Java.Security.Key 인터페이스로 추상화된다.Key 인터페이스는 getAlgorithm(), getFormat(), getEncoded() 를 제공하며, 제한된 키정보에 대한 접근만 허용하고 있다.1234567KeyPair keyPair = rsaUtil.generateKeyFair();PrivateKey privateKey = keyPair.getPrivate();PublicKey publicKey = keyPair.getPublic(); log.info("algorithm : {}", privateKey.getAlgorithm());log.info("format : {}", privateKey.getFormat());log.info("encod..
JCA(Java Cryptography Architecture)JAVA에서의 보안 관련 기능 중에서 JCA(Java Cryptography Architecture)는 핵심이라고 할 수 있다.JCA는 프로바이더 구조를 사용하여 보안과 관련된 다양한 API를 제공한다.ex) 전자서명(Digital Signature), 메시지 다이제스트(Message Digest), 인증서 유효성 검사(Certificate Validation), 키생성 등등정확히 말하자면 디자인 패턴은 아니다. Factory 패턴과 유사하나 외부설정에 따라 다른 객체를 생성하는 패턴을 칭한다. (나쁜 패턴이라고 함)하지만 잘 작성된 오픈소스 프로젝트들에서 이러한 구현을 꽤 볼수있다. => 더 알아봐야할듯 설계 원칙JAVA 플랫폼을 기반으로 ..
split은 문자열을 나누는 메서드 이다. public static void main(String[] args){ String str = "가,나,다,라"; String[] splitedStr = str.split(","); // splitedStr {"가", "나", "다", "라" } 위와 같이 동작을 하는데, 특정 문자를 넣으면 정상작동하지 않는 것을 볼 수 있다. public static void main(String[] args){ String str = "가.나.다.라"; String[] splitedStr = str.split("."); // 혹은 str = "가|나|다|라"; splitedStr = str.split("|"); } 위와 같이 정상동작하지 않는 것은, split인자로 들어가는..
깡냉쓰
'java' 태그의 글 목록 (7 Page)