스파르타코딩클럽/항해99

웹개발의 봄, Spring 1주차

예령 : ) 2022. 3. 18. 19:37

메소드 (Method) - 함수(function)와 비슷한 개념

 

| 메소드의 구조

public (반환형) 메소드명(파라미터) {
	// 명령 내용
	return (반환값)
}

 

| 메소드의 특징

  • class 안에만 작성을 해야한다. 
  • public 은 반드시 써줘야 한다. 
  • main 함수에서 실행을 하려면 static을 반드시 써줘야 한다.
  • 반환값, 즉 return이 있다면 void 대신 method 명 앞에 return할 값의 자료형(Data type)을 써주고 return이 없다면 반환형 자리에 void를 써준다. (ex. String, int..)
    - 데이터 타입과 void는 return 값의 유무에 따라 둘 중 하나만 쓴다고 이해하면 될 것 같다.
  • 파라미터(입력값)는 있을 때도 있고 없을 때도 있다. 

 

| main 에서 method를 실행할 때

  • 반환값(return)이 없다면 함수를 호출해주기만 하면 된다.
  • 반환값(return)이 있다면 함수를 받을 변수를 지정해주고 System.out.println( ); 에 변수를 받아 보여준다.
// 파라미터 X, 반환값 X
public void simplePrint() {
	System.out.println("파라미터도 없고, 반환값도 없어요!");
}

// 파라미터 O, 반환값 X 
public void simpleSum(int num1, int num2) {
	System.out.println("num1 :" + num1 + ", num2: " + num2);
}

// 파라미터 X, 반환값 O
public int simpleReturn() {
	return 3;
}

// 파라미터 O, 반환값 O
public int sum(int num1, int num2) {
	return num1 + num2;
}

 


| List (List는 컬렉션 클래스)_종류 중 일부 

 

List<String> aa = new ArrayList<>( );

👉 String 타입의 aa라는 리스트 생성

 

  • List는 요소의 저장 순서가 유지된다.
  • 같은 요소의 중복 저장을 허용한다.

List<Integer> bb = new ArrayList<>( );

👉 Int 타입의 bb라는 리스트 생성 (*Int와 Integer는 차이가 있음)

 

| List 메소드

 

- .add(String, Int) : 해당 리스트에 전달된 요소를 추가한다.

 

.- get (Int index) : 해당 리스트의 특정 위치에 존재하는 요소를 반환한다.

 

- .remove(int Index) : 해당 리스트의 특정 위치에 존재하는 요소를 제거한다.

 

- .size( ) : 해당 리스트의 요소의 총 개수를 반환함. (List에서는 .length( ) 대신 .size( ) 사용)

 

- Object[] toArray( ) : 해당 리스트의 모든 요소를 Object 타입의 배열로 반환한다.

 

1. Object[] 배열에 toArray()로 담는 경우

👉 Object[] obj = (Object[]) list.toArray();

에러없이 잘 받아진다. 형변환은 생략해도된다.

 

2. String[] 배열에 toArray()로 담는 경우

=> String[] str = (String[]) list.toArray();

실행시 에러가난다. toArray()는 Object[]형태로 반환되고 String[]으로 형변환이 불가하기 때문이다.

 

따라서 String형으로 받고자하는 경우는 밑과 같은 방식으로해야한다.

String[] str = new String[list.size()];

str = (String[]) list.toArray(str);


클래스 class

 

: 정보를 묶는 것, 메소드와 변수를 담고 있다.

 

생성자

public class Course {
    public String title;
    public String tutor;
    public int days;

	// 기본 생성자 : 파라미터(입력값)가 없는 생성자
    public Course() {

    }
	
    // 생성자
    public Course(String title, String tutor, int days) {
      // this : 클래스의 변수를 가리킴
        this.title = title;
        this.tutor = tutor;
        this.days = days;
    }
}

생성자를 하나라도 넣게 되면 기본 생성자는 없는 것으로 간주된다. + 기본 생성자를 필요로 한다면 추가로 넣어주면 된다.

 

Rest

: 서버의 응답이 JSON 형식임을 나타낸다.

  HTML, CSS 등을 주고받을 때는 Rest를 붙이지 않는다.

 

Controller

: 자동응답기, 클라이언트의 요청(Request)을 전달받는 코드

  👉 JSON 만을 돌려주는 것은 RestController라고 부른다.

 

1주차 회고록


지난 알고리즘 문제를 풀었을 때 자바 강의를 조금 들어서 아예 처음 듣는 내용은 몇 개 없었다. 그래도 아직 직접 적용하기에는 어려운 내용도 많은 것 같다. Private과 Public의 차이를 배웠다. 정보를 함부로 수정할 수 없도록 하기 위해 Private을 사용하고, 그 정보를 저장하고 가져올 때도 단순히 쓸 수 있는 것이 아니라 Setter와 Getter를 이용해 코드를 작성해야 한다. 

 

Setter는 정보를 보내줄 떄 사용하고 Getter는 반대로 정보를 가져올 때 사용한다. 아래는 그 사용의 예시이다.

//Setter
public void setName(String name) {
    this.name = name;
}
public void setAge(int age) {
    this.age = age;
}
public void setNickname(String nickname) {
    this.nickname = nickname;
}

//Getter

public String getName() {
    return this.name;
}
public int getAge() {
    return this.age;
}
public String getNickname() {
    return this.nickname;
}

 

또, Controller의 개념도 배워서 입력한 정보를 서버에서 Json 형태로 받아오는 작업도 해보았다. 수업 시간에 배운 코드를 따라서 작업을 해보았는데 오류가 나지 않은 채 서버에서 열리지 않는 문제가 발생했다. 정확한 원인은 모르겠지만 Setting에서 Gradle의 Build and using과 Run tests using을 Intellij IDEA로 바꿔주니 정상적으로 작동했다. 

 

새 프로젝트를 만들 때마다 설정에서 auto import를 포함해 다른 세팅을 모두 마친 환경에서 작업해야겠다고 생각했다.

 

참고자료


List 컬렉션 클래스

toArray( ) 메소드

String to Array : 문자열을 배열로 전환