development/Java
JAVA 공부 해볼까 (13)
이전 글에서는 입력매개변수가 기본 자료형이었다. 이번엔 참조 자료형이 입력매개변수로 오는 경우다. 아래 오류가 발생하는 이유는 배열에서 공부했던 내용을 기억한다면 알 수 있다. 기본 자료형 입력매개변수와 참조 자료형 입력매개변수의 차이 배열과 같은 참조 자료형이 입력 매개변수로 넘겨질 때 실제 객체가 전달되는 것이 아니라 객체의 위칫값이 전달된다. 이 때, 전달은 복사의 개념이다. 이는 스택 메모리에 있는 값이 전달되기 때문인데, 기본 자료형은 스택 메모리에 실제 값을 저장하지만 참조 자료형의 실제 값은 힙 메모리에 있고 힙 메모리의 주소가 스택 메모리에 저장된다. 오버로딩된 메서드 메서드 오버로딩을 이해하기 위해서는 메서드 시그니처method signature를 먼저 알아야한다. 메서드 시그니처는 메서..
JAVA 공부 해볼까 (12)
메서드 메서드의 형식) 자바 제어자 리턴(반환)타입 메서드명(입력매개변수){ 메서드 내용 } 예시) public static int sum(int a, int b){ // 메서드 내용 } 메서드는 클래스의 기능에 해당하는 요소다. 리턴 타입은 메서드 종료 이후 변환(또는 반환)되는 값의 자료형을 의미한다. 메서드명은 변수명 만드는 규칙과 동일하며, 관례적으로 소문자로 시작한다. 입력매개변수는 메서드를 호출할 때 전달되는 값의 자료형과 값을 저장할 지역 변수명을 정의한다. 메서드의 내용에는 메서드가 수행해야 할 기능을 작성한다. 리턴 타입이 void인 메서드를 제외한 나머지 메서드는 메서드 내용의 마지막에는 'return 리턴값'이 포함돼야 한다. 물론 void일 때도 return을 쓸 수 있다. 이 때 ..
JAVA 공부 해볼까 (11)
필드와 지역 변수의 구분 필드는 '클래스에 포함된 변수'로 객체의 속성값을 지정할 수 있다. 필드는 지역 변수와 구분해야 하는데 지역 변수는 '메서드에 포함된 변수'를 말한다. 클래스의 중괄호 안에 선언되면 필드이고, 메서드의 중괄호 안에 선언되면 지역 변수이다. 이 둘의 가장 큰 차이점은 생성되는 메모리 위치다. 필드는 힙 메모리 내부, 지역 변수는 스택 메모리에 생성된다. 스택 메모리에 저장되는 변수는 메서드의 닫힌 중괄호를 만나 메서드가 종료되면 자바 가상 머신이 자동으로 삭제하지만, 힙 메모리는 객체 안에 저장되는 필드는 객체가 사라지지 않는 한 절대로 삭제되지 않는다. 위 예제를 보면 클래스 A에는 필드 m, n과 메서드 work1(), work2()가 있다. 참고로 메서드는 '리턴타입 메서드명..
JAVA 공부 해볼까 (10)
클래스의 개념 객체object는 사용할 수 있는 실체를 의미하며 클래스는 객체를 만들기위한 설계도와 같다. 1개의 클래스를 이용해 여러 개의 객체를 만들 수 있다. 자바는 기본 문법 요소로써 클래스를 사용한다. 클래스는 다양한 자료형의 데이터를 묶어 관리할 수 있을 뿐 아니라 데이터를 처리하는 다양한 기능까지 함께 관리하는 문법 요소다. 구조체에서 한 단계 발전한 형태라고 할 수 있다. 참고로 프로그램 문법 요소는 변수, 배열, 구조체, 클래스 순으로 발전해왔다. 절차지향의 개념 객체지향의 개념을 사용하기 전 대부분의 프로그램은 절차지향형으로 구현했다. 절차지향형 프로그래밍PP : Procedural Programming은 순서에 맞춰 단계적으로 실행하도록 명령어를 나열하는 방식이다. 기능 중심 프로그래..
JAVA 공부 해볼까 (9)
문자열의 표현과 객체 생성 참조 자료형의 가장 대표적인 형태는 클래스이다. 클래스 중 문자열을 저장하는 게 String 클래스다. 문자열은 반드시 큰따옴표(String a = "문자열")안에 표기해야 한다. String a = "" 와 같이 아무런 문자열이 오지 않아도 상관없다. 하지만, 큰따옴표는 생략 할 수 없다. String 클래스의 객체를 생성하는 데는 크게 2가지 방법이 있다. 첫 번째는 new 키워드를 사용하는 방법으로 생성자의 입력 매개변수로 지정할 문자열을 입력한다. String 참조변수명 = new String("문자열"); 대부분의 클래스가 이 방법으로 객체를 생성한다. 생성자는 아직 배우지 않았지만 클래스명과 동일하면서 뒤에 소괄호가 있는 형태다. 두 번째 방법은 간단히 문자열 리터럴..