Java 81

Static 메서드와 인스턴스 메서드

Static 메서드와 인스턴스 메서드 -> iv 사용여부에 따라 갈림 Class MyMath2 { long a, b; // -> 인스턴스 변수 : iv long add() { // 인스턴스 메서드 (iv 사용) return a + b; // iv } static long add (long a, long b // -> 지역변수 : lv) ) { // 클래스 메서드( = static 메서드) (iv 사용X) return a + b; // lv } } 인스턴스 메서드 - 인스턴스 생성 후, '참조변수.메서드이름()'으로 호출 - 인스턴스 멤버 (iv, im)과 관련된 작업을 하는 메서드 - 메서드 내에서 인스턴스 변수 (iv) 사용가능 Static 메서드 (클래스 메서드) - 객체생성없이 '클래스 이름.메서드..

기본형 매개변수

기본형 매개변수 > 기본형 매개변수 (8개) - 변수의 값을 읽기만 할 수 있다. (read only) -> 변경 불가 ex) Class Data { int x; } Class Ex6_6 { public static void main (String[] args) { Data d = new Data(); // 참조변수 d 만든 후 new Data 객체 생성 d.x = 10; System.out.println(" main() : x = " + d.x); // d.x = 10 change(d.x); // change 메서드 호출 System.out.println ( "After cahnge (d.x)" ); System.out.println ("main() : x = " + d.x); } Static void..

호출 스택 (call stack) - 중요!

호출 스택 (call stack) 스택 (stack) : 밑이 막힌 상자. 위에 차곡차곡 쌓인다. >> 특징 스택은 위에 뚫린 부분으로만 넣거나 뺄 수 있고, 1번과 2번사이에 껴넣기, 1번을 먼저 꺼내는 것은 할 수 없다. 메서드 수행에 필요한 메모리가 제공되는 공간 메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제 >> 1. main 메서드 실행 상태 2. main 이 println 를 호출 3. main은 대기 상태 , println 실행 상태로 변경됨 4. main은 println 메서드가 끝날 때 까지 기다려야함 5. println 이 종료되면 stack에서 사라짐 6. main 메서드가 다시 실행 상태로 변경됨 >> 아래 있는 메서드가 위의 메서드를 호출한 것 >> 맨 위의 메서드 하나..

Return 문, 반환값

return 문 실행 중인 메서드를 종료하고 호출한 곳으로 되돌아간다. void printGugudan (ing dan) { if ( !(2 조건문이 참일때는 return 이 있으나 거짓인 경우에 return문이 없음 그래서 else를 추가해 거짓을 때 실행 하는 것을 넣어주어야함 구구단 메서드 만들어서 출력해보기 class Ex6_4 { public static void main(String args[]) { MyMath mm = new MyMath(); mm.printGugudan(3); // 구구단 3단을 출력 } } class MyMath { void printGugudan (int dan) { for (int i=1; i b) { return a; // 조건식이 참일때만 실행 } else{ re..

메서드 호출

메서드의 호출 메서드 호출하는 방법 - 메서드이름 (값1, 값2, ... ); // 괄호 안에는 '작업에 필요한 값들' 적어주면 됨 메서드 호출 예 - print99danAll() // void print99danAll() 을 호출 (별다른 입력값 없이 호출 가능) - int result = add(3,5); // int add(int x, int y)를 호출하고, 결과를 result에 저장 예제) class Ex6_4 { public static void main(String args[]) { MyMath mm = new MyMath(); long result1 = mm.add(5L, 3L); long result2 = mm.subtract(5L, 3L); long result3 = mm.multipl..

메서드란? / 메서드의 선언부와 구현부

메서드란? (=; 함수) 메서드 함수 클래스 안에 있어야 함 클래스에 독립적임 1. 문장들을 묶어놓은 것. (작업단위로) - 작업단위로 문장들을 묶어서 이름을 붙인 것 > 작업의 이름을 붙여준것 : 메서드 > printArr(numArr); // 배열을 출력; 메서드호출 (사용) >> 똑같은 작업을 하는 두 그룹을 메서드로 묶은 뒤 메서드 호출을 해줌 2. 값(입력)을 받아서 처리하고, 결과를 반환(출력) > 메서드의 장점 - 코드의 중복을 줄일 수 있다. - 코드의 관리가 쉽다. - 코드를 재사용할 수 있다. - 코드가 간결해서 이해하기 쉬워진다. ( 중복 코드 제거, 관리 용이, 재사용 가능 ) > 메서드의 작성 - 반복적으로 수행되는 여러 문장을 메서드로 작성 - 하나의 메서드는 한 가지 기능만 수..

선언 위치에 따른 변수의 종류 / 클래스 변수와 인스턴스 변수

선언 위치에 따른 변수의 종류 Class Variables { -> 클래스 시작 int iv; // 인스턴스 변수 (instance variable) > 1. 클래스 영역 (선언문만 가능) static int cv; // 클래스 변수 (static 변수, 공유 변수) void method() { -> 메서드 시작 int Lv = 0; // 지역 변수(local variable) 메서드 끝 } -> 클래스 끝 영역 1. 클래스 영역 1) iv 2) cv (= static + iv) 2. 메서드 영역 1) Lv ☆ 객체 = iv를 묶어 놓은 것. 클래스 변수(cv)와 인스턴스 변수(iv) 선언위치 영역 - 클래스 영역 : iv, cv - 메서드 영역 : lv 카드 중 공통적으로 유지되어야하는 값에 stati..

클래스의 정의

클래스의 정의 (1) 클래스를 세가지로 정의할 수 있음 ( 1.설계도 2.데이터+함수 3.사용자 정의 타입) 클래스 == 데이터 + 함수 1. 변수 하나의 데이터를 저장할 수 있는 공간 2. 배열 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간 3. 구조체 서로 관련된 여러 데이터 (종류 관계X)를 하나로 저장할 수 있는 공간 4. 클래스 데이터와 함수의 결합 (구조체 + 함수) (함수=메서드, 명령문 묶음) 클래스의 정의 (2) 사용자 정의 타입 - 원하는 타입을 직접 만들 수 있다. ex) 12시 34분 56초를 저장하고 싶다면? 왼쪽 : 비객체지향적인 코드 우측 : 객체지향적인 코드 객체지향적 코드를 생성하면 장점이 많아짐 1. 서로 관련된 값들을 강하게 묶을 수 있음 2. 코드가 덜 복잡해..