Cute Hello Kitty Kaoani

Language/JAVA

Language/JAVA

[JAVA] Dangling meta character ‘+’ near index 0 에러 해결

String 문자열을 + * / 기호로 나누고 싶을 때, String[] tmp = str.split("+"); 다음과 같이 작성하면 java.util.regex.PatternSyntaxException: Dangling meta character ‘+’ near index 0 에러가 발생한다. 정상적으로 동작하기 위해서는 \\ 을 붙여주면 된다. String[] tmp = str.split("\\+");

Language/JAVA

[JAVA] XML 및 JSON 파싱 (SAX parser, DOM parser, JSON )

XML 은 태그 등을 이용하여 문서나 데이터를 구조화하는 언어이다. xml 태그는 자유롭게 생성하기 때문에 최초 작성자의 의도대로 작성되는지 확인할 필요가 있으며 DTD 또는 Schema를 이용해서 문서의 규칙을 작성한다. 이러한 DTD, Schema를 잘 따른 문서를 "valid 하다" 라고한다. 파싱이란 문서에서 필요한 정보를 얻기 위해 태그를 구별하고 내용을 추출하는 과정이다. 문서의 파싱에는 대표적으로 3가지 방식이 있다 SAX(Simple API for XML) parser 문서를 읽으면서 태그의 시작, 종료 등 이벤트 기반으로 처리하는 방식 빠르고 한 번에 처리하기 때문에 다양한 탐색이 어렵다 DOM(Document Object Model) parser 문서를 전부 로딩한 후 문서 구조 전체를..

Language/JAVA

[JAVA] 자바 스트림 API

자바 스트림 API 표준 API 함수적 인터페이스 사용 자바 스트림 API를 이용하면 컬렉션 List Set Map에 저장된 데이터 연산이 가능 자바 스트림 API 이용 1. 컬렉션 또는 배열에서 스트림 생성 Stream.of(names); Arrays.stream(names); 2. 중간처리 정렬, 중복제거, 필터링, skip, limit, 가공처리 map flatMap 3. 최종처리 반복처리 forEach , 합계, 평균, 최대, 최소, 갯수, 그룹핑, 타입변환 collect 컬렉션 또는 배열에서 스트림 생성 컬렉션에서 생성 List list = Arrays.asList("옥지", "빵빵이", "제니"); // 람다식 list.stream().forEach(t->System.out.println(t)..

Language/JAVA

[JAVA] 표준 API 함수적 인터페이스 - 람다식 및 메서드 참조(Method Reference)

메서드 참조 (Method Reference) 람다식을 더 간략하게 표현 객체생성 Method reference 인스턴스 메서드 호출 Method reference static 메서드 호출 Method reference System.out::printlnt Method reference 표준 API 함수적 인터페이스 Consumer : 파라미터 있고 리턴값 없는 경우 Supplier : 파라미터 없고 리턴값 있는 경우 Function : 파라미터 있고 리턴값 있는 경우 Operator : 파라미터 있고 리턴값 있는 경우 ➜ 파라미터와 리턴타입 동일 Predicate : 파라미터 있고 리턴값 있는 경우 ➜ 리턴값은 boolean Consumer 인터페이스 파라미터 있고 리턴값 없는 경우 accept(T) ..

Language/JAVA

[JAVA] 람다 표현식의 개념과 특징

