전체 글 69

java (generic, 컬렉션 프레임워크)

*generic -자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미 -데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입을 가질 수 있도록 하는 방법 -클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법 컴파일 시에 미리 타입 검사(type check)를 수행하면 다음과 같은 장점을 가진다. -컴파일 시 강한 타입 체크 -타입 변환(casting)을 제거 제네릭 타입 (class, interface) *컬렉션 프레임워크 -자바는 배열의 여러가지 문제점을 해결하고 , 알려진 자료 구조를 바탕으로 객체를 효율적으로 추가, 삭제, 검색 할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와..

java 2022.09.29

java (Wrapper 클래스, Arrays 클래스, StringTokenizer)

*Wrapper 클래스 -프로그램에 따라 기본 타입의 데이터를 객체로 취급해야 하는 경우가 있다. 예를 들어, 메소드의 인수로 객체 타입만이 요구되면, 기본 타입의 데이터를 그대로 사용할 수는 없다. 이때에는 기본 타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해야 한다. -8개의 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 래퍼 클래스(Wrapper class)라고 한다. -래퍼 클래스는 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어 준다. -java.lang 패키지에 포함되어 제공 기본 타입 래퍼 클래스 byte Byte short Short int Integer long Long float Float double Double char Charac..

java 2022.09.28

java (Math 클래스, Date, Calendar 클래스)

*java.lang.Math 클래스 -수학에서 자주 사용하는 상수들과 함수들을 미리 구현해 놓은 클래스 -Math 클래스의 모든 메소드는 클래스 메소드(static method) -객체를 생성하지 않고도 바로 사용할 수 있다. -Math 클래스는 java.lang 패키지에 포함되어 제공 -random() 메소드 0.0 이상 1.0 미만의 범위에서 임의의 double형 값을 하나 생성하여 반환 -abs() 메소드 전달된 값이 음수이면 그 값의 절대값을 반환하며, 전달 된 값이 양수이면 전달 된 값을 그대로 반환 -floor() 메소드 인수로 전달받은 값과 같거나 작은 수 중에서 가장 큰 정수를 반환 -ceil() 메소드 반대로 인수로 전달받은 값과 같거나 큰 수 중에서 가장 작은 정수를 반환 -round(..

java 2022.09.28

java (StringBuffer)

*StringBuffer -문자열을 추가하거나 변경 할 때 사용되는 자료형 -append 메소드를 사용하여 문자열을 추가 -toString() 메소드를 이용하면 String 자료형으로 변경할 수 있다. StringBuilder StringBuffer와 비슷한 자료형으로 StringBuilder가 있다. StringBuilder의 사용법은 StringBuffer의 사용법과 동일 StringBuffer는 멀티 스레드 환경에서 안전하다는 장점이 있고 StringBuilder는 StringBuffer보다 성능이 우수한 장점이 있다. 따라서 동기화를 고려할 필요가 없는 상황에서는 StringBuffer 보다는 StringBuilder를 사용하는 것이 유리 append() 문자열 추가에 사용 됩니다. delete(..

java 2022.09.28

java (object 클래스)

*java.lang.Object 클래스 java.lang 패키지 중에서도 가장 많이 사용되는 클래스 모든 자바 클래스의 최고 조상 클래스 자바의 모든 클래스는 Object 클래스의 모든 메소드를 바로 사용할 수 있다. 필드를 가지지 않으며, 총 11개의 메소드만으로 구성 toString()메소드 -해당 인스턴스에 대한 정보를 문자열로 반환 -이때 반환되는 문자열은 클래스 이름과 함께 구분자로 '@'가 사용되며, 그 뒤로 16진수 해시 코드(hash code)가 추가(객체의 메모리 번지를 이용해 해시 코드 생성) - HashSet, HashMap, Hashtable 등 -16진수 해시 코드 값은 인스턴스의 주소를 가리키는 값으로, 인스턴스마다 모두 다르게 반환 equals() 메소드 -해당 인스턴스를 매개..

java 2022.09.28

java (API 클래스)

*자바 API 자바에서 제공하는 다양한 API는 라이브러리라고도 부른다. java.lang 패키지 -java.lang과 java.util 패키지가 가장 많이 사용 -java.lang 패키지는 자바에서 가장 기본적인 동작을 수행하는 클래스들의 집합 -java.lang 패키지의 클래스들은 import 문을 사용하지 않아도 클래스 이름만으로 바로 사용할 수 있다. Object 자바의 최상위 클래스 System - 표준 입출력 장치로 부터 데이터를 입력 받거나 출력 할 때 사용, 자바의 JVM을 종료 시킬 때 사용, 쓰레기 수집기를 실행 요청 할 때 사용 Class - 클래스를 메모리로 로딩 할 때 사용 String - 문자열을 저장하고 여러가지 정보를 얻을 때 사용 StringBuffer, StringBuld..

java 2022.09.28

java (package, import문)

*패키지(package) -클래스와 인터페이스의 집합 -클래스와 인터페이스를 함께 묶음으로 파일을 효율적으로 관리 -협업 시 서로 작업한 클래스 사이에서 발생 할 수 있는 이름의 충돌 문제도 패키지를 사용하면 피할 수 있다. -자바에서 패키지는 물리적으로 하나의 디렉토리를 의미 -클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스 인식 -자바에서 자주 사용되는 패키지 중 하나인 String 클래스의 패키지 이름은 java.lang.String (java.lang 패키지에 속한 클래스) 패키지의 선언 -패키지 이름은 관례상 소문자로 작성 -숫자로 시작하면 안되고 특수문자는 _와 $만 사용 가능 -java로 시작하는 패키지는 자바 표준 API를 의미 하므로 사용해서는 안됨. 패키지를 사용하는 이유 -비슷..

java 2022.09.27

java (default method, annotation)

*Default Method -인터페이스에 있는 구현 메서드를 의미 -기존의 추상 메서드와 다른 점은 메서드 앞에 default 예약어를 붙인다. -구현부 { }가 있어야 한다. -인터페이스에 선언되지만, 인터페이스에서 사용 할 수 없다. *annotation -어노테이션은 메타데이터라고 볼 수 있다. -메타데이터란 애플리케이션이 처리해야 할 데이터가 아니라, 컴파일 과정과 실행과정에서 코드를 어떻게 컴파일하고 처리 할 것인지 알려 주는 정보이다. @AnnotationName -컴파일러에게 코드 문법의 에러를 체크하도록 정보를 제공 -소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성 할 수 있도록 정보를 제공 -실행 시 특정 기능을 실행하도록 정보를 제공 어노테이션의 종류 -표준(내장)어노테이션..

java 2022.09.27

java (인터페이스)

*인터페이스 -자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 것이다. 하지만 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않는다. -하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이스라는 것을 통해 다중 상속을 지원하고 있다. -인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다. -자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있다. -인터페이스(interface)는 오로지 추상..

java 2022.09.26

java(추상 클래스)

*추상 메소드(abstract method) -자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드 -추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위해 -예를 들면 모듈처럼 중복되는 부분이나 공통적인 부분은 미리 다 만들어진 것을 사용하고, 이를 받아 사용하는 쪽에서는 자신에게 필요한 부분만을 재정의하여 사용함으로써 생산성이 향상되고 배포 등이 쉬워진다. -추상 메소드는 선언부만이 존재하며, 구현부는 작성되어 있지 않다. -작성되어 있지 않은 구현부를 자식 클래스에서 오버라이딩하여 사용하는 것 -추상 메소드 선언 : abstract 반환타입 메소드이름(); *추상 클래스 -하나 이상의 추상 메소드를 포함하는 클..

java 2022.09.26