본문 바로가기

프로그래밍언어68

[자바의 정석] 11. 컬렉션 프레임웍 - ArrayList 1.2 ArrayList ArrayList는 컬렉션 프레임웍에서 가장 많이 사용되는 컬렉션 클래스일 것이다. 이 ArrayList는 List인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고 중복을 허용한다는 특징을 갖는다. ArrayList는 기존의 Vector를 개선한 것으로 Vector와 구현원리와 기능적인 측면에서 동일하다고 할 수 있다. ArrayList는 Object배열을 이용해서 데이터를 순차적으로 저장한다.(데이터의 저장공간으로 배열을 사용 - 배열기반) ArrayList 소스코드 일부 Object배열을 멤버 변수로 선언하고 있다 선언된 배열의 타입이 모든 객체의 최고조상인 Object이기 때문에 모든 종류의 객체를 담을 수 있다. public class ArrayList extend.. 2023. 8. 6.
[자바의 정석] 11. 컬렉션 프레임웍 - 컬렉션 프레임웍의 핵심 인터페이스 1. 컬렉션 프레임 웍(Collection Framework) 컬렉션 : 여러 객체(데이터)를 모아 놓은 것을 의미 프레임웍 : 표준화, 정형화된 체계적인 프로그래밍 방식 컬렉션 프레임웍이란, ‘데이터 군(群)을 지정하는 클래스들을 표준화한 설계’를 뜻한다. 컬렉션(Collection)은 다수(多數)의 데이터(객체), 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다. JDK1.2부터 컬렉션 프레임웍이 등장 → 모든 컬렉션 클래스를 표준화된 방식으로 다룰 수 있도록 체계화되었다. 컬렉션 프레임웍은 컬렉션, 다수의 데이터(객체)를 다루는 데 필요한 다양하고 풍부한 클래스들을 제공(객체를 다룬다 →저장, 삭제, 검색) *컬렉션 클래스 : 다수의 데이터를 저정할 수 있는 클래스(ex. vect.. 2023. 8. 6.
[자바의 정석] 09. java.lang패키지와 유용한 클래스 (2) - 유용한 클래스 2.1 java.util.Objects클래스 Object클래스의 보조 클래스 모든 메서드가 ‘static’이다. 객체의 비교나 널 체크(null check)에 유용하다. static boolean isNull(Object obj) //해당 객체가 널인지 확인 static boolean nonNull(Object obj) //isNull과 정반대의 일 즉, !Object.isNull(obj)와 같다. requireNonNull() // 해당 객체가 널이 아니어야 하는 경우 사용 static T requireNonNull(T obj) static T requireNonNull(T obj, String message) static T requireNonNull(T obj, Supplier messageSupp.. 2023. 8. 5.
[자바의 정석] 09. java.lang패키지와 유용한 클래스 (1) - java.lang패키지 java.lang패키지는 자바프로그래밍에 가장 기본이 되는 클래스들을 포함하고 있다. 그렇기 때문에 java.lang패키지의 클래스들은 import문 없이도 사용할 수 있게 되어 있다.(String, System 클래스) 1.1 Object클래스 Object클래스의 멤버들은 모든 클래스에서 바로 사용이 가능하다. Object클래스는 멤버변수는 없고 오직 11개의 메서드만 가지고 있다.이 메서드들은 모든 인스턴스가 가져야 할 기본적인 것들 equals(Object obj) 객체자신(this)과 주어진객체(obj)를 비교한다. 같으면 true 다르면 false Object클래스의 equals()는 객체의 주소를 비교(참조변수 값 비교) 매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean값으.. 2023. 8. 5.
[모던 자바스크립트 Deep Dive] 10장 객체 리터럴 10.1 객체란? 자바스크립트는 객체 기반의 프로그래밍 언어, 자바스크립트를 구성하는 "모든 것"이 객체다. 자바스크립트에서 원시값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체다. 원시 타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조다. 원시값은 변경 불가능한 값이지만 객체는 변경 가능한 값이다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키key와 값value으로 구성된다. var person = { name: 'Lee', //=>프로퍼티 age: 20 //프로퍼티 키: 프로퍼티 값 }; 객체는 프로퍼티의 집합 함수도 프로퍼티 값으로 사용할 수 있으며, 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메.. 2023. 8. 5.
[자바의 정석] 07. 객체지향 프로그래밍Ⅱ(3) 6. 추상클래스(abstract class) 6.1 추상클래스란? 미완성(부족한)설계도, 완성되지 못한 채로 남겨진 설계도를 말한다. 클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라,단지 미완성 메서드(추상메서드)를 포함하고 있다는 의미이다. 추상 클래스로 인스턴스는 생성할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.(다른 클래스 작성에 도움을 주기 위한 것) 새로운 클래스를 작성하는데 있어서 바탕이 되는 조상 클래스로서 중요한 의미를 갖는다. 새로운 클래스를 작성할 때 아무 것도 없는 상태에서 시작하는 것보다는 완전하지는 못하더라도 어느 정도 틀을 갖춘 상태에서 시작하는 것이 나음 ex. Tv는 여러 모델이 있지만 이 들의 설계도는 90%가 동일할 것이다. .. 2023. 8. 3.
[자바의 정석] 07. 객체지향 프로그래밍Ⅱ(2) 4. 제어자(modifier) 4.1 제어자란? 제어자(modifier)는 클래스, 변수 또는 메서드의 선언부와 함께 사용되어 부가적인 의미를 부여한다. 접근제어자 public, protected, default, private protected > (defaulte) > private [대상에 따라 사용할 수 있는 접근 제어자] 대상 사용 가능한 접근자 클래스 public, (default) 메서드 public, protected, (default), private 멤버변수 public, protected, (default), private 지역변수 없음 ✏️public 은 파일명과 일치하는 클래스만 사용 가능함 접근 제어자를 이용한 캡슐화 클래스나 멤버, 주로 멤버에 접근 제어자를 사용하는 이유는 클.. 2023. 8. 2.
[모던 자바스크립트 Deep Dive] 9장 타입 변환과 단축 평가 9.1 타입 변환이란? 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환explicit coercion 또는 타입 캐스팅type casting이라 한다. 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것을 암묵적 타입 변환implicit coercion 또는 타입 강제 변환type coercion이라 한다. 타입 변환이란 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것이다. 9.2 암묵적 타입 변환 자바스크립트 엔진은 표현식을 평가할 때 개발자의 의도와는 상관없이 코드의 문맥을 고려해 암묵적으로 데이터 타입을 강제 변환(암묵적 타입 변환)할 때가 있다. 암묵적 타입 변환이 발생하면 문자열, 숫자, 불리언과 같은.. 2023. 8. 1.
[자바의 정석] 07. 객체지향 프로그래밍Ⅱ(1) 1. 상속 두 클래스를 부모와 자식으로 관계를 맺어주는 것 1.1 상속의 정의와 장점 상속이란? 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다.(코드의 재사용) 상속을 통해서 클래스를 작성하다 보면 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. 상속을 구현하는 방법은 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 ‘extends’와 함께 써주기만 하면 된다. class Child extends Parent { } //새로 작성하려는 클래스 Child ( 자손클래스 ) .. 2023. 8. 1.
[모던 자바스크립트 Deep Dive] 8장 제어문 제어문control flow statement은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다. 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다. 8.1 블록문 블록문은 0개 이상의 문을 중괄호로 묶은 것 자바스크립트는 블록문을 하나의 실행 단위로 취급한다. //제어문 var x = 1; if (x < 10){ x++; } //함수 선언문 function sum(a, b){ return a + b; } 8.2 조건문 조건문은 주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정한다. *조건식은 불리언 값으로 평가될 수 있는 표현식 8.2.1 if ... else 문 if ... else 문은 주어진 조건식의 평가결과에 따라 실행할 코드 블록을.. 2023. 7. 31.
[자바의 정석] 06. 객체지향 프로그래밍Ⅰ(2) 4. 오버로딩(overloading) 4.1 오버로딩이란? 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것 4.2 오버로딩조건 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 반환 타입은 영향없다. 4.3 오버로딩 대표적인 예 오버로딩의 예로 가장 대표적인 것은 println메서드이다. println메서드를 호출할 때 매개변수로 지정하는 값의 타입에 따라서 호출되는 println메서드가 달라진다. 같은 일을 하지만 매개변수를 달리해야하는 경우에, 이와 같이 이름은 같고 매개변수를 다르게 하여 오버로딩을 구현한다. 4.4 오버로딩의 장점 기억하기 쉽고 이름도 짧게 할 수 있어서 오류의 가능성을 많이 줄일 수 있다. 메서드 기능 예측 가능, 메서드 이름 절약 가능 생성자 =.. 2023. 7. 31.
[모던 자바스크립트 Deep Dive] 7장 연산자 연산자operator는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산operation 등을 수행해 하나의 값을 만든다. 이때 연산의 대상을 피연산자operand라 한다. 피연산자가 "값"이라는 명사의 역할을 한다면 연산자는 "피연산자를 연산하여 새로운 값을 만든다"라는 동사의 역할을 한다고 볼 수 있다. 7.1 산술 연산자 산술 연산자artithmetic operator는 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산이 불가능한 경우, NaN을 반환한다. 7.1.1 이항 산술 연산자 모든 이항 산술 연산자는 피연산자의 값을 변경하는 부수 효과가 없다.\ 5 + 2; // -> 7 5 - 2; // -> 3 5 * 2; // -> 10 7.1... 2023. 7. 29.