Search
Duplicate
πŸ˜€

09. λ§€κ°œλ³€μˆ˜

νƒœκ·Έ

Call by Value & Call by Reference

Call by Value

β€’
ν•¨μˆ˜ 호좜 μ‹œ 인자둜 λ„˜κ²¨μ€€ λ§€κ°œλ³€μˆ˜λŠ” λ‹¨μˆœνžˆ 값을 λ³΅μ‚¬ν•˜μ—¬ μ‚¬μš©ν•œ κ²ƒμœΌλ‘œ ν•¨μˆ˜ 호좜이 μ’…λ£Œλ  λ•Œ 원본 λ§€κ°œλ³€μˆ˜μ˜ 변동사항이 μ—†λ‹€
β€’
λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄ κΈ°λ³Έ 데이터 νƒ€μž…μΈ 경우
β€’
객체가 λ‹€λ₯Έ 객체의 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ λ‹¨μˆœνžˆ λ©”μ„œλ“œ μˆ˜ν–‰μ— ν•„μš”ν•œ κ°’λ§Œ λ„˜κΈ°κ³ μž ν•˜λŠ” 경우
β—¦
λ§€κ°œλ³€μˆ˜λ₯Ό κΈ°λ³Έν˜•μœΌλ‘œ μ„ μ–Έν•˜μ—¬ Call by value

Call by Reference

β€’
μ°Έμ‘°ν˜• λ§€κ°œλ³€μˆ˜λŠ” μ°Έμ‘°ν•˜λŠ” 객체의 μ£Όμ†Œ 값이 λ³΅μ‚¬λ˜μ–΄μ„œ μ „λ‹¬λœλ‹€.
β€’
같은 객체의 μ£Όμ†Œλ₯Ό 가지기 λ•Œλ¬Έμ— ν•˜λ‚˜μ˜ 객체λ₯Ό 두 개의 μ°Έμ‘°λ³€μˆ˜κ°€ κ³΅μœ ν•œλ‹€.
β€’
λ©”μ„œλ“œ μˆ˜ν–‰ 이후에도 μˆ˜ν–‰ κ²°κ³Όλ₯Ό μ§€μ†μ μœΌλ‘œ μœ μ§€ν•˜κ³ μž ν•˜λŠ” 경우
β—¦
λ§€κ°œλ³€μˆ˜λ₯Ό μ°Έμ‘°ν˜•μœΌλ‘œ μ„ μ–Έν•˜μ—¬ Call by Reference
β€’
μžλ°”μ—μ„œλŠ” new둜 μƒμ„±λœ λͺ¨λ“  객체λ₯Ό 인자둜 λ„£λŠ” 경우 ν•΄λ‹Ή

가변적 λ§€κ°œλ³€μˆ˜

β€’
λ§€κ°œλ³€μˆ˜μ˜ 숫자λ₯Ό μ»΄νŒŒμΌμ΄λ‚˜ μ‹€ν–‰ μ‹œμ— 미리 μ§€μ •ν•˜μ§€ μ•ŠλŠ” 방식
β€’
ν•˜λ‚˜μ˜ λ©”μ„œλ“œλ§Œ μ •μ˜ν•˜μ—¬ λ§€κ°œλ³€μˆ˜μ˜ 개수λ₯Ό κ°€λ³€μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 방식
β€’
μ—¬λŸ¬κ°œμ˜ λ§€κ°œλ³€μˆ˜μ™€ ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λŠ” λ§€κ°œλ³€μˆ˜ 리슀트 λ§ˆμ§€λ§‰ μœ„μΉ˜μ—μ„œ λ”± ν•œλ²ˆλ§Œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€!!
public class HelloWorld { public static int intSum(int... num) { int sum = 0; for(int i = 0; i < num.length; i++) { sum += num[i]; } return sum; } public static void main(String[] Args) { System.out.println(intSum(1)); System.out.println(intSum(1,2)); } }
Java
볡사