728x90
반응형
SMALL

JAVA의 가장 기본이 되는 내용 42

final

final 키워드는 이름 그대로 끝! 이라는 뜻이다. 변수에 final이 붙으면 더이상 값을 변경할 수 없다. 정의를 모르는게 아니고 약간 헷갈릴 수 있는 부분들이나 알아두면 코드에 더 도움이 되는것들을 적어봤다. 다음 코드를 보자. Final public class Final { private final int value = 10; public Final(int value) { this.value = value; } } 이 코드는 에러를 발생시킨다. 왜냐하면 'value'라는 변수에 final 키워드가 붙었고 선언과 동시에 초기화를 해줬다. 그럼 그 이후에 어디서도 이 값을 변경할 수 없는데 생성자에서 받은 값을 대입하려고 하고 있기 때문이다. 그래서 저 코드는 다음과 같이 수정할 수 있다. publi..

자바 메모리 구조 ✨

참고 자료: 김영한의 실전 자바 - 중급 1편 | 김영한 - 인프런 김영한 | 실무에 필요한 자바의 다양한 중급 기능을 예제 코드로 깊이있게 학습합니다., [사진]국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 www.inflearn.com 메서드 영역 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다. 클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드등 모든 실행 코드가 존재한다. static 영역: static 변수들을 보관한다. 런타임 상수 풀: 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관한다. 예를 들어서 프로그램에 "hello"라는 리터럴 문자가..

캡슐화

참고 자료: 김영한의 실전 자바 - 중급 1편 | 김영한 - 인프런 김영한 | 실무에 필요한 자바의 다양한 중급 기능을 예제 코드로 깊이있게 학습합니다., [사진]국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 www.inflearn.com 캡슐화는 객체 지향 프로그래밍의 중요한 개념 중 하나다. 캡슐화는 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어서 외부에서의 접근을 제한하는 것을 말한다. 캡슐화를 통해 데이터의 직접적인 변경을 방지하거나 제한할 수 있다. 캡슐화는 쉽게 이야기해서 속성과 기능을 하나로 묶고, 외부에 꼭 필요한 기능만 노출하고 나머지는 모두 내부로 숨기는 것이다. 캡슐화는 그러니까 두가지 파트로 나뉘어지는데, 1. 속성과 기능..

Class 레벨의 접근제어자

기본적으로 접근제어자 개념은 이해하고 있지만 클래스 레벨에 붙는 접근제어자 개념이 빈약한것 같아 기록한다. 우선 접근제어자는 총 4개가 있다. public, private, default, protected. public: 모든 외부의 접근을 허용 private: 같은 클래스말고는 모두 허용하지 X default: 같은 패키지 안에서만 접근 허용 protected: 같은 패키지 안에서만 접근 허용, 다른 패키지에서는 근본적으로 접근 불가하지만 상속받은 경우 접근이 가능 근데 클래스에서는 딱 2개 public과 default만 사용할 수 있다. 규칙이다. 그리고 그 외 규칙이 더 있다. 한 파일당 클래스 레벨에서 public은 무조건 딱 하나만 있을 수 있다. public 클래스와 파일명은 반드시 같아야 ..

Package에서 딱 하나 헷갈리는 한가지

진짜 어려울 게 하나도 없는 Package 개념에서 헷갈리는 딱 한가지만을 정리하고자 한다. 보통 패키지 구조는 다음과 같다. a b c d e f 그리고 이 구조는 파일시스템에서 디렉토리의 구조와 백퍼센트 일치해야 한다. 근데 이게 중요한게 아니고 이 구조라면 패키지는 몇개일까? 6개다. a/a.b/a.c/a.c.d/a.c.e/a.c.f 즉, a안에 b가 있으면 a 패키지에 포함 아닌가요? 절대 아니다. a랑 a.b랑은 완전히 다른 패키지이다. 사람이 볼때야 저게 a안에 b처럼 보이지만 자바는 둘을 완전히 다른 패키지로 판단한다. 이것만 좀 주의. 그래서 실제로 만약 특정 클래스에서 a.c와 같은 구조를 가진 패키지 전체를 임포트해도 a.c.d 패키지안에 있는 클래스 사용하려면 따로 임포트해야 한다. ..

