멍발자의 개발

기초 문법 복습 (7) 메소드 본문

STUDY/Java

기초 문법 복습 (7) 메소드

개발하는 멍발자 2022. 4. 21. 15:13

range() = 중간처리

toArray() = 종단처리

마지막 숫자가 포함 안 되고 개수만 맞춰서 나온다.

jshell> var nums = new int[]{2, 5, 3}
nums ==> int[3] { 2, 5, 3 }

jshell> IntStream.of(nums).sum()
$2 ==> 10

jshell> IntStream.range(0, 10).toArray()
$3 ==> int[10] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }

 

rangeClosed() = 종료값이 포함된 숫자열 생성

10까지 포함이라 0부터 10까지면 11개다.

jshell> IntStream.rangeClosed(0, 10).toArray()
$4 ==> int[11] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

iterate() 인수의 초기값, 반복조건, 다음의 값을 얻는 계산 

람다식이 들어간 것만 빼고는 for문이랑 동일한 형태다.

jshell> IntStream.iterate(0, i-> i<10, i-> i+1).toArray()
$5 ==> int[10] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }

limit(10)까지 지정해 주지 않으면 무한루프가 돌기 때문에 개수를 지정하였다.

jshell> IntStream.iterate(123, i -> (i* 211 + 2111) % 100).limit(10).toArray()
$6 ==> int[10] { 123, 64, 15, 76, 47, 28, 19, 20, 31, 52 }

의사 난수

Random() 랜덤으로 수 뽑기

0부터 100까지 10개의 수를 랜덤으로 뽑기

jshell> new Random().ints(10, 0, 100).toArray()
$8 ==> int[10] { 87, 77, 70, 17, 61, 35, 95, 2, 44, 7 }

sorted() 작은 숫자부터 큰 숫자로 정렬하기

jshell> IntStream.of(nums).sorted().toArray()
$14 ==> int[3] { 2, 3, 5 }

map을 이용하여 중간 숫자 변환하기

jshell> IntStream.of(nums).map(n -> n * 2 ).toArray()
$10 ==> int[3] { 4, 10, 6 }

mapToObj() 스트림 형태를 변환할 때 쓰기

정수 스트림을 일반 객체 스트림으로 바꿔주는 것이다.

jshell>  IntStream.of(nums).mapToObj(n -> "*".repeat(n)).toList()
$15 ==> [**, *****, ***]

 

 

mapToInt()

객체 스트림을 다시 정수 스트림으로 바꿔주는 경우 사용하는 메소드다.

jshell> var names = List.of("James", "Britnry", "Sage")
names ==> [James, Britnry, Sage]

jshell> names
names ==> [James, Britnry, Sage]

jshell> names.stream().mapToInt(s -> s.length()).toArray()
$18 ==> int[3] { 5, 7, 4 }

<메소드>

구문: 메소드 선언

메소드는 첫글자에 숫자가 나오면 안 된다.

대문자로 시작할 수는 있지만 소문자로 시작하는 것이 관습이다.

void 메소드명() {
동작내용
}

인수 선언하는 메소드

jshell> void greeting(String name) {System.out.println("Hello" + name);}
|  created method greeting(String)

jshell> greeting("홍홍홍")
Hello홍홍홍

void 메소드명 {인수 자료형 처리 중 사용되는 변수) {

처리내용

}

 

인수 이름은 같은데 인수의 자료형들이 다른 경우를 오버로딩이라 한다.

jshell> void greeting(String name) {System.out.println("Hello" + name);}
| created method greeting(String)

jshell> greeting("홍홍홍") //greeting의 첫번째 메소드
Hello홍홍홍

//greeting의 두번째 메소드
jshell> void greeting(String name, int age) {System.out.println("Hello" + name + ", Age =" + age);}
|  created method greeting(String,int)

jshell> greeting("sage", 10)
Hellosage, Age =10

jshell> greeting("sage")

처리 중에 사용하는 변수를 가인수라고 한다. 가인수에 대하여 호출시 지정하는 인수를 실인수라고 한다.

 

리턴값이 있는 메소드

리턴값 = 반환값

리턴값자료형 메소드명 {인수 자료형 처리 중 사용되는 변수) {

처리내용

}
jshell> int twice(int x) {return x * 2;}
|  created method twice(int)

jshell> twice(5)
$37 ==> 10

연습 문제

jshell> int dbl(int n) {return n * 2;}
|  created method dbl(int)

jshell> dbl(2)
$39 ==> 4

jshell> int triple(int x) {return x * 3;}
|  created method triple(int)

jshell> triple(3)
$41 ==> 9

jshell> String two(String a) {return a.repeat(2);} // 문자열 두번 반복
|  created method two(String)

jshell> two("Hi")
$44 ==> "HiHi"

jshell> int max2 (int x, int y) {return x>y ? x:y;} // 둘 중 큰 수 리턴
|  created method max2(int,int)

jshell> max2(8, 10)
$46 ==> 10

 

Comments