목록전체 글 (191)
개발자 도전기

캐시 메모리란? 연산 작업을 하는 CPU는 메모리에서 데이터를 불러온다. 하지만 CPU의 처리 속도는 빠르고 메모리의 처리 속도는 느리기 때문에 빠른 CPU의 일처리 속도를 메모리가 따라가지 못해서 문제(병목 현상)이 생긴다. 이를 해결하기 위한 것이 캐시 메모리이다. 캐시 메모리는 CPU와 메모리 사이에 위치하고 있다고 생각하면 된다. 캐시 메모리는 CPU가 메모리에 접근하는 횟수를 줄여 성능을 향상시킨다. 일반적으로 CPU에 캐시 메모리는 2~3개 정도 사용된다. 각각 L1, L2, L3로 구분된다. 숫자가 많아질 수록 더 느려지고 용량이 커진다. Cache Hit, Miss 캐시 메모리의 성능을 평가할 수 있는 방법 중 하나로 Cache Hit ratio가 있다. CPU가 캐시 메모리에 접근했을 때..
1. Getter, Setter를 사용하는 이유 객체의 필드(데이터)를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성(결점이 없는 상태)이 깨질 수 있다. 예를 들어 자동차의 속력은 음수가 될 수 없는데, 외부에서 음수로 변경하면 객체의 무결성이 깨진다. 이러한 문제점 때문에 객체 지향 프로그래밍에서는 외부의 필드 접근을 막고 대신 메소드를 통해 필드에 접근하는 것을 선호한다. 그 이유는 메소드를 통해 데이터를 검증해서 유효한 값만 필드에 저장할 수 있기 때문이다. 이러한 역할을 하는 메소드가 Setter이다. 또, 필드값이 객체 외부에서 사용하기에 부적절한 경우 메소드로 적절한 값으로 변환해서 리턴할 수 있다. 이러한 역할을 하는 메소드가 Getter이다. 2. 작성 방법 필드값을 직접적으로 변경하..
1. 캡슐화 객체 지향 프로그램의 특징 중 하나로는 캡슐화가 있다. 캡슐화는 내부의 클래스 멤버들를 외부로부터 보호하며 필요한 기능만을 외부에 노출시키는 것이다. 이러한 기능을 구현하기 위한 것이 접근 제한자이다. 2. 접근 제한자 접근 제한자란 클래스, 또는 클래스 멤버의 사용 범위를 제한할 수 있도록 한다. 접근 제한자에는 public, protected, default, private가 있다. 이 중 public이 가장 접근 범위가 넓으며 private가 가장 접근 범위가 좁다. 접근 제한자 제한 대상 제한 범위 public 클래스, 필드, 생성자, 메소드 없음 protected 필드, 생성자, 메소드 같은 패키지이거나 자식 객체만 사용 가능 default 클래스, 필드, 생성자, 메소드 같은 패키..
1. final 키워드 final 키워드는 최초 한 번의 값을 저장하면 그 값이 최종값이 되어 더이상 수정할 수 없다. 사용시에는 초기값을 무조건 넣어주어야 하며 그렇지 않으면 컴파일 에러가 발생한다. 초기값을 넣는 방법은 final 필드 선언시에 대입하거나 생성자에서 대입하는 법이 있다. 정적 블록에서도 초기화가 가능하다. 2. 상수 변할 수 있는 변수와 달리 상수는 항상 같은 값을 가진다. 원주율 파이나 지구의 둘레, 혹은 프로그램 안에서 항상 고정된 값을 가지는 수를 상수로 선언한다. 이러한 값들은 인스턴스가 각각 가지고 있을 필요가 없다. 그렇기 때문에 static 키워드를 사용하여 모든 인스턴스가 공유할 수 있도록 한다. 따라서 상수는 변함없는(final) 값이면서 공통된(static) 값이기 ..
오늘은 생성자와 정적 멤버(static)에 대해서 배웠다 https://abc-datatype.tistory.com/68 [JAVA] 클래스 - 생성자(Constructor) 1. 생성자란? 생성자는 객체를 생성한 후 호출되어 객체를 초기화시키는 역할을 한다. 클래스 변수 = new 클래스(); // 클래스() abc-datatype.tistory.com https://abc-datatype.tistory.com/69 [JAVA] 클래스 - 정적 멤버(static) 1. 정적 멤버 자바는 클래스 로더를 이용해서 클래스를 메소드 영역에 저장하고 사용한다. 클래스 파일의 바이트가 로드되는 곳이기 때문에 메소드 영역은 클래스 영역, 스태틱 영역이라고도 한 abc-datatype.tistory.com
1. 정적 멤버 자바는 클래스 로더를 이용해서 클래스를 메소드 영역에 저장하고 사용한다. 클래스 파일의 바이트가 로드되는 곳이기 때문에 메소드 영역은 클래스 영역, 스태틱 영역이라고도 한다. 정적 멤버들은 메소드 영역의 클래스에 고정적으로 위치하는 멤버를 말한다. 그렇기 때문에 정적 멤버는 객체를 생성할 필요 없이 클래스를 통해 바로 사용이 가능하다. 2. 정적 멤버 선언 필드와 메소드는 모두 정적 멤버가 될 수 있다. 정적 멤버를 선언하려면 static 키워드를 앞에 붙여주면 된다. public class Car{ // 정적 필드 선언 static String tire; // 정적 메소드 선언 static void run(){} } 객체마다 가지고 있을 필요가 없는 공용적인 필드는 정적 필드로 선언하는..
1. 생성자란? 생성자는 객체를 생성한 후 호출되어 객체를 초기화시키는 역할을 한다. 클래스 변수 = new 클래스(); // 클래스()
학원을 다니면서 학은제를 병행하고 있는데, 그 중 학점에 필요한 테셋 자격증 시험이 다음주라 바빠졌다 ㅜ 자격증 시험이 끝나면 더 으쌰으쌰해서 블로그에 기록할 만한 것을 준비해야겠다 😂 TIL https://abc-datatype.tistory.com/64 [JAVA] 객체와 클래스 객체 지향 프로그래밍 부품들을 하나씩 조립해서 완성품을 만들듯 부품에 해당하는 객체들을 먼저 만들고, 이 객체들을 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래 abc-datatype.tistory.com https://abc-datatype.tistory.com/65 [JAVA] 클래스 - 필드(field) 필드는 객체의 데이터를 저장하는 역할을 한다. 객체의 데이터는 고유 데이터, 현재 상태 데이터,..
메소드 선언은 객체의 동작을 실행 블록으로 정의하는 것을 말하고, 메소드 호출은 실행 블록을 실제로 실행하는 것을 말한다. 메소드는 객체 내부에서도 호출되지만 다른 객체에서도 호출될 수 있다. 1. 메소드 선언 리턴타입 메소드명 (매개변수, ...) { 실행 블록 } 리턴 타입 메소드가 호출한 곳으로 전달하는 결과값의 타입을 말한다. 리턴값이 없는 메소드는 void로 작성해야 한다, 리턴 타입이 있는 메소드는 반드시 실행 블록 안에서 return 문으로 리턴값을 지정해야 한다. 메소드명 메소드명은 첫 문자를 소문자로 시작하고, 캐멀 스타일로 작성한다 매개변수 (parameter) 매개변수는 메소드를 호출할 때 전달한 매개값을 받기 위해 사용된다. 매개값(argument)는 인자값, 인수라고도 불리며 실제..
필드는 객체의 데이터를 저장하는 역할을 한다. 객체의 데이터는 고유 데이터, 현재 상태 데이터, 부품 데이터가 있다. 1. 필드 선언 필드를 선언하는 방법은 변수를 선언하는 방법과 동일하다. 단, 반드시 클래스 블록에서 선언되어야만 필드 선언이 된다. 타입 필드명 [ = 초기값]; 2. 필드의 기본값 초기값을 제공하지 않을 경우 필드는 객체 생성 시 자동으로 기본값으로 초기화된다. public class C03Field { public static void main(String[] args) { C03Car car1 = new C03Car(); System.out.println(car1.color); // null System.out.println(car1.price); // 0 System.out.pr..