보글보글 개발일지
반응형
[자바의 정석] 지네릭스
코딩기록/자바 2024. 1. 24. 17:00

지네릭스 JDK1.5에서 도입 지네릭스란? 지네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시에 타입체크를 해주는 기능. 객체 타입을 컴파일 시에 체크 -> 객체의 타입 안정성 높이고 형변환의 번거로움을 줄임 타입 안정성 높인다? 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환 되어 발생할 수 있는 오류 줄임. EX) ArrayList와 같은 컬렉션 클래스는 다양한 종류 객체 담을 수 있지만 한 종류의 객체를 담는 경우 더 많다. 한 종류 객체인데도 꺼낼 때 마다 타입체크 하고 형변환 하는 것은 불편. 원하지 않는 종류의 객체 포함되는 것 막을 법 없음. 그래서!! 지네릭스를 쓴다. 지네릭스의 장점 1. 타입 안..

article thumbnail
자바 정렬 방법
코딩기록/자바 2023. 3. 17. 10:55

자바 정렬 방법 1. Compatable 클래스 자체의 정렬 기준을 정하는 것 class A implements Comparable{ public int compareTo(Object obj){ return this.변수 - obj.변수; } } 예시 package algo0317; import java.util.Arrays; import java.util.Comparator; public class ExamComparable { private static final String Comparator = null; public static void main(String[] args) { // TODO Auto-generated method stub Meeting[] ma = new Meeting[3]; m..

[자바의 정석] 클래스 멤버 변수, 인스턴스 멤버 변수 구분하기
코딩기록/자바 2023. 3. 9. 00:30

클래스 멤버 변수, 인스턴스 멤버 변수 구분하기 인스턴스 변수는 인스턴스가 생성될 때마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로 항상 공통된 값을 갖는다. 변수의 종류 선언위치 생성시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 인스턴스 생성되었을 때 지역변수 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) 변수 선언문이 수행되었을 때 클래스 멤버 변수 : static 키워드 사용. 클래스를 통해 접근 클래스 영역에 클래스 로딩되는 시점에 메모리에 생성 프로그램 종료시 삭제 인스턴스 멤버 변수 : static 키워드 사용 X. 객체를 통해 접근 배열처럼 자동 초기화. 힙 공간에 만들어짐..

article thumbnail
[이것이 자바다] Ch6. 클래스
코딩기록/자바 2023. 3. 7. 21:04

객체란? 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것. 속성과 동작으로 구성. 사람은 이름, 나이 등의 속성 + 웃다, 걷다 등의 동작 속성: 필드, 동작: 메소드 객체 모델링: 현실 세계의 객체를 소프트웨어 객체로 설계하는 것 객체의 상호작용: 객체들은 각각 독립적으로 존재, 다른 객체와 서로 상호작용하며 동작 메소드: 객체들 사이의 상호작용 수단 메소드 호출: 객체가 다른 객체의 기능을 이용 도트 연산자: 객체의 필드와 메소드에 접근할 때 필요 객체 지향 프로그래밍: 만들고자하는 완성품인 객체를 모델링, 집합 관계에 있는 부품 객체와 사용관계에 있는 객체를 하나씩 설계한 후 조립 객체 지향 프로그래밍의 특징 캡슐화(Encapsulat..

[이것이 자바다] Ch5. 참조타입
코딩기록/자바 2023. 1. 20. 00:52

참조 타입 : 객체의 번지를 참조 (배열, 열거, 클래스, 인터페이스) 참조타입은 값으로 메모리의 번지를 가짐. 번지를 통해 객체 참조 변수 스택에 생성, 객체는 힙에 생성 메모리 사용 영역 메소드 영역 : 클래스를 클래스 로더로 읽어 클래스 별로 분류 -> JVM시작될 때 생성, 모든 스레드 공유 힙 영역: 객체와 배열 생성. JVM 스택 영역의 변수나 다른 객체의 필드에서 참조 JVM 스택 영역: 각 스레드마다 하나씩 존재, 스레드 시작될 때 할당. 메소드 호출할 때마다 프레임 추가, 메소드 종료되면 해당 프레임 제거. 프레임 내부에 로컬 변수 스택 존재. 문자열 리터럴이 동일하면 string 객체 공유. String name1="신용권"; String name2="신용권"; 위 두 변수는 동일한 객..

[이것이 자바다] Ch4. 조건문과 반복문
코딩기록/자바 2023. 1. 17. 22:38

switch 문은 break꼭 있어야 다음 case실행안함 while은 시작할 때부터 조건식 검사 do while은 우선 블록 내부 실행문 시키고 실행 결과에 따라 반복실행 계속할지 말지 결정 System.in.read()는 하나의 키코드만 읽어서 콘솔에 입력된 문자열 한 번에 읽을 수 없음 Scanner 사용. Scanner scanner = new Scanner(System.in); //Scanner 객체 생성 String inputString = scanner.nextLine(); //nextLine() 메소드 호출

article thumbnail
[이것이 자바다] Ch3. 연산자
코딩기록/자바 2023. 1. 17. 22:03

부호 연산자의 산출 타입은 int형 short result = -s; //컴파일 에러 ++i랑 i=i+1 연산 속도 차이 없다. 컴파일 시 동일한 바이트 코드 생성됨. 정확하게 계산할 때에는 부동소수점 타입 쓰지 않는다. (double, float는 0.1을 정확히 표현 불가) 비교 연산자에서는 연산 수행 전에 타입 변환 -> 피연산자의 타입 일치 시킴 3==3.0 (true) 0.1==0.1f (false) -> 0.1f는 부동 소수점 타입이라 0.1 정확히 표현 불가. 0.100000001~ 이런 값이 되어 0.1보다 큰값이다. String은 참조 타입이라 ==쓰면 원하지 않은 결과 나올 수 있음 string 객체의 문자열만을 비교하고 싶다면 equals() 메소드를 사용 boolean result ..

[이것이 자바다] Ch2. 변수와 타입
코딩기록/자바 2023. 1. 16. 02:44

literal: 소스 코드 내에서 직접 입력된 값 bit 8개 모여 byte int: 4byte (32bit) long: 8byte (64bit) : L(l)을 뒤에 붙여야함 float: 4byte, double: 8byte -> double형이 더 높은 정밀도 가짐 실수 리터럴의 기본 타입: double 타입 변환 자동 타입 변환: 실행 도중에 자동적으로 타입 변환 발생 작은 크기 가지는 타입이 큰 크기 가지는 타입에 저장될 때 발생 byte byteValue = 10; int intValue = byteValue; byte는 1byte, int는 4byte라서 자동 타입 변환! 강제 타입 변환: 큰 걸 작은 그릇에 담을 수 없다. 따라서 쪼개서 한조각만 넣는다. 강제 타입 변환은 캐스팅이라고 하며, ..

[이것이 자바다] Ch1. 자바 시작하기
코딩기록/자바 2023. 1. 16. 01:36

기초부터 쌓기위해.. 빠르게 다시 시작한 자바 공부 자바의 특징 이식성 높다 객체지향 언어 함수적 스타일 코딩 지원 메모리 자동 관리 멀티스레드 쉽게 구현 가능 동적 로딩 지원 - 애플리케이션 실행시 모든 객체 생성X, 객체 필요한 시점에 클래스 동적 로딩해서 객체 생성 오픈소스 라이브러리 풍부 JVM 소스파일 (.java)를 컴파일러(javac.exe)로 컴파일 바이트 코드 파일(.class)생성 JVM 구동 명령어(java.exe)에 의해 JVM에서 해석 해당 운영체제에 맞게 기계어로 번역 JVM이 main() 메소드를 찾아 메소드 블록 실

반응형