전체 글

전체 글

    [Java] final 키워드

    final 변수 final 키워드는 변수를 선언할 때 지정하며, 한 번 초기화된 값은 최종값으로 재할당할 수 없다. (변경 불가) 변경의 범위는 그 변수의 값에 한정된다. 클래스 내의 필드는 초기화를 하지 않으면 자동으로 강제 초기화가 되지만 final 변수는 강제 초기화되지 않는다. (지역 변수, 필드 관계없음) final로 선언된 변수는 초기화될 때 상수 영역에 필드와 값이 복사된다. final 자료형 변수명; // 예시 public class Main { public static void main(String[] args) { final MyClass1 mc = new MyClass1(10, 10); // num1 = 10, num2 = 10 mc.num1 += 10; // '변경의 범위는 그 변수..

    [백준] 10828번 : 스택 [Java - 자바]

    [백준] 10828번 : 스택 [Java - 자바]

    알고리즘 및 자료구조를 공부하면서 복습을 위해 문제를 풀고 있습니다. https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net Stack을 학습 후 스스로 구현할 수 있을까라는 생각에 풀어본 백준 문제 시간 제한이라는 조건을 신경쓰면서 문제 해결 Stack을 구현한 클래스와 실행을 담당할 클래스로 나눠서 문제를 풀었다. Stack 구현 : Stack 예외 처리를 할까 고민했지만.. 별다른 요구사항이 안 보여서 예외처리는 따로 작성 안 ..

    [Java] static 키워드

    [Java] static 키워드

    static 키워드 static은 클래스의 멤버(필드, 메서드, 이너 클래스)에 사용하는 키워드 static 키워드가 붙은 멤버를 '정적 멤버'라고 부르며, 인스턴스 생성 없이 '클래스명.멤버명'만으로 사용할 수 있다. 정적 멤버는 인스턴스를 생성한 후 참조 변수를 통해 사용할 수도 있지만, 정적 멤버임을 나타내기 위해 권장 x 정적 필드 메모리가 독립되어 있다. -> 정적 필드는 클래스 내부에 저장 공간을 지니며, 인스턴스 내부에는 실제 정적 필드의 저장 공간의 주소값만 포함하고 있다. 정적 필드는 객체 간 공유 변수의 성질을 가지고 있다. 이러한 특징으로 정적 필드를 클래스별로 관리하는 '클래스 필드'라고 한다. public class Main { public static void main(Strin..

    [Java] 접근 제어자 public / protected / default / private

    접근 제어자 접근 제어자는 자바 제어자의 한 종류로, 사용 범위를 정의하는 역할을 한다. 접근 제어자는 각 대상에 대해 딱 한 번 정의할 수 있다. 접근 제어자는 클래스, 멤버, 생성자 앞에 위치할 수 있다. 아무것도 지정하지 않으면 default 접근 제어자가 자동으로 설정된다. 멤버 및 생성자의 접근 제어자 멤버 및 생성자에는 public, protected, default(package), private라는 4가지 종류의 접근 제어자를 사용할 수 있다. 접근 제어자 접근 제한 범위 public 접근 제한 없음 protected 동일 패키지 + 다른 패키지의 하위 클래스에서 접근 가능 default 동일 패키지 내에서만 접근 가능 private 동일 클래스에서만 접근 가능 사용 가능 범위 : publ..

    [Java] 이너 클래스

    [Java] 이너 클래스

    이너 클래스(Inner Class) 이너 클래스는 클래스 내부에 포함되는 클래스로, 외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용한다. 이너 클래스를 사용하면 접근 지정자와 관계없이 외부 클래스의 멤버들에 쉽게 접근할 수 있고, 코드의 복잡성을 줄일 수 있다. 또한 외부적으로 불필요한 데이터를 감출 수 있어 캡슐화를 달성하는데 유용하다. 이너 클래스는 인스턴스 멤버 이너 클래스, 정적 멤버 이너 클래스, 지역 이너 클래스로 나뉜다. 이너 클래스도 클래스이기 때문에 바이트 코드(.class) 파일이 생성된다. // 외부 클래스 class Outer { // 인스턴스 멤버 이너 클래스 class Inner { } // 정적 멤버 이너 클래스 static class StaticInner { } vo..

    [Java] 외부 클래스

    외부 클래스(external class) 1개의 자바 소스 파일에는 1개의 public class만 존재할 수 있다. 소스 파일 내의 1개의 public class를 제외한 모든 클래스를 외부 클래스라고 한다. 외부 클래스는 다른 패키지에서 임포트할 수 없으며, 같은 패키지 내에서만 사용할 수 있다. 외부 클래스를 다른 패키지에서 사용하려면 외부 클래스를 별도의 소스파일로 분리 후 public class로 변경해야 한다. public class MyClass1 { // public 클래스, 다른 패키지에서 임포트 가능 ... } class MyClass2 { // 외부 클래스, 다른 패키지에서 임포트 불가능 ... } // ===================== 구분선 ===================..

    [Java] this키워드와 this() 메서드

    this. 키워드 자신이 포함된 클래스의 객체를 가리키는 역할을 하며 this. 키워드를 통해 인스턴스 변수에 접근할 수 있다. 일반적으로 키워드를 생략하면 컴파일러가 자동으로 추가한다. 생략하면 컴파일러가 자동으로 추가하는데 그럼 언제 사용할까? -> 메서드를 선언한 후 매개변수와 인스턴스 변수의 이름이 동일할 때 구분하기 위하여 사용된다. class Cat { String name; int age; double weight; public Cat(String name, int age, double weight) { // 생성자를 통해서 인스턴스를 초기화할 때 // 매개변수와 인스턴스 변수를 구분하기 위해 this. 키워드 사용 this.name = name; this.age = age; this.wei..

    [Java] 생성자

    생성자란 생성자란 인스턴스 변수들을 초기화하는 역할을 지닌 클래스의 내부 구성 요소로 new 키워드와 함께 쓰여 인스턴스를 생성한다. 생성자의 이름은 반드시 클래스명과 동일해야 한다. 생성자는 리턴 타입이 존재하지 않는다. 기본 생성자와 매개변수가 있는 생성자 기본 생성자 : 매개변수가 없는 생성자 기본 생성자란 매개변수가 없는 생성자를 의미함. 모든 클래스는 생성자를 포함하고 있어야 한다. 따라서 클래스 내부에 생성자가 없을 경우 컴파일러가 자동으로 추가함. // 기본 생성자 구조 클래스명(){ ... } class Person() { public Person() {} // 기본 생성자 } class Person() { ... // public Person() {} 클래스 내부에 생성자가 하나라도 없으..