티스토리 뷰

728x90
반응형

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

 

[Java] 자바 static의 의미와 사용법

정적(Static)이란? 정적(static)은 고정된이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Static메소드를 만들 수 있는데 다른말로 정적필드와 정적 메소드라고도 하며 이

coding-factory.tistory.com

lnsideout.tistory.com/entry/JAVA%EC%9E%90%EB%B0%94-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B9%84%EA%B5%90-equals-%EC%82%AC%EC%9A%A9%EB%B2%95-%EB%B0%8F-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

[JAVA]자바 문자열 비교 equals(), == 사용법 및 차이점

java 문자열 비교 제대로 알고 사용합시다. 안녕하세요 오늘은 문자열 대표적으로 문자열 비교하는 equals() 메소드와 비교연산자인 == 에 대해서 알아보겠습니다. 1. == 비교를 위한 연산자 주소의

lnsideout.tistory.com

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30