본문 바로가기

전체 글

(121)
자바 : 객체 배열과 메소드 📗 객체 배열 객체 배열 생성 및 사용 Class Circle{ 변수와 메소드 들... } Circle [] c; // Circle 배열에 대한 레퍼런스 변수 c 선언 c = new Circle[5]; // 레퍼런스 배열 생성 for(int i = 0; i 누구도 사용할 수 없게 된 메모리 Person a, b; a = new Person("손흥민"); b = new Person("페이커"); // b = a로 b를 가리키는 레퍼런스가 하나도 없게 됨 b = a; // b가 가리키던 객체는 '가비지'가 됨 ✅가비지 컬렉션 JVM의 가비지 컬렉터가 자동으로 가비지 수집, 반환 -> 가용 메모리로 반환 가비지 컬렉션 스레드에 의해 수행 - 개발자에 의한 강제 가비지 컬렉션 System.gc(); // 가비지..
자바 : 생성자 📗 생성자 생성자는 객체가 생성될 때 초기화를 위해 실행하는 메소드를 말한다. ✅ 생성자의 특징 - 생성자는 메소드이다. - 생성자 이름은 클래스 이름과 반드시 동일해야 한다. - 생성자는 매개 변수 개수를 달리하여 같은 이름으로 여러개 작성 가능하다. (오버로딩) - 생성자는 new 를 통해 객체를 생성할 때 객체 당 한번 호출 된다. - 생성자의 목적은 객체를 초기화 함에 있다. - 객체가 생성될 때 반드시 호출되기 때문에 따라서 하나 이상 선언되어야 한다. 만약 개발자가 생성자를 작성하지 않으면 컴파일러가 자동으로 기본 생성자를 삽입해준다. 📗 기본 생성자 기본 생성자는 매개 변수가 없고 아무 작업 없이 단순 리턴하는 생성자이다. 디폴트 생성자 라고도 한다. 기본 생성자가 없어도 컴파일 오류가 나지..
자바 : 클래스와 객체 📗 객체 지향 프로그래밍 객체 지향 프로그래밍에서는 모든 데이터를 객체 취급 하며 이러한 객체가 프로그래밍의 중심이 된다. 객체란 우리가 인식할 수 있는 사물이라고 설명할 수 있다. 이런 객체의 속성과 행동을 구체화하는 형태의 프로그래밍을 객체 지향 프로그래밍이라고 한다. ✅ 객체 지향의 특성 - 캡슐화 : 객체를 캡슐로 싸서 내부를 볼 수 없게 하는 것 외부의 접근으로 부터 객체를 보호한다. 자바는 클래스를 이용해 캡슐화를 시도한다. 메소드와 필드는 모두 클래스 내 구현한다. - 상속 : 상위 개체의 속성을 하위 개체가 모두 가지는 것을 말함 자식 클래스가 부모 클래스의 속성을 물려 받고 기능을 확장하는 것 - 다형성 : 같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현 메소드 오버로딩..
자바 : 배열과 예외 처리 📗 배열 (1차원) 배열이란 인덱스와 인덱스에 대응하는 데이터들로 이루어진 구조를 말한다. 같은 타입의 데이터들이 순차적으로 저장되어있다. ✅ 1차원 배열의 생성 단계 자바에선 배열, 클래스, 인터페이스를 생성할 땐 "new" 를 이용해서 동적 생성해야 한다. 1. 배열 선언 단계 int 배열에 대한 레퍼런스 변수를 생성한다. int [] arr; 2. 배열 생성 단계 배열을 생성하고 생성된 배열 주소를 레퍼런스에 넣는다. arr = new[5]; 배열 선언과 함께 초기화도 가능하다. int [] arr = {0, 1, 2, 3, 4}; 📗 레퍼런스 치환과 배열 공유 하나의 배열은 다수의 레퍼런스가 참조 가능하다. 하나의 배열을 다수의 레퍼런스가 참조할 때, 배열 내 값이 다른 레퍼런스가 수행한 명령에 ..
자바 : 자바의 데이터 타입 📗 기본형 타입 기본형 타입은 총 8가지가 존재한다. 기본형 타입은 기본값이 존재하기에 Null 값이 존재하지 않는다. 따라서 Null 값을 이용하고 싶다면 래퍼 (Wrapper) 클래스를 이용해야한다. 분류 저장 가능한 값의 범위 크기 boolean true, false 1byte char 0 ~ 65,535 2byte byte -128 ~ 127 1byte short -32,768 ~ 32,767 2byte int -2,147,483,648 ~ 2,147,483,647 4byte long -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 8byte float (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값 4byte double (1.7 ..
자바 : 자바의 태동 📗 JAVA의 시작 자바는 1991년, 가전기기 어플리케이션 제작 프로젝트인 그린 프로젝트에 의해 초안이 제안되었다. 자바 이전에 사용하던 언어(예. C, C++)들은 플랫폼간 호환성이 없는 언어였고 복잡하며 실행파일이 메모리에 올려져야 실행되어 메모리 관리가 어려웠다. 하지만 가전제품은 적은 메모리를 사용했고 여러 플랫폼들이 있기 때문에 플랫폼 독립적이며 메모리 사용량이 적고 호환성이 좋은 언어가 필요했다. ✔ 자바는 어떻게 호환성 문제를 해결했을까? C나 C++는 플랫폼 종속적이었기 때문에 각각의 플랫폼 마다 컴파일을 해줘야 했다. 하지만 자바는 바이트코드와 JVM (Java Virtual Machine)을 이용하여 플랫폼 종속성 문제를 극복했다. ✔ 바이트코드와 JVM (자바 가상 머신) 이란? 자..
컴퓨터 구조 : 캐시 메모리 📗 캐시 메모리 CPU와 메모리 사이에 위치한 레지스터 보단 용량이 크고 메모리 보단 빠른 SRAM 기반의 저장 장치를 말한다. ✔ 저장 장치들 사이 캐시 메모리의 위치 캐시메모리는 CPU의 연산속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생함 CPU가 매번 메모리에 액세서 하는것은 시간이 오래걸리므로 메모리에서 CPU가 사용할 데이터의 일부를 미리 캐시 메모리로 가져와 사용하자는 취지에서 만들어졌다. 📗 계층적 캐시 메모리 일반적으로 L1, L2 캐시메모리는 코어 내부에, L3 캐시는 코어 외부에 있다. 📗 분리형 캐시 메모리 L1 캐시 메모리를 데이터를 저장하는 L1 캐시메모리인 L1D와 명령어를 저장하는 L1 캐시메모리인 L1I 로 분리한 분리형 캐시 메모리도 존재한다. ✔ 분리형 캐..
컴퓨터 구조 : 메모리의 주소 공간 📗 논리 주소와 물리 주소 CPU와 실행중인 프로그램은 메모리 몇번지에 무엇이 저장되어 있는지 모른다. 왜냐면 메모리에 저장된 값은 시시각각 변하기 때문이다. - 새롭게 실행되는 것 -> 새롭게 적재 - 실행이 끝난 것 -> 메모리에서 삭제 - 같은 프로그램을 실행해도 실행할 때 마다 적재되는 주소가 달라진다. ✔ 왜 시시각각 변하는 걸까? - 프로그램 런타임에 새로운 코드나 라이브러리가 메모리에 동적으로 할당되기 때문이다. - 보안상의 이유도 존재함. 프로세스의 주소 공간을 매 실행마다 무작위로 배치하여, 같은 코드라도 메모리 주소가 예측하기 어렵게 만들어 악성코드나 공격자가 공격하기 어렵게 만듬 -> 운영체제에서 ASLR 사용 ( Address Space Layout Randomization ) - ..

반응형