명령어(문장) 관리 쉽게 기능단위로 묶는 문법
Java에서는 ‘함수’보다는 ‘메서드’라는 이름으로 칭함
리턴타입 메서드명(변수선언, 변수선언, … ) {
명령문 – 변수선언, 연산자, 조건문, 반복문 …
return 값;
}
메서드가 리턴할 값의 데이터 타입 = 리턴 타입
메서드명 : 어떤 기능을 수행하는 명령어들 이라는 의미에서 동사구 형태로 명명함
getName(), setName(), printName(), doFilter(), parseInt() 등
명사구나 전치사구 형태로 짓는 경우도 있긴함
valueOf(), toString()
메서드 실행 시 선언하는 변수 = 외부에서 넘겨주는 값을 받을 변수 -> 파라미터 ‘Parameter’
미리 만들어둔 (정의해둔) 메서드를 실행하는 것
메서드 정의 definition
메서드 실행 = 호출 call
변수 = 메서드명(값, 값, … );
메서드가 리턴하는 값을 받는 변수
리턴값의 데이터타입과 일치해야함
실행할 메서드명
메서드를 실행할 때 파라미터에 넘겨줄 값 => 아규먼트 ‘argument’
메서드 파라미터의 개수, 타입과 일치해야함
변수 선언 순서와 값의 순서도 일치해야함
void m( ) {
~~~
}
// void – 값을 리턴하지 않음. m - 외부에서 값을 받지 않음
static void hello() {
System.out.println("안녕하세요!");
System.out.println("이 메서드는 어떤 값도 리턴하지 않습니다.");
}
사용
m();
hello();
파라미터 변수가 없으므로 호출 시 값을 넣으면 안됨
void m(int p1, Boolean p2) {
~~~
}
첫번째 값으로 int type의 값을 받고 두번째 값으로 boolean type의 값을 받아야함
값의 data type을 지정했으므로 순서가 바뀌면 안됨
사용
m(100, true);
int m( ) { // 메서드가 어떤 타입의 값을 리턴하는지 선언
~~~
return 100; // 메서드 실행 후 int 타입의 값을 리턴함
}
사용
int result;
result = m(); // m의 값은 무조건 int 형
m();
메서드가 리턴하는 값은 받지 않아도 됨
int m(int p1, int p2) {
if (p1 > p2)
return p1;
else
return p2;
}
리턴 타입 int
파라미터 선언 p1, p2
사용
int result;
result = m(200, 300);
각각의 파라미터에 넘겨주는 200, 300 -> 아규먼트
argument : 파라미터에 넘겨주는 값
코드추가
ex07.Exam0110 ~ 0120.java 참고 - 추가할것
printSpaces((len - starLen) / 2);
printStars(starLen);
System.out.println();
셋 다 statement 문장
그 중 문장을 실행한 후에 결과가 생성(리턴)되는 문장 expression 표현식
코드는 일단 짜고나서 메서드로 묶기
주석이 달린 코드는 수정해서 주석없이도 이해되도록 정리하기 = 리팩토링 Refactoring
객체지향적으로 코드를 수정하는 방법임
SW 공학에서 결과 변경없이 소스를 재조정하는 것
간결하고 직관적인 코드가 되도록 수정하는 과정
나쁜코드 = 코드스멜 code smell 문제 일으킬 가능성 높은 코드
// ex07.Exam0110 ~ 0130 계속 반복
JVM을 통해 클래스 실행 시 1개의 실행흐름이 생성되어 main() 메서드에서 출발
명령어를 실행하는 흐름이 끊기지않은 실과 같아서 ‘thread’ 라 부름
main() 메서드에서 출발하는 스레드를 자바에선 ‘main thread’라 부름
자바에서는 main thread와 별개로 새 thread 만들 수 있음
중간에 다른 new thread() 만들어서 start() 가능
이렇게 서로 간의 간섭 없이 여러 개의 스레드가 동시에 진행되는 것 = ‘Multi-threading’
서버 프로그램 개발에서 사용됨
class Exam0220 {
main() {
int a; // 변수 a는 main 에서만 사용 가능 => 로컬변수
hello(10);
}
hello(int p) { // 변수 p는 메서드 호출 시 넘어오는 값을 담는 변수 => 파라미터
int x; // 변수 p, x -> hello 에서만 사용 가능 => 로컬변수
}
파라미터도 로컬변수의 일종
[리턴타입] 메서드명(타입... 변수) {...}
static void hello(String... names) {
for (int i = 0; i < names.length; i++) {
System.out.printf("%s님 반갑습니다.\n", names[i]);
}
}
0 개 이상의 값을 받을 때 선언하는 방식
메서드 내부에서는 배열처럼 사용
가변 파라미터 자리에 배열을 직접 넣어도 됨
다른 타입을 넣는 것은 불가능
가변 파라미터의 메서드를 호출할 때 낱개 여러 개 값 줘도 되고 배열에 담아서 전달도 가능
배열 파라미터는 배열에만 담아서 전달
여러 개 선언 불가 – 아규먼트 시작과 끝 구분X
반드시 맨 끝에 와야함 – 어떤 게 가변파라미터고 어떤게 그냥 변수인지 구분X
배열 파라미터는 여러 개 선언 가능
순서도 상관 없음
result = plus(plus(plus(2, 3), 4), 5);
static int plus(int a, int b) {
return a + b;
}
가장 안족의 메서드부터 차례로 실행됨
plus(2,3) -> plus(5,4) -> plus(9,5) 순으로 실행
main() 메서드에 있는 변수 a, b
다른 메서드 swap() 메서드에서 해당 변수를 호출해 사용할 때
변수자체를 넘기는 것이 아니라 변수에 들어있는 값만 넘김
둘은 다른 변수로 규정
= call by Value
Heap - new 명령으로 만들어진 변수를 두는 메모리영역
호출됐을 때 값이나 메모리 자체를 넘기는 것이 아니라 주소를 넘기는 것
파라미터에 주소를 넘김
JVM stack 영역 @@@@@@
.class 명령코드
static 변수
new 명령어로 만드는 변수 = 인스턴스
메서드 호출때마다 로컬변수 생성
-> 메서드 호출 끝나면 그 메서드의 로컬변수 제거
!! 레퍼런스 리턴, 파라미터 적용
ex07.Exam0310~0340 다시 복습 제대로
[참고](https://iamfreeman.tistory.com/entry/Eclipse-%EB%8B%A8%EC%B6%95%ED%82%A4-%EB%AA%A8%EC%9D%8C-%EC%9D%B4%ED%81%B4%EB%A6%BD%EC%8A%A4-Effective-Eclipse-Shortcut-Keys)
코드 오류 있는지 한줄씩 확인할 때 사용
step into / step over 두가지 방법으로 코드 이동
over는 전반적인 흐름
into는 그 코드 내부로 들어가는 것
전반적 흐름 보려고 하는거라 거의 step over 사용
빠져나오려면 왼쪽 위에 resume 눌러서 코드 끝까지 진행되어 끝나도록 해주고
오른쪽 위에 있는 Java EE 눌러서 빠져나온다
내 Github로 가서 새 repository 생성
repositpry 이름은 내아이디.github.io 로 한다
README 체크
생성 후 설정에 가서 pages > change theme 선택해서 테마 고르기
내 readme 파일 수정창 뜨면 commit 어쩌고 누른다
좀 기다렸다가 내아이디.github.io 주소로 들어가면 적용한 테마대로 페이지 뜬다
그 외 Jekyll theme 등 여러 방법 존재- 천천히 더 알아보기