본문 바로가기
study/JAVA

자바 메소드 정리 Java method

by stilinski 2022. 3. 31.
728x90

method(메소드) 정의

:값을 계산하기 위해서 사용되는 기능이다.

객체의 동작을 처리하기 위한 기능이다.

 

하나의 메소드에서는 하나의 기능만 구현하는게 좋다.

= 재사용성이 좋아지기때문에 유지보수가 용이해짐. (인건비 최소화)

 

 

  • 메소드의 형식

method 정의 : 선언부 + 구현부

반환자료형 메소드명(파라미터) => 메소드 선언부{ 메소드가 호출되었을때 실행할 구문

{ } =>메소드 구현부 return값이 있다면 구현부안에 'return 값;' 입력

 

 

 

 

 

 

 

메소드의 종류

  1. 리턴값이 없고 매개변수도 없는 형태

 

 

 

 

2. 리턴값은 있고 매개변수(파라미터)는 없는 형태

선언한 타입과 리턴값의 타입이 같아야함. 그러나 정의된 타입의 크기가 더 크다면 가능

 

 

 

 

 

 

 

3. 리턴값이 없고 매개변수는 있는 형태

 

 

 

 

4.리턴값이 있고 매개변수도 있는 형태

 

 

메소드 연습문제

 

  1. 소문자 대문자로 바꾸는 메서드 만들기 

 

알아야할것

  1. 대문자 A, 소문자 a의 유니코드
  2. 대문자와 소문자 차이
  3. int이하의 데이터 타입끼리 연산이 되면 결과는 int로 리턴

유니코드

A: 65

a: 97

 

int이하의 데이터 타입끼리 연산하면 결과로 int가 리턴이 되기때문에 data-32를 char로 형변환을 시켜줘야 원하는 값을 얻을 수 있다.

 

나:

나는 Character.tpUpperCase 를 썼다. 근데 저렇게 하는 게 코드가 한 줄이라서 더 간편해 보임.

 

 

 

 

2. 홀수짝수 결과 체크하는 메서드

 

 

흥미로운 답:

 

저렇게 조건연산자의 식을 그대로 return에 넣어도 트루폴스안써도 됨!

어차피 저 식의 값은 true 아님 false이기 때문.

좋당

 

 

 

res를 선언하지말고 바로 저기다가 값을 넣어도 되는데,, 너무 길어서 나는 따로 뺐다.

근데 선생님은 어려우면 저렇게 직접 값을 넣으라고 했다. 이해하기 쉽게.

나는 그게 복잡한 거 같은데.. 저기다가 값을 넣는 게 다른사람들이 봤을 때 더 이해하기 쉬운 방법인걸까? 가독성 측면에서 값을 저기에 직접 입력하는 게 더 나은건지 내가쓴게 더 나은건지 잘 모르겠다. ( 내꺼가 더 나은 거 같음)

 

 

 

 

 

 

 

3. 똑같은 계산은 두번하게 하지마라

위에꺼랑 비슷하게 sum을 선언하지 않고 식을 바로 넣어도 되지만 이런경우 똑같은 계산을 두번 해야하기때문에 비효율적. 이럴때는 한번만 계산하게 변수에 넣는게 좋은 방법임.

 

 

 

 

 

4. 좀 꼬아놓은 문제

마지막에 reversed[i]에 넣을 data반대값 인덱스 지정하는데 좀 헷갈렸다.

근데 아무튼 스스로 해결해냄. ㅎㅎ 반에서 나 혼자 완성함 후후

 

 

 

  • 메서드에서 reverse된 data를 넣을 배열을 따로 생성한이유.

출력 결과를 보면 역순으로 된arr[]인 tset avaj를 출력하고 다시 원래순서대로 된arr[] (java test)를 출력해야한다.

그런데 자바에서 참조데이터를 인자로 받으면 그 데이터 주소를 복사하기 때문에 메서드에서 arr을 받아서 역순으로 바꾸면 arr자체의 값도 역순으로 바껴서 3번째 출력되는 값도 역순으로 바뀐다.

arr[] 데이터의 값을 원래대로 유지하기위해 메서드에서 새로운 배열인 reversed[]를 생성해서 거기에 arr[]을 역순으로 불러서 새로운 배열에 차례차례 넣는다. 이때 반복문을 사용한다.

그렇게 하면 arr[]과는 별개로 메모리에 reversed[]가 따로 저장된다. 그러면 arr[]에있는 데이터를 손상시키지 않고서도 arr[]의 데이터를 역순으로 출력하는게 가능하다.

 

 

 

 

 

728x90

댓글