method(메소드) 정의
:값을 계산하기 위해서 사용되는 기능이다.
객체의 동작을 처리하기 위한 기능이다.
하나의 메소드에서는 하나의 기능만 구현하는게 좋다.
= 재사용성이 좋아지기때문에 유지보수가 용이해짐. (인건비 최소화)
- 메소드의 형식
method 정의 : 선언부 + 구현부
반환자료형 메소드명(파라미터) => 메소드 선언부{ 메소드가 호출되었을때 실행할 구문
{ } =>메소드 구현부 return값이 있다면 구현부안에 'return 값;' 입력
메소드의 종류
- 리턴값이 없고 매개변수도 없는 형태
2. 리턴값은 있고 매개변수(파라미터)는 없는 형태
선언한 타입과 리턴값의 타입이 같아야함. 그러나 정의된 타입의 크기가 더 크다면 가능
3. 리턴값이 없고 매개변수는 있는 형태
4.리턴값이 있고 매개변수도 있는 형태
메소드 연습문제
- 소문자 대문자로 바꾸는 메서드 만들기
알아야할것
- 대문자 A, 소문자 a의 유니코드
- 대문자와 소문자 차이
- 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[]의 데이터를 역순으로 출력하는게 가능하다.
'study > JAVA' 카테고리의 다른 글
자바 JAVA 클래스가 메모리에 저장되는 방식 (0) | 2022.04.01 |
---|---|
자바 Java 값복사와 주소복사란? (0) | 2022.03.31 |
Java 반복되는 코드를 줄이자 리펙토링! (0) | 2022.03.31 |
JAVA 종류별 값의 합 구하기(값 누적) (0) | 2022.03.31 |
[자바 JAVA] 주어진 수까지의 소수 구하기(break 활용하기) (0) | 2022.03.29 |
댓글