Language/JAVA

    Java는 Call By Value일까요, Call By Reference 일까요?

    Java는 기본적으로 Call By Value(값에 의한 호출)입니다. 즉, 메서드에 인자로 전달되는 값은 값 자체가 복사되어 전달되며, 메서드에서 전달된 값이 변경되어도 호출한 측에서 전달한 값에는 영향을 주지 않습니다. 그러나 객체(Object)를 인자로 전달하는 경우에는 Call By Reference(참조에 의한 호출)와 유사한 결과가 나타납니다. 객체를 전달하는 경우, 객체의 참조값(reference)이 인자로 전달되어 메서드에서 객체의 상태를 변경하면 호출한 측에서도 변경된 상태를 확인할 수 있습니다. 이러한 경우에는 객체 자체가 아닌 참조값이 복사되어 전달되는 것이므로, 객체를 복사해서 전달하는 Call By Reference와는 구분됩니다. 예를 들어, 아래와 같이 Person 객체를 인자..

    Call by Value & Call by Reference

    자바에서 메서드 호출 시 매개변수를 전달하는 방식은 Call by Value와 Call by Reference 두 가지가 있습니다. 두 방식의 차이점과 사용 방법에 대해 자세히 알아보도록 하겠습니다. Call by Value Call by Value는 메서드 호출 시 인자로 전달되는 값의 복사본을 전달하는 방식입니다. 따라서 메서드 내에서 매개변수의 값을 변경하더라도, 호출한 쪽에는 영향을 미치지 않습니다. 이 방식은 자바에서 기본 자료형(primitive type)을 매개변수로 전달할 때 사용됩니다. 아래의 코드에서 changeValue 메서드는 int형 변수 num을 매개변수로 받아 num의 값을 10으로 변경합니다. 하지만 main 메서드에서 num의 값은 변경되지 않습니다. public class..

    [JAVA] 애너테이션(annotation)

    1. 애너테이션이란? 애너테이션(annotation)이 만들어진 계기와 개념에 대해 다룹니다. 더보기 자바를 개발한 사람들은 소스코드에 대한 문서를 따로 만들기보다 소스코드와 문서를 하나의 파일로 관리하는 것이 낫다고 생가했따. 그래서 소스코드의 주석 '/** ~ */'에 소스코드에 대한 정보를 저장하고, 소스코드의 주석으로부터 HTML문서를 생성해내는 프로그램(javadoc.exe)을 만들어서 사용했다. /** * The common interface extended by all annotation types. Note that an * interface that manually extends this one does not define * an annotation type. Also note that..

    [JAVA]열거형 (enums)

    1. 열거형이란? 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것 여러 상수를 정의할 때 사용하면 유용, JDK1.5부터 추가, 논리적 오류 줄이는데 도움 Example Code 더보기 Class Card { static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static fianl int SPADE = 3; static final int TWO = 0; static final int THREE = 1; static final int FOUR = 2; final int kind; final int num; } => class Card { enum Kind { CLOVER, HEART, DIAMO..

    [JAVA] 지네릭스(Generics)

    1.1 지네릭스란? 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크(Compile-time type check)를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 타입 안정성을 높인다는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준 다는 뜻이다. 지네릭스의 장점 더보기 1. 타입 안정성을 제공한다. 2. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다. 즉 다룰 객체의 타입을 미리 명시해줌으로써 번거로운 형변환을 줄여준다는 얘기다. 1.2 지네릭 클래스의 선언 더보기 지네릭 타입은 클래스와..

    클래스와 객체지향프로그래밍 임시 저장

    클래스 속성과 기능으로 구성되어 있다. 캡슐화 class의 member field에 private modifier를 선언해 외부 클래스에서 해당 클래스를 instance화 시켜도 외부클래스에서 해당 클래스에 바로 접근하지 못하도록 만들어 보완성을 높이는 것을 캡슐화라 한다. 접근을 위해 getter/setter 메서드를 통해 인스턴스의 필드에 접근하여 값을 얻어내거나 값을 변경할 수 있다. 오버라이드 (메소드 변경) super클래스로 부터 상속받은 메서드를 자식 클래스에서 해당 메서드의 내용을 변경하는 것을 의미한다. 상속(extends) super클래스로의 필드와 기능을 자식 클래스가 물려받아 확장시킬수 있음을 의미한다. 다형성 메서드에서의 다형성(overloading) 같은 이름의 메서드를 선언할 수..