염몽 개발일지
Java. 오버로딩 (overloading)
Study/Java 2022. 4. 2. 19:04

오버로딩 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다. 한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것을 '메서드 오버로딩' 또는 '오버로딩' 이라고 한다. 같은 이름의 메서드를 정의한다고 해서 무조건 오버로딩인 것은 아니다. 오버로딩이 성립되려면 아래와 같은 조건이 성립되어야 한다. 메서드 이름이 같아야한다. 매개변수 개수 또는 타입이 달라야 한다. 반환 타입은 관계없다. 이어서 아래의 코드도 오류가 난다. public class Main { public void test(Test t) { Test.add(3, 3); } } class Test { static long ..

Java. static 메서드와 인스턴스 메서드
Study/Java 2022. 4. 2. 00:38

인스턴트 메서드 인스턴스 생성후, '참조변수.메서드이름()' 으로 호출 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드 메서드 내에서 인스턴스 변수(iv) 사용가능 static 메서드 (클래스 메서드) 객체 생성없이 '클래스이름.메서드이름()' 으로 호출 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드 메서드 내에서 인스턴스 변수(iv) 사용불가 static 메서드와 인스턴스 메서드의 차이점은 인스턴스 변수(iv)를 사용하냐 안하냐의 차이다. 사용하면 인스턴스 메서드이고, 사용하지 않는다면 static 메서드이다. class MyMath { long a, b; long add() { //인스턴트 메서드 return a + b; //a,b는 인스턴스 변수(iv) 이다. } static ..

Java. 기본형과 참조형 매개변수, 참조형 반환타입
Study/Java 2022. 4. 1. 19:55

기본형 매개변수 - 변수의 값을 읽기만 할 수 있다. (read only) 변경X 참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다. (read & write) 기본형 매개변수 class Data { int x; } public class Main { public static void main(String[] args) { Data d = new Data(); d.x = 10; System.out.println("main() : x= " + d.x); change(d.x); //change(10) System.out.println("main() : x= " + d.x); } static void change(int x) { //기본형 매개 변수 x = 1000; //지역 변수 (lv) System.o..

Java. 호출 스택 (call stack)
Study/Java 2022. 4. 1. 18:08

호출 스택은 매우 중요한 개념이다. 스택 (stack) : 밑이 막힌 상자. 위에 차곡차곡 쌓인다. 호출 스택 (call stack) 메서드 수행에 필요한 메모리가 제공되는 공간 메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제 아래 있는 메서드(main) 가 위의 메서드(println) 를 호출한 것이다. 한개의 스택에서는 맨 위의 메서드 하나만 실행중, 나머지는 대기중

Java. return문, 반환값
Study/Java 2022. 3. 31. 02:07

return문 현재 실행 중인 메서드를 종료하고 호출한 메서드로 되돌아간다. void문은 마지막에 return문을 생략해도 된다. void printGugudan(int dan) { if (!(1 < dan && dan b) return a; else return b; } 반환값 반환타입이 void가 아닐때, return문옆에 써주는 값이 반환값인데 return문 옆에 반환값을 써줘야하고 반환값과 반환타입이 일치(자동형변환) 해야한다. - 자동형변환값은 상관없다. char,byte,short // 두 개의 정수를 받아서 그 차이를 절대값으로 반환 int diff(int a, int b) { int result = abs(a - b); return result; // 위 두개의 문장을 아래와 같이 한줄로 ..

Java. 메서드의 호출
Study/Java 2022. 3. 31. 01:13

메서의 호출 메서드이름(값1, 값2, ...); //메서드를 호출하는 방법 print99danAll(); //void print99danAll() 을 호출 int result = add(3,5); //int add(int x, int y)를 호출하고, 결과를 result에 저장 매게변수란 메서드를 호출하는 쪽에서 주는 값을 add 메서드한테 전달하는 중간 매개체 역할을 하는 의미에서 매게변수 (parameter) 라고 한다. public class Main { public static void main(String[] args) { MyMath mm = new MyMath(); long result1 = mm.add(5L, 3L); // add 메서드 호출 long result2 = mm.subtract..

Java. 메서드
Study/Java 2022. 3. 31. 00:30

메서드란? 문장들 {} 을 묶어놓은 것이라 생각하면 쉽다. - 작업단위로 문장들을 묶어서 이름 붙인 것이다. 메서드는 클래스안에 반드시 들어가있어야 한다. 메서드의 장점 코드의 중복을 줄일 수 있다. 코드의 관리가 쉽다. 코드를 재사용할 수 있다. 코드가 간결해서 이해하기 쉬워진다. 이외에도 메서드의 기능들은 많이 존재한다. 값(입력)을 받아서 처리하고 결과를 반환(출력) 한다. 메서드의 작성 반복적으로 수행되는 여러 문장을 메서드로 작성 하나의 메서드는 한 가지 기능만 수행하도록 작성 메서드 = 선언부 + 구현부 반환타입 메서드이름 (매게변수 목록 (입력)) // 선언부 { //메서드 호출시 수행될 코드 구현부 } 매게변수는 0개 ~ n개까지 넣을 수 있다. 하지만 출력값은 0 ~ 1개까지만 가능하다...

Java. 클래스와 인스턴스
Study/Java 2022. 3. 30. 23:51

객체지향 프로그래밍 (OOP) 캡슐화 상속 추상화 다형성 객체지향의 언어 장점 1. 코드의 재사용성이 높다. 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2. 코드의 관리가 용이하다. 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. 제어자의 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 클래스란? 설계도 데이터와 함수의 결합 사용자 정의 타입 인스턴스와 인스턴스화 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화 라고 하며 어떤 클래스로 부터 만들어진 객체를 인스턴스라고 한다. 클래스 변수는 (class variab..