본문 바로가기

JAVA

(46)
[JAVA] 기초문법 -컬렉션 프레임워크 (ArrayList) 컬렉션 과 맵은 인터페이스임. 컬렉션은 하나의 데이터만 핸들링 맵은 쌍으로 되어 있는 데이터만 핸들링 list는 선형자료구조(순서가 존재, 중복가능) set은 수학의 집합 개념(중복x, 순서의 개념이 없다.) 해시테이블은 동기화 지원 해시맵은 동기화 지원 x properties는 파일에서 데이터를 불러서 key-valuse페어 로 저장하는 기능을 제공 iterator을 이용해서 데이터를 순회할 수 있음. 회원관리 프로그램 멤버 클래스 arraylist로 멤버 관리하기 어레이리스트 클래스 테스트 코드.
[JAVA] 기초문법 - 컬렉션 프레임워크 배열은 fixed-length로 시작함. 인덱스 연산이 가능하다. 시간복잡도 O(1) 첫번째 인덱스는 0부터시작한다. 물리적 위치와 논리적 위치가 같다. 중간에 비어있을 수 없다.(중간 삽입과 삭제할때 연산이 많다. 한칸씩 땡기거나 밀어야하기 때문) 시간복잡도 O(n) 크기가 다 채워져있고 추가하려면 더 큰 배열을 선언하고 기존배열을 복사하는 방식을 사용한다. 자바의 ArrayList가 배열을 구현한 것이다. 링크드리스트 노드 단위로 연결되어 있는 구조이다. 하나의 노드는 값과 다음 노드의 주소 2가지가 저장된다.(가리킬 것이 없으면 null저장) fixed length가 아니다. 물리적 위치와 논리적 위치가 다르다. 논리적으로는 붙어 있지만 논리적으로는 떨어져 있다. 배열의 단점이었던 중간삽입 중간 삭..
[JAVA] 기초문법 - 제네릭 프로그래밍 자바5부터 나온 기술 반환형을 Object 타입으로 설정해서 모든 타입을 받을 수 있게 코딩 가능하다.(단, 형변환이 필수) 방환이 Object이기 때문에 형변환이 필수. ㅡ> 제네릭을 사용하면 형변환을 안해도 사용할 수 있다. 제네릭 사용 클래스 제네릭 클래스 사용법 다음과 같이 제네릭 클래스를 생성하면 Material 클래스를 상속받은 타입만 T에 들어갈 수 있게 제한이 가능하다.
[JAVA] 기초문법 - 기본클래스(2) 문자 하나와 문자열은 다르다. 문자 하나는 char형 자료형이다(기본 2byte) 문자열은 문자의 집합(시컨스)이다. 두 방법은 다른 방법이다. 인스턴스로 생성하면 힙메모리에 저장되고 힙메모리를 가르키는 방식이다. 인스턴스로 생성하지 않는 방식은 상수 풀에 저장하고 그것을 가르키는 방식이다.(프로그램이 로드 될때 생성, 데이터영역, 상수, 스테틱 등이 저장됨) 인스턴스로 생성하면 문자열의 주소를 비교하기 때문에 fasle가 출려된다.(주소가 다르다.) 인스턴스로 생성하지 않으면, 같은 문자열은 같은 주소 이기때문에 true가 출려된다.(상수 풀, 여기서도 주소를 비교하는 것이다.) 두 문자열을 이어붙이는 코드이다. 단, str1에 str2가 붙은 것이 아닌 부 문자열을 붙인 새로운 메모리가 생성되고 그 ..
[JAVA] 기초문법 - 기본클래스 기본 클래스 자바에서 제공해주는 클래스중에 자주 사용하는 클래스들의 설명이다. 모든 클래스는 오브젝트타입으로 형변환이 가능하다. 오브젝트 메서드중에서 final 메서드들은 하위 클래스에서 정의 할 수 없다.(일부 메서드만 재정의 가능) String 클래스의 toString메서드는 문자열을 출력하도록 재정의 되어 있음. 책의 제목과 저자의 이름을 출력하려면 toString 메서드를 정의해서 할 수 있음. 두 인스턴스의 주소 값을 비교하기 위한 메서드이다. 인스턴스가 달라도 논리적으로 같은 객체를 구별하기위해 재정의해서 사용하기도한다. 두 인스턴스의 주소를 비교한다. 결과값은 FALSE 두 문자열이 같은지를 체크한다.(논리적 동일성) 결과같은 TRUE 일반 클래스 인스턴스를 비교하면 위에 두경우 모두 FAL..
[JAVA] 기초문법 - 인터페이스(3) java8부터 디폴트메서드, 정적메서드, private메서드가 추가됨. 디폴트메서드: 구현코드를 가지는 메서드 재정의하지 않으면 디폴트 메서드를 사용할 수 있음. 정적메서드: 인스턴스 생성과 상관 없이 사용 할 수 있음. private 메서드: 인터페이스 내부에서만 사용하기 위해 사용함. 메서드에 구현코드를 삽입 할 수 있지만 그렇다고 해서 인터페이스 인스턴스를 생성하는 것은 불가능 하다. 디폴트 메서드 재정의 디폴트 키워드를 사용한 메서드 calc.description();으로 호출 가능.(해당 인터페이스를 구현하는 클래스의 인스턴스) 디폴트 메서드는 구현하는 클래스에서 재정의 가능하다. static 메서드 사용법 인터페이스이름.메서드명 으로 호출 가능하다. static메서드는 인스턴스의 생성과 상관 ..
[JAVA] 기초문법 - 인터페이스(2) 즉, 클라이언트는 인터페이스정의만 보고 가져다 쓰는 것.(spec), 구현된 방식은 몰라도 사용 가능하다. 인터페이스 정의 인터페이스 구현 클래스1 인터페이스 구현 클래스2 인터페이스 구현 클래스3 테스트코드 사용자에게 입력받아서 타입에 맞는 인스턴스 생성후 업캐스팅 예외처리 부분은 추후에 다룸. 인터페이스만 보고 클라이언트코드 작성가능하다. (인터페이스를 구현한 세부 코드를 몰라도) ㅡ> 다형성 구현 웹에서 DB와 연동할때 자바에서 제공하는 커넥션 또한 인터페이스로 구현 되어있다. JDBC: db가 자바와 연동하기 위해 구현되어야한다는 명세 커넥션,statment 등. ㅡ> 인터페이스 구현은 오라클, mysql 등에서 구현해준다. 오라클 mysql에서 구현해준 .jan 파일을 받아서 사용. 사용자는 오..
[JAVA] 기초문법 - 인터페이스 인터페이스-설계용으로 사용함. 구현코드가 없는(추상메서드) 메서드로 이루어진 클래스 인터페이스 선언 예시 인터페이스에서 멤버변수는 pre컴파일 단계에서 public static final 키워드가 자동삽입됨. 인퍼테이스에서 메서드는 pre컴파일 단계에서 public abstract 키워드가 자동 삽입됨. 즉 인터페이스는 상수와, 추상메서드가 선언됨. 인터페이스에 모든 메서드를 구현하지 않으면 추상클래스가 되어야 한다. 인터페이스를 구현할때는 상속에서 extends를 썼던것과 달리 implements 키워드를 사용해야한다. 인터페이스를 일부 구현하면 추상클래스이다. 위 예시는 인터페이스 일부를 구현한 추상그래슬를 상속받아 나머지 인터페이스 메서드까지 모두 구현한 클래스이다. 자바에서 인터페이스 implem..