혼공자
-
싱글톤(Singleton)공부/Java 2024. 1. 12. 20:52
싱글톤 (Singleton) 가끔 프로그램에서 단 하나의 객체만 만들도록 보장해야 하는 경우가 있다. 단 하나만 생성된다고 해서 이 객체를 싱글톤이라고 한다. 싱글톤을 만들기 위해 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야 한다. ※ 생성자를 호출한 만큼 객체가 생성되기 때문 생성자를 외부에서 호출할 수 없도록 하려면 생성자 앞에 private 접근 제한자를 붙여주면 된다. 접근 제한자에 대해서는 나중에 더 자세하게 작성하겠다. 예시 public class ANewDream048 { private static ANewDream048 singleton = new ANewDream048(); private ANewDream048() {} static ANewDream048 getIns..
-
생성자란?공부/Java 2023. 12. 21. 05:00
생성자란? 생성자(Constructor) new 연산자로 호출되는 중괄호 블럭{} 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다. 인스턴스변수들의 초기화에 사용되는 조금 특별한 메서드라고 생각하면 편하다. 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당 ※ 객체 초기화란 필드를 초기화하거나 메서드를 호출해서 객체를 사용할 준비를 하는 것 생성자를 실행하지 않고는 클래스로부터 객체를 만들 수 없다. new 연산자에 의해 생성자가 성공적으로 실행되면 힙 영역에 객체가 생성되고 객체의 메모리 주소가 리턴된다. 리턴된 메모리 주소는 클래스 변수에 저장된다. 생성자의 조건 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. 기본 생..
-
클래스란?공부/Java 2023. 12. 19. 22:27
클래스란? 클래스는 두 자기 용도가 있다. 하나는 라이브러리(API)용이고, 다른 하나는 실행용이다. 라이브러리 클래스는 다른 클래스에서 이용할 목적으로 설계된다. 객체를 생성하기 위한 틀(설계도)로 볼 수 있으며, 속성과 기능으로 정의되어 있다. 실행 클래스는 프로그램의 실행 진입점인 main()메서드를 제공하는 역할을 한다. 클래스의 구성 멤버 필드(Field) (=멤버 변수) 객체의 데이터가 저장되는 곳 생성자와 메서드 전체에서 사용되며, 객체가 소멸되지 않는 한 객체와 함께 존재 필드 선언은 클래스 중활호 블럭{} 어디서든 존재할 수 있다. 하지만 생성자와 메서드 중괄호 블럭{} 내부에는 선언될 수 없다. 이건 로컬 변수가 되기 때문이다. 클래스 외부에서 필드를 사용할 경우 우선적으로 클래스로부터..
-
객체의 생성과 사용공부/Java 2023. 12. 15. 18:55
객체의 생성과 사용 클래스를 선언한 다음, 컴파일을 했다면(이클립스에서는 저장) 객체를 생성할 설계도가 만들어진 셈이다. 클래스로부터 객체를 생성하려면 new 연산자를 사용하면 된다. new는 클래스로부터 객체를 생성시키는 연산자다. new 연산자 뒤에는 생성자가 오는데, 생성자는 클래스() 형태를 가진다. new 연산자로 생성된 객체는 메모리 힙영역에 생성된다. new연산자는 힙 영역에 객체를 생성시킨 후 객체의 주소값을 리턴하도록 되어있다. 이 주소를 참조 타입인 클래스 변수에 저장해두면, 변수를 통해 객체를 사용할 수 있다. 사용 방법 클래스 변수; 변수 = new 클래스(); 클래스 변수 = new 클래스(); ※ 두 방법으로 사용할 수 있다. 예제 public class ANewDream035 ..
-
열거 타입공부/Java 2023. 12. 12. 21:22
열거 타입 열거 타입 열거 타입은 몇 가지로 제한된 상수를 가지는 타입을 말한다. 아래는 7개의 값을 갖는 요일 데이터의 열거 타입 week을 선언한 것이다. 예제 public enum week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public enum 키워드는 열거 타입을 선언하기 위한 키워드며, 반드시 소문자로 작성한다. 열거 타입을 선언하기 위해선 enum 타입 { 상수, 상수, ... } 형태로 선언한다. 해당 열거 타입 이름은 Week이며, 열거 상수는 MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY 이다. ※ 전체가 대문자로 되어 있으면 상수로 취급..
-
향상된 for문공부/Java 2023. 12. 11. 12:56
향상된 for문 배열이나 컬렉션을 좀 더 쉽게 처리하기 위해 주로 사용한다. for문의 괄호()에는 배열에서 꺼낸 항목을 저장할 변수 선언과 콜론(:) 그리고 배열을 나란히 작성한다. 배열 및 컬렉션 항목의 개수만큼 반복하고 자동적으로 for문을 빠져나간다. ※ for문의 반복 횟수는 배열의 항목 수가 된다. 사용 방법 for(ⓑ타입 변수 : ⓐ배열){ ⓒ실행문; } ① for문이 처음 실행될 때 배열(ⓐ)에서 가져올 첫 번째 값이 존재하는지 평가한다. ② 가져올 값이 존대하면 해당 값을 변수(ⓑ)에 저장한다. ③ 실행문(ⓒ)을 실행한다. ④ 블록{} 내부의 실행문(ⓒ)이 모두 실행되면 다시 루프를 돌아 배열(ⓐ)에서 가져올 다음 값이 존재하는지 평가한다. ⑤ 만약 다음 항목이 존재한다면 ⓑ → ⓒ → ..
-
힙 영역과 스택 영역공부/Java 2023. 12. 9. 10:02
힙 영역과 스택 영역 힙 영역(Heap Area) 객체와 배열이 생성되는 영역 여기에 생성된 객체와 배열은 스택 영역의 변수나 다른 객체의 필드에서 참조 만약 참조하는 변수나 필드가 없다면, JVM이 이것을 쓰레기로 취급, 쓰레기 수집기/가비지 콜렉터(Garbage Collector)를 실행시켜 자동으로 제거한다. ※ C언어는 직접 해체해야 하는데 자바는 자동으로 삭제해 줘서 편리함 스택 영역(Stack Area) 메서드가 호출되면 수행에 필요한 만큼의 메모리를 할당받는다. 메서드가 수행을 마치고나면 사용했던 메모리를 반환하고 스택에서 제거된다. 메서드를 호출할 때마다 프레임을 추가(push)하고 메서드가 종료되면 해당 프레임을 제거(pop)하는 동작 수행 마지막에 들어온 게 가장 먼저 나가는 LIFO(..