전체 글 (119) 썸네일형 리스트형 [Java] 변수의 초기화 초기화 되지 않은 변수 읽기변수를 읽을때 값이 저장되어있지 않으면, 컴파일 에러를 발생한다. 아래의 사진에서 보다시피, 초기화 되지 않는 변수 num를 선언 후에 읽어 들인다면 빌드가 실패한다. java: variable num might not have been initialized 변수가 초기화 되지 않았다는 에러문을 볼 수 있다. build failed 에러를 살펴보면, compile failed errors: 1을 볼수 있다. 컴파일 에러가 발생한 것이다. 메모리 해제가 안된 메모리 공간을 할당 받을 수 있어, 변수 선언 후 초기화하지 않을시에 예상치 못한 값이 저장되어 있을수 있다. 그 값을 garbage value(쓰레기값)이라고 한다. 따라서 변수를 사용전에 항상 초기화를 해야한다. 해당.. [Java] 생성자 (Constructor) 생성자(Constructor) 개념과 하는일생성자(Constructor)는 인스턴스가 생성될때 호출 되는 인스턴스 초기화 메서드이다. 주로 인스턴스 변수의 초기화 작업에 사용되며, 인스턴스 생성시에 실행되어야 할 작업을 위해서도 사용된다. 생성자도 메서드이기 때문에, 구조도 메서드랑 거의 비슷하지만 리턴값이 없다. 따라서 void 키워드도 메서드명 앞에 붙지 않는다. 그리고 생성자 이름은 클래스 이름과 동일해야한다.class Coffee { // Constructor (생성자) Coffee() { } public static void main(String[] args) { Coffee coffee = new Coffee(); System.o.. [Java] 오버로딩 (Overloading) 오버로딩의 개념과 예제하나의 클래스 내에 메서드 이름이 같아도, 매개 변수가 다르면 메서드를 구별할수 있다. 컴파일러(Compiler)는 메서드를 호출할때, 메서드 이름과 매개변수로 분류하기 때문이다. 정확히는 메서드 이름이 동일하여도, 매개변수의 개수 또는 타입이 다르면 메서드를 정의할 수 있다. 따라서 해당 조건이 만족하지 않으면 컴파일 에러를 발생한다. 그리고 반환 타입은 오버로딩을 구현하는데 상관이 없다. 클래스의 코드가 로딩될때, 하나의 메서드 이름으로 다른 여러 기능을 하는 메서드들을 같이 로딩할수 있어서 오버로딩(overloading)이라고 한다. 인풋값이 달라지게 되면 다른 기능으로 보는 것이다. 다음 코드와 같이, 매개변수 개수 또는 타입이 다른 경우에는 오버로딩이된다. 인자(argume.. [Java] 메서드 (Method) Method란?클래스(Class) 내의 함수(function)를 메서드(method)라고 부른다. method의 사전적의미는 어떤 결과물을 내기 위한, systematic procedure(절차)이다. 예를 들면, 카페의 알바생이 블루베리 스무디를 만들려고 한다. 카페에서 제공하는 레시피를 보고서, 필요한 재료를 넣고 일련의 과정대로 수행을 하면 블루베리 스무디가 만들어진다. 그 레시피가 메서드이다. 이처럼, 알바생은 어떻게 블루베리 스무디를 만들어지는 원리를 모르는 상태에서도 방법만 알면 쉽게 만들수 있다. 알바생은 그저 재료(input)을 넣고 일련의 과정을 수행하면 원하는 블루베리 스무디(output)값을 설계한 것이 메서드이다. 이러한 블루베리 스무디 레시피를 만들어 놓으면 어떤 알바생이건 몇 번.. [Java] 메서드의 종류와 호출 과정 및 디스패치 Instance Method 호출 과정인스턴스 메서드의 메서드 호출 과정을 자세히 짚어보자면 다음과 같다.인스턴스의 실제 클래스 타입에 찾는 메서드가 정의되어 있으면 그 메서드를 호출한다.만약 인스턴스가 속한 클래스에 해당 메서드가 없으면, 상위 클래스로 올라가면서 메서드를 찾는다.JVM은 상속 계층을 따라 부모 클래스로 올라가며 메서드를 찾을 때까지 반복적으로 수행한다.그러므로 상속 계층이 깊어질수록, 메서드를 찾기 위해 부모 클래스, 조부모 클래스 등 상위 클래스까지 검색하는 작업이 추가되므로 검색 오버헤드가 발생할 수 있다. 게다가, java는 단일 상속을 사용하지만, 인터페이스 구현으로 인하여 인터페이스 다중 상속으로 메서드 검색 과정이 복잡해질 수 있다. 그리하여 JVM은 다중 상속을 지원하는 .. [Java] 선언에 따른 변수의 종류 JVM의 메모리 공간과 변수Java 프로그램이 실행되면 JVM(자바 가상 머신)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리를 한다. JVM의 메모리 공간(Runtime Data Area)은 크게는 Method Area, Stack, Heap 영역으로 구분되고 데이터 타입(자료형)에 따라 각 영역에 나눠서 할당 되게 된다. 변수는 선언 위치에 따라서 멤버변수(Member Vaiable)와 지역변수(Local Variable)로 구분된다. 멤버 변수에는 클래스 변수(Class Variable)와 인스턴스 변수(Instance Variable)가 있다. 멤버 변수에 static을 붙이면 클래스 변수이고 않붙이면 인스턴스 변수이다. 지역변수는 메서드 내에 선언된 변수로.. [Java] 객체 지향 개념과 객체화 (절차 지향과의 비교) 객체 지향 언어의 탄생과 배경이전에는 전쟁과 과학 같은 특정 분야의 개발을 주로 하였었다. 이후 대중에게 컴퓨터가 보급되고 웹이 생겨남에 따라서, 프로그램 규모가 점점 커지고 요구사항의 빠른 변경이 생겨났다. 기존의 절차 지향 언어(Procedure-Oriented -Language)은 순차적인 함수의 흐름대로 코드를 작성한다. 그리하여 실행 흐름에 따라 동작하는 함수를 다른 곳에서 쓰기가 어렵고, 기능 수정을 위해 함수 하나를 변경하면 연관된 함수도 연쇄적으로 변경이 필요하였다. 그리하여 모듈화가 쉬운 형태로 만들어 코드 재사용성을 늘리고, 코드의 변경과 관리가 쉬운 형태로 개발하고자 하였다. 이로써 나온것이 객체 지향 언어(Object-Oriented-Language)이다. 그리하여 '특정 역할을 .. [Java] JVM과 OS의 호환성 Java로 작성한 프로그램의 독립성을 위해서는 JVM 역할이 필요하다. 결국, JVM은 CPU와 OS에 종속되기 때문이다. 그렇다면 그중 OS의 어떤 부분이 JVM과의 호환이 필요한지를 알아보고, 어떻게 JVM으로 해결했는지 자세하게 파헤쳐볼것이다.OS의 명령어아래는 OS의 쉘 명령어(Shell Command)이다. Window와 macOS는 쉘 명령어가 아예 다르며, macOS와 linux는 Unix 기반의 운영 체제이므로 비슷하다. 이처럼, OS 마다 CPU 아키텍처와 호환되게 만든 자신들만의 쉘 명령어 들이 있다.Windowdir # 현재 디렉토리의 파일과 디렉토리 목록을 출력cd Desktop # Desktop 디렉토리로 이동mkdir new_dir # 새로운 디렉토리를 생.. 이전 1 ··· 10 11 12 13 14 15 다음