반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스 가위바위보 풀이
- 비지니스 레이어
- 스프링 시스템 구조
- Programmers 배열의 유사도
- programmers 배열 회전
- 파이썬 컬렉션
- 특정문자 제거하기
- 프로그래머스 배열 회전시키기
- 2-layered architecture
- 프레젠테이션 레이어
- 프로그래머스 배열의 유사도 파이썬
- 리트허브 오류
- 파이썬 특정 문자 제거하기
- 프로그래머스 특정 문자 제거하기
- 리트허브 사용법
- collection python
- 알고리즘
- 공선옥
- 개발자 취준
- 프로그래머스 가위바위보
- BigO notation
- 춥고더운우리집
- 슈츠 자막
- 가위바위보 풀이
- 프로그래머스
- 주니어개발자
- 춥고 더운 우리 집
- leftJoin
- 리트허브 커밋
- 배열의 유사도 파이썬
Archives
- Today
- Total
기억보다 기록을
[JAVA] 메소드 호출과 프로그램의 기능적 분할-call by reference, call by value, actual prameter, formal parameter 본문
Language/JAVA
[JAVA] 메소드 호출과 프로그램의 기능적 분할-call by reference, call by value, actual prameter, formal parameter
juyeong 2022. 6. 6. 15:20반응형
권오흠 교수님의 자료구조 강의를 듣고 정리했습니다.
🔺What I learn from this lecture
- 코드를 작성할 때 어떻게 함수를 호출하고 매개변수를 전달할지를 생각하자
- 어떻게 전체 프로그램이 할 일을 작고 명료하게 기능적으로 분할하여 구조화할 수 있을지 고민하자
- 구조화된, structured program의 핵심은 함수를 잘게 쪼개는 것이다.
- 기능적 분할이 어떻게 이뤄지는지 학습하는 것이 재미있었다.
- 이는 결국 call by value, call by reference에 대한 이야기로 연결된다 and it also connected to actual parameter, formal parameter
- return 의 역할은 2개, 함수의 종료와 값의 반환이다.
- 프로그래밍, 알고리즘을 짤 때 교묘한 방법을 찾으려 하지 말고 무식하지만 논리적으로 명료한 방법을 찾자.
🔺Look how the method seperated and works together
import java.util.Scanner;
//입력으로 두 정수 a,b를 입력받아 a의 b승을 계산한다.
class code16 {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("please enter two integers and press Enter");
int a = keyboard.nextInt();
int b = keyboard.nextInt();
int result = power(a, b);
System.out.println("The result is" + result);
keyboard.close();
}
public static int power(int n, int m) {
int result = 1;
for (int i = 0; i < m; i++) {
result *= n;
return result;
}
}
}
package dataStructure;
//1-100,000사이의 소수를 찾아 출력한다
public class code17 {
public static void main(String[] args) {
for (int i=2;i<=100000; i++) {
if (isPrime(i)) {
if(isPrime(i))
System.out.println(i);
}
}
public static boolean isPrime(int k) {
if (k<2)
return false;
for(int i=2;i*i<=k;i++) {
if(k%i==0)
return false;
}
return true;
}
}
}
package dataStructure;
import java.util.Scanner;
//입력받은 값의 버블정렬 구현
public class code18 {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] data = new int[n];
for (int i = 0; i < n; i++)
data[i] = kb.nextInt();
kb.close();
}
bubbleSort(n, data);
System.out.println("Sorted data:");
for( int i=0;i<n;i++)
System.out.println(data[i]);
}
static void bubbleSort(int n, int[] data) {
for (int i = n - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (data[j] > data[j + 1]) {
int tmp = data[j];
data[j] = data[j + 1];
data[j + 1] = tmp;
}
}
}
}
}
package dataStructure;
import java.io.FileNotFoundException;
import java.util.Scanner;
//텍스트 파일을 입력받아 그 안의 값을 출력하는 프로그램
public class code19 {
public static void main(String[] args) {
String[] name = new String[1000];
String[] number = new String[1000];
int n = 0;
try {
Scanner inFile = new Scanner(new File("input.txt"));
while (inFile.hasNext()) {
name[n] = inFile.next();
number[n] = inFile.next();
n++;
}
inFile.close();
} catch (FileNotFoundException e) {
System.out.println("NO file");
System.exit(9);
}
for (int i = 0; i < n; i++)
System.out.println(name[i] + ":" + number[i]);
}
}
🔺Actual parameter, Formal parameter / Call by value, Call by reference
- primitive 타입의 매개변수는 호출된 매개변수에서 값을 변경하더라도 호출한 쪽에 영향을 주지 못한다. call by value이기 때문이다.
- reference 타입의 매개변수는 호출된 메서드에서 변경하면 호출한 쪽에서도 변경된다.
- 값에 의한 호출: c,java에서 똑같다. actual paramter, formal parameter를 완전 별개의 변수로 생각하는 것이다. 처음 한번 복사한 뒤 그 이후로는 서로 연동되지 않는다. 복사한 값들을 swap하는 것이므로 원본에는 아무 영향을 주지 않는다.
- call by reference는 c,java에서 지원하지 않는다. c++에서는 또다른 매개변수 방법인 참조에 대한 호출을 지원한다. 참조에 의한 호출에서는 actual paramter, formal parameter를 별개의 변수로 생각하지 않는다. 하나인 변수를 이름만 달리한 것으로 생각하며 접근한다.
반응형
'Language > JAVA' 카테고리의 다른 글
[Effective JAVA] 이펙티브 자바 item11.equals를 재정의하려거든 hashCode도 재정의하라 (0) | 2023.01.15 |
---|---|
[Effective JAVA] 이펙티브 자바 item10.equals는 일반 규약을 지켜 재정의하라 (0) | 2023.01.15 |
[JAVA] 자료구조_클래스, 객체, 참조변수 (1) (0) | 2022.07.02 |
[JAVA] n개의 연속된 숫자 나열을 정수로 환산하여 소수인지 판별 후 최대값 구하는 프로그램 (0) | 2022.03.05 |
[JAVA] 배열에 연속된 정수들의 합 중 최대값을 구하는 프로그램 (0) | 2022.03.05 |