본문 바로가기

자바의정석

Java static 메서드와 인스턴스 메서드 1. static 메서드와 인스턴스 메서드 비교 인스턴스 메서드 static메서드(클래스 메서드) 인스턴스 생성 후 '참조변수명.메서드명()'으로 호출 객체생성 없이 '클래스명.메서드명()'으로 호출 인스턴스 변수(iv)와 관련있는 작업을 하는 메서드 인스턴스 변수(iv)와 관련없는 작업을 하는 메서드 메서드 내 인스턴스 변수(iv) 사용 가능 메서드 내 인스턴스 변수(iv) 사용 불가 class MyMath { long a, b; // 인스턴스 변수(iv) a, b 선언 // 인스턴스 메서드 long add() { // 매개변수 없음 return a + b; // 인스턴스 변수 a, b 사용 } // static(클래스)메서드, 매개변수 사용 static long add(long a, long b) {.. 더보기
Java 기본형 매개변수, 참조형 매개변수 1. 기본형 매개변수(privitive type): 기본형의 값이 복사되어 변수의 값을 읽기만 할 수 있음(Read Only) 2. 참조형 매개변수(reference type): 인스턴스의 주소가 복사되어 변수의 값을 읽고 변경할 수 있음(Read & Write) 더보기
Java 호출 스택(call stack) 1. 스택(stack): 밑이 막힌 상자, 위에 차곡차곡 쌓임 2. 호출 스택(call stack): 메서드가 수행에 필요한 메모리가 제공되는 공간, 메서드가 호출되면 호출스택에 메모리할당 종료되면 비워짐 2-1. 호출스택의 특징 1) 메서드가 호출되면 수행에 필요한 만큼의 메모리를 스택에 할당 받음 2) 메서드가 수행을 마치고나면 사용했던 메모리를 반환하고 스택에서 제거 3) 호출스택의 제일 위에 있는 메서드가 현재 실행중인 메서드 4) 아래에 있는 메서드가 바로 위의 메서드를 호출한 메서드 더보기
Java return문, 반환값 return문 1) 현재 실행중인 메서드를 종료하고 호출한 메서드로 돌아가는 것 2) return문은 반환값 유무에 관계없이 필수적으로 필요함 ( 단, 반환타입이 void인 경우 return문이 없어도 컴파일러가 메서드의 마지막에 retrun;을 자동으로 추가해줌) // 리턴문이 없어서 에러가 발생하는 예 int max(int a int b) { if(a > b) return a; // ERROR, 조건식이 참일때만 실행됨 거짓인 경우에 return이 없음 } // 위 코드르 아래와 같이 작성해야 에러가 발생하지 않음 int max(int a int b) { if(a > b) return a; // 조건식이 참일 때 a를 반환 else return b; // 조건식이 거짓일 때 b를 반환 } 반환값 1).. 더보기
Java 메서드(Method)의 선언, 구현, 호출 메서드(Method) 1) 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것 2) 값(입력)을 받아서 처리하고, 결과를 반환(출력) cf. 메서드는 수학의 함수와 유사하지만 함수와 다르게 입력값 또는 출력값이 없을 수도 있고, 입력값과 출력값 모두 없는 경우도 있음 1. 메서드의 장점 1) 중복 코드 제거 2) 코드 관리 용이 3) 코드 재사용 가능 2. 메서드의 선언(parameter declaration)과 구현 // 반환타입 메서드명(타입 변수명, 타입 변수명, ..., 타입 변수명) // 매개변수는 0개 ~ n개 가능, 각 변수마다 타입을 필수로 써줘야함(안쓰면 ERROR) int add(int x, int y) // 메서드 선언부: 반환타입 int, 메서드명 add, 매개변수 int형 x, .. 더보기
Java 선언위치에 따른 변수의 종류 - 클래스 변수, 인스턴스 변수, 지역변수 class Variables { // 클래스 영역 시작, 선언만 가능 int iv; //인스턴스 변수(instance valiable) static int cv; //클래스 변수(static변수, 공유변수), cv=static+iv // 메서드 영역 시작 void method() // 메서드 선언 // 메서드 정의 { int lv = 0; //지역변수(local valiable) } { 선언 위치 변수의 종류 생성 시기 및 특징 클래스 영역 멤버 변수 인스턴스 변수 (iv: instance variable) - 인스턴스(객체)가 생성되었을 때 생성 - 인스턴스마다 고유한 상태 유지해야하는 속성에 선언 클래스 변수 (cv: class variable) - 클래스가 메모리에 올라갈 때 생성 - 인스턴스 변수.. 더보기
Java 클래스의 정의 1. 객체지향 이론 관점: 객체를 생성하기 위한 틀(설계도) 2. 프로그래밍적 관점: 데이터와 함수의 결합 1) 변수: 하나의 데이터를 저장할 수 있는 공간 2) 배열: 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간 3) 구조체: 서로 관련있는 여러 데이터(종류 관계x)를 하나로 저장할 수 있는 공간 4) 클래스: 데이터와 함수의 결합(구조체 + 함수) 3. 사용자 정의 타입(user-defined type): 프로그래머가 서로 관련된 변수들을 묶어서 하나의 타입으로 새로 추가하는 것 1) 여러 프로그래밍언어에서 사용자정의 타입을 제공함 2) 자바같은 객체지향언어에서는 클래스가 사용자 정의 타입임 3) 비객체지향적 코드 vs 객체지향적 코드 비객체지향적 코드 객체지향적 코드 int hour1, .. 더보기
Java 객체 배열 객체 배열 == 참조변수 배열 1. 객체 배열의 생성 Tv[] tvArr = new Tv[3]; // 길이가 3인 Tv타입의 객체 배열(참조변수 배열) 생성 // 배열의 각 요소에 저장하는 방법1. Tv객체 생성하여 배열의 각 요소에 저장 tvArr[0] = new Tv(); tvArr[1] = new Tv(); tvArr[2] = new Tv(); // 배열의 각 요소에 저장하는 방법2. 배열의 초기화 블럭을 사용하여 위 코드를 간소화 할 수 있음 Tv[] tvArr = {new Tv(), new Tv(), new Tv()}; // 다뤄야할 객체의 수가 많을 때는 for문 사용 Tv[] tvArr = new Tv[100]; for (int i = 0; i < tvArr.length; i++){ tvAr.. 더보기