생성자 - this()와 오버로딩

생성자 개념은 익숙하다고 해도 오버로딩 시 this()를 사용하는 경우가 어떤 경우가 있는지 좀 명확하게 하기 위해 작성을 해본다. 예를 들어, 다음과 같은 코드가 있다고 해보자. Student public class Student { private String name; private int age; private int grade; public Student(String name, int age) { this.name = name; this.age = age; this.grade = 0; } public Student(String name, int age, int grade) { this.name = name; this.age = age; this.grade = grade; } public Strin..

객체 지향 프로그래밍

나는 이게 항상 헷갈렸다. 그래서 객체 지향 프로그램은 절차 지향이랑 뭐가 다른데? 비슷한거 같은데 왜 분리 해놓은거야? 이 두 단어의 의미는 알고 있다. 두 단어의 의미는 다음과 같다. 절차 지향 프로그래밍: 순차적으로 프로그래밍이 실행된다. 작성한 코드의 순서에 중점을 두고 진행된다. 객체 지향 프로그래밍: 프로그램의 동작이나 특정 행위를 객체를 중심으로 코드를 작성하고 그에 맞춰 프로그램이 실행된다. 어떻게 다른걸까? 우선 객체 지향 프로그래밍을 이해하기에 앞서 절차 지향 프로그래밍이 뭔지 알아보자. 음악 플레이어 프로그램 다음과 같은 음악 플레이어 프로그램이 있다고 가정해보자. 플레이어를 실행/종료 할 수 있다. 플레이어의 볼륨을 줄이고, 키울 수 있다. 플레이어의 상태를 표시할 수 있다. 그래서..

NullPointerException

클래스를 만들고 클래스의 인스턴스를 만들 때 해당 클래스의 멤버 변수는 값이 어떻게 들어갈까? 예를 들어 다음 코드를 보자. public class Student { private String name; private int grade; public Student() { } public Student(String name, int grade) { this.name = name; this.grade = grade; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getGrade() { return grade; } public void setGrade(int gr..

Null / GC (Garbage Collection)

Null 우선 자바에서 null은 참조형 변수에만 사용할 수 있다. 참조형 변수는 메모리 상 주소(참조값)를 가지고 있는데 이 주소가 가리키는 곳 내부에 인스턴스, 배열 등등의 참조형 변수의 실체가 존재한다. 이 때 가리키는 대상이 없거나, 지금 당장 필요한게 아니라 이후에 가리키는 대상을 지정하고 싶을 때 null을 사용한다. 참조형 변수에 null을 대입하는 것은 간단하게 다음과 같이 할 수 있다. Student s = null; 그런데 만약, 이렇게 값도 없이 계속 쓰레기 데이터만 쌓이면 메모리는 감당할 수 있을까? 이를 해결하기 위해 자바는 GC라는 가비지 컬렉션을 제공한다. GC (Garbage Collection) 자바는 JVM내 가비지 컬렉션이라는 녀석을 제공한다. 이 녀석이 하는 일은 더이..

형변환, 형변환 시 오버플로우, 연산 시 형변환

참고 자료: 김영한의 실전 자바 - 중급 1편 | 김영한 - 인프런 김영한 | 실무에 필요한 자바의 다양한 중급 기능을 예제 코드로 깊이있게 학습합니다., [사진]국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 www.inflearn.com 형변환 자바에서는 타입이라는 게 존재하는데 이는 다음과 같은 것들이다. int long double boolean ... 그리고 자바에서는 작은것을 큰 곳에 넣을 수 있다. 같은 정수를 다루는 int, long은 int보다 long이 더 큰 범위를 가진다. 즉, 담는 그릇 자체가 더 크단 이야기인데 이 말은 int로 선언한 변수의 값은 long에 담을 수 있다. 그리고 이는 내가 명시적으로 작성하지 않아도 자동 형변..

728x90
반응형
LIST