람다 표현식 개요 하나의 메서드를 갖는 인터페이스를 상속받는 익명클래스를 함수식 형태로 선언하는 것 ( 매개변수 ) -> { 실행문; } 매개변수가 0개라면 빈괄호 반드시 명시 매개변수가 1개라면 ( ) 생략 가능 실행문장이 1개라면 { } 생략 가능 람다식의 리턴값은 return 다음에 지정 람다식의 실행문이 리턴값 하나만 있는 경우는 ()->리턴값 형태로 선언 람다식에서 지역 변수는 읽기만 가능 람다식에서 멤버 변수는 읽기/쓰기 가능 람다 표현식 익명클래스의 추상 메서드를 표현하기 위한 식 반드시 추상메서드는 하나만 존재해야 된다. 두 개 이상인 경우 람다 표현식 사용 불가 💡 @FunctionalInterface 어노테이션을 이용하여 두 개 이상의 추상 메서드가 선언되지 못하도록 강제 (defaul..

Language/JAVA

[JAVA] 컬렉션 Collection API

컬렉션 API 다수의 데이터를 쉽게 처리할 수 있는 표준화 된 방법을 제공하는 클래스이다. 크게 Set List Map의 3가지 타입 API를 제공 참조형만 저장 가능. 기본형은 wrapper클래스 사용 👉 wrapper클래스 바로가기 객체를 저장할 때마다 자동으로 크기가 늘어난다 저장된 객체에 삽입, 삭제, 수정이 가능하다. Set : 순서x 중복x List : 순서o 중복o Map : 키와 값의 쌍으로 저장되고 순서x Set 계열 HashSet : Hash를 사용하여 처리속도가 빠름 LinkedHashSet : HashSet에 추가되는 순서를 유지 TreeSet : 객체의 Hash값에 의한 오름차순의 정렬 유지 List 계열 ArrayList : 순서가 있고 중복 저장가능, 동기화 제공X Linked..

Language/JAVA

[JAVA] 예외(Exception) 처리

예외(Exception) 프로그램 실행 중에 발생되는 의도하지 않은 문제 발생을 의미한다. 예외가 발생되면 프로그램은 비정상종료된다. 예외처리란 예외 발생 시 비정상 종료되는 프로그램을 정상종료로 처리하는 작업을 의미한다. 여기서 예외가 발생된 코드를 수정하는 것은 예외처리가 아니다. 예외처리를 담당하는 예외클래스를 활용한다. 예외 종류 compile checked 예외 예외에 대한 대처 코드가 없으면 컴파일이 진행되지 않음 IOException과 SQLException 계열에 해당 자바I/O 및 데이터베이스 관련 작업을 수행하는 메서드를 사용하기 위해서 반드시 예외처리를 해야 한다. compile unchecked 예외 예외에 대한 대처 코드가 없더라도 컴파일은 진행됨 컴파일시 예외처리 여부를 컴파일러..

Language/JAVA

[JAVA] 유틸리티 클래스 (Utility Class)

String 클래스 String은 한 번 생성하면 변경되지 않는다. 메서드 이용 시 새로운 문자열로 반환한다. 메서드 예시 설명 💡 length s.length() 문자열의 길이 반환 💡 toUpperCase s.toUpperCase() 문자열을 대문자로 변환 💡 toLowerCase s.toLowerCase() 문자열을 소문자로 변환 💡 contains s.contains(s1) 해당 문자열이 포함된다면 true 💡 indexOf s.indexOf(s1) 해당 문자열과 처음으로 일치하는 위치. 포함하지 않는다면 -1 반환 💡 lastIndexOf s.lastIndexOf(s1) 해당 문자열과 마지막에 일치하는 위치 💡 startsWith s.startsWith(s1) 해당 문자열로 시작하면 true 💡..

Language/JAVA

[JAVA] Wrapper Class (래퍼 클래스)

Wrapper Class 란? 자바의 자료형은 기본형 타입과 참조형 타입으로 나누어진다. 🌏기본형&참조형 바로가기 Wrapper class(래퍼클래스)란 8개의 기본 타입에 해당하는 데이터를 객체로 다루기 위해 포장해주는 클래스라고 한다. 래퍼 클래스는 모두 java.lang 패키지에 포함되어 제공된다. // 기본형 타입의 정수를 wrapper class로 객체화 Integer num = new Integer(10); Integer num1 = 10; Wrapper class의 종류 💡기본형 타입 💡래퍼 클래스 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 자동 박싱(au..

Language/JAVA

[JAVA] 추상 클래스와 인터페이스

상속은 객체지향 프로그래밍의 핵심 기능으로서 상속을 적용하면 코드의 재사용성 및 다형성, 오버라이딩 메서드 등과 같은 객체지향적인 프로그램 기법을 적용할 수 있다. 하지만 하위클래스에서 부모의 메서드를 상속받아서 사용하지 않고 자신만의 메서드를 작성하여 사용한다면 상속을 사용하는 장점을 얻을 수 없다. 상속은 강제성이 없기 때문이다. 따라서 객체지향 특징인 재사용성 및 유지보수를 향상시키기 위해서 하위클래스에서 반드시 부모클래스의 메서드를 사용하도록 강제할 필요가 있다. 자바에서는 추상클래스와 인터페이스를 통해 자식클래스들에게 부모의 메서드를 반드시 사용하도록 강제할 수 있다. 추상클래스 (Abstact Class) 추상 클래스(Abstact Class)는 추상 메소드를 선언해 놓고 상속을 통해 자식 클..

Language/JAVA

[JAVA] super super()

자바에서 상속하여 클래스를 사용할 경우 super super() 는 자식클래스가 부모 클래스에 접근하기 위해 사용된다. super 부모클래스의 멤버와 자식클래스의 멤버의 이름이 동일한 경우, 구별할 수 있으며 부모클래스의 멤버에 접근할 때 사용한다. super() 자식클래스에서 명시적으로 부모 생성자를 호출하는 경우 사용한다. 부모클래스에서 선언된 변수인 경우에는 자식클래스에서 초기화하지 않고 super()를 초기화를 할 수 있다. super()은 생성자 코드의 첫 줄에 사용되어야 한다 public class Pet { String name; int age; public Pet() { } public Pet(String name, int age) { this.name = name; this.age = a..

Language/JAVA

[JAVA] 객체지향 프로그래밍(OOP)의 3대 요소 - 캡슐화, 상속, 다형성

객체 지향 프로그래밍 (Object Oriented Programming, OOP)은 각각의 기능들을 객체화하여 main 함수에서 객체화 시킨 기능들을 호출하며 사용하는 프로그래밍 기법으로 캡슐화, 상속, 다형성의 특징을 가지고 있다. 캡슐화 (Encapsulation) 자바에서의 캡슐화란, 값의 보호를 위해 객체의 필드, 메소드를 필요에 의해 감추거나 들어내는 것(은닉성)을 말한다. 필드와 메소드를 보호하는 이유는 외부로부터의 잘못된 접근으로 인해 객체의 데이터나 메소드에 유효하지 않은 값이 들어가서 시스템 전체에 영향을 끼치는 것을 방지하기 위해서이다. 클래스 내의 변수나 함수를 감추거나 드러내는 은닉성은 자바에서 접근제어자를 통해 실형시킬 수 있다. 🎀 접근제어자 public : 모든 클래스에서도 ..

gangintheremark
'Language/JAVA' 카테고리의 글 목록