티스토리 뷰
1. Static
정적(static)은 고정된이란 의미를 가지고 있다. static이라는 키워드를 사용하여 static변수와 static메서드를 만들 수 있는데 다른말로 정적필드와 정적 메서드라고도 하며 이 둘을 합쳐 정적 멤버라고 한다.(클래스 멤버라고도함) 정적 필드와 정적 메서드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버이다.
Static 필드
인스턴스 변수는 인스턴스가 생성될 때마다 생성되므로 인스턴스마다 각기 다른 값을 가지지만 정적 변수는 모든 인스턴스가 하나의 저장공간을 공유하기에 항상 같은 값을 가지기에 나타난 현상이다.
class Number{
static int num = 0; //클래스 필드
int num2 = 0; //인스턴스 필드
}
public class Static_ex {
public static void main(String[] args) {
Number number1 = new Number(); //첫번째 number
Number number2 = new Number(); //두번쨰 number
number1.num++; //클래스 필드 num을 1증가시킴
number1.num2++; //인스턴스 필드 num을 1증가시킴
System.out.println(number2.num); //두번째 number의 클래스 필드 출력
System.out.println(number2.num2); //두번째 number의 인스턴스 필드 출력
}
}
Static 메서드
정적 메서드는 클래스가 메모리에 올라갈 때 정적 메서드가 자동적으로 생성되므로 정적 메서드는 인스턴스를 생성하지 않아도 호출할 할 수 있다.
public class Prac {
// 파라미터 X, 반환값 X
public void simplePrint1() {
System.out.println("파라미터도 없고, 반환값도 없어요!");
}
public static void simplePrint2() {
System.out.println("파라미터도 없고, 반환값도 없어요!");
}
public static void main(String[] args) {
Prac prac = new Prac(); // 인스턴스 생성
prac.simplePrint1(); // 인스턴스를 생성후에 호출가능
simplePrint2(); // static 메서드는 인스턴스 생성 없이 호출 가능
}
}
2. 문자열 비교
- == 비교를 위한 연산자
주소의 값을 비교한다. (Call By Reference)
주소의 값이란 실제 내용의 값이 아닌 자료의 위치의 값이라고 생각하면 편하다.
- equals() 메서드
equals() 메서드는 객체끼리 내용 비교한다. (Call By value)
public class codeTest {
public static void main(String[] args) throws Exception{
String str1 = "abc";
String str2 = str1;
String str3 = new String("abc");
// == 연산자는 주소를 비교합니다.
System.out.println(str1 == str2); // true
// str2 에 st1 값을 넣었으므로 주소를 같이 공유합니다.
System.out.println(str1 == str3); // false
// str1 과 str3는 각각 생성 되었으므로 주소가 다릅니다.
// equals() 는 내용을 비교합니다.
System.out.println(str1.equals(str2)); // ture
System.out.println(str1.equals(str3)); // true
// 내용을 비교하기떄문에 abc 내용이 같으므로 true 가 반환됩니다.
}
}
1) str1 == str2
str2를 str1에 넣었기 때문에 같은 주소를 사용하고 있어서 true 결과가 나온다.
2) str1 == str3
str3는 새로운 new String으로 새로운 주소를 부여해서 주소 비교로 인해 false 결과가 나온다.
str1과 str3는 다른 객체이기 때문이다.
3) str1.equals(str2)
내용 비교이므로 "abc" 내용이 같아서 true 결과가 나온다.
4) str1.equals(str3)
내용 비교이므로 "abc" 내용이 같아서 true 결과가 나온다.
나는 문자열 비교는 무조건 equals를 써야하고 ==은 안되는줄 알고 넘겼었는데
왜 안되는지랑 되는경우도 있다는것을 알게되었다.
근데 문자열을 비교할때에는 == 보다는 equals를 쓰는게 더 좋은것 같다.
3. Setter / Getter
멤버변수를 선언할때 다른 클래스에서는 사용하지 못하게하고 Setter/Getter를 이용해서 접근하는게 옳은 방식이다.
Setter
private로 되어있는 멤버는 다른 클래스에서 사용할 수 없기 때문에 Setter를 이용해서 바꿔준다.
// Setter
public void setTitle(String title){
this.title = title;
}
public void setTutor(String tutor){
this.tutor = tutor;
}
public void setDays(int days){
this.days = days;
}
Getter
private로 되어있는 멤버는 다른 클래스에서 조회도 못하기 때문에 Getter를 사용해서 가져온다.
// Getter
public String getTitle(){
return this.title;
}
public String getTutor(){
return this.tutor;
}
public int getDays(){
return this.days;
}
4. 용어
Rest
서버의 응답이 JSON 형식임을 나타낸다.
HTML, CSS 등을 주고 받을 때는 Rest를 붙이지 않는다.
Controller
클라이언트의 요청(Request)을 전달받는 코드를 Controller 라고 부른다.
-> JSON 만을 돌려주는 것은 RestController 라고 부른다.
RestController
@RestController
public class CourseController {
@GetMapping("/courses")
public Course getCourses() {
Course course = new Course();
course.setTitle("웹개발의 봄 스프링");
course.setDays(35);
course.setTutor("남병관");
return course;
}
}
@GetMapping
브라우저에서 주소를 치는 행위는 GET방식으로 정보를 요청하는것이다.
스프링 주소(http://localhost:8080) 뒤의 주소가 /courses 일 경우, getCourse 메소드를 실행함을 나타낸다.
Gradle
다른 사람이 만들어놓은 라이브러리 코드를 가져오는데 도움을 준다.
그리고 배포 할 때도 도움을 준다.
Reference
coding-factory.tistory.com/524
'항해99' 카테고리의 다른 글
[항해99] 웹개발의 봄, Spring 강의(4) 정리 (0) | 2021.03.20 |
---|---|
[항해99] 웹개발의 봄, Spring 강의(3) 정리 (0) | 2021.03.20 |
[항해99] 웹개발의 봄, Spring 강의(2) 정리 (0) | 2021.03.19 |
[항해99] 2주차 회고 알고리즘-1 (개념 & 문제풀이) (0) | 2021.03.14 |
[항해99] 1주차 회고 미니프로젝트 (0) | 2021.03.06 |