3/18 자바 기본문법정리

안대륜·2022년 3월 18일
post-thumbnail
  • API
    정해진 약속 같은것임 클라이언트에서 정해진대로 요구를 하면 서버에서는 그에 따른 응답을 돌려주는것

  • 변수
    값을 담는 상자변수를 선언할때는 (자료의종류) (변수명[영어,소문자시작,구분은 대문자로]) =값;

  • Float타입
    값뒤에 f를 붙여주고 Long타입은 값뒤에 L을 붙여준다

  • 배열만들어주기
    List<String[TYPE]> myList(name) = new ArrayList<>();

  • 배열은 순서가 중요하고 , 같은자료형만 넣을수있으며 ,넣을때는 add 조회할때는 get, 제거할때는 remove를사용한다.

  • Ex) myList.add(추가할려는 변수명)

  • Ex) System.out.println(myList.get(1)); (myList의 1번쨰 인덱스에있는 애를 꺼내겠다)

  • Ex) myList.remove(1); (1번째 인덱스값 삭제)


메소드

public (반환타입) 메소드명(파라미터)
// 명령내용
retuen(반환값)
  • 반복적인 행동을 줄여서 어디든 갖다쓸 수있는 명령 모음
    내가 명령을 내릴 것들의 모음에 이름을 붙여서 사용을하는것

  • 메소드가 없을떄

public class Prac {
    public static void main(String[] args) {
        String title = "웹개발의 봄 Spring";
        String tutor = "DaeRyun";
        int weeks = 5;
        float ratings = 5.0f;

        System.out.println("제목:" + title);
        System.out.println("튜터:" + tutor);
        System.out.println("주차:" + weeks);
        System.out.println("별점:" + ratings);
    }
}
  • 메소드가 있을때
public class Prac {
    public static void printInfo() { //메소드 시작
        String title = "웹개발의 봄 Spring";
        String tutor = "DaeRyun";
        int weeks = 5;
        float ratings = 5.0f;

        System.out.println("제목:" + title);
        System.out.println("튜터:" + tutor);
        System.out.println("주차:" + weeks);
        System.out.println("별점:" + ratings);
    } //메소드 끝
    public static void main(String[] args) {
        printInfo();
        printInfo();
        printInfo();
        printInfo();
        printInfo();
    }
}

메소드명 규칙은 변수명과 같음 :

(영어사용 , 시작은 소문자시작 ,공백없어야함,단어의뜻이 바뀌면 대문자로 시작해줘서 구분)

  • 클래스 안에만 작성을 해야한다.

  • 메소드에 리턴(반환값)이 없으면 void(아무것도 안돌려준다,비었다는 의미)를 써준다

  • 반환값이 있으면 값을돌려줄 자료형을 써준다

  • 메인함수안에서 메소드 실행을 하려면 메소드에static이라는 글자가 반드시 들어와야함

  • EX)

public class Prac {
    // 파라미터 X, 반환값 X
    public  void simplePrint() {
        System.out.println("파라미터도 없고, 반환값도 없어요!");
    }

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

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

    // 파라미터 O, 반환값 O
    public static int sum(int num1, int num2) {
        return num1 + num2;
    }
    public static void main(String[] args) {
        simplePrint(); // 메소에 static이없기때문에 에러뜸
        
        int ret1 = simpleReturn();
        System.out.println(ret1); //3 출력
        
        int ret2 = simpleSum(10,10); // 메소드에 리턴값이 없어서 에러발생
        System.out.println(ret2);
        
        int ret3 = sum(3,4); 
        System.out.println(ret3); // 7을 출력

    }
}

반복문

for (시작 조건; 계속하는조건 ; 더하기) {
명령
}

for (int i=0; i<fruits.size(); i++) {
    String fruit = fruits.get(i);
    System.out.println(fruit);
}
  • size() = 들어있는개수

조건문

 int age =19;
 if (조건) {
 	명령문
} else if (조건) {
	명령문2
} else {
	명령문
}

int age = 34;
        if (age > 19) {
            System.out.println("성인입니다.");
        } else if (age > 50) {
            System.out.println("장년");
        } else {
            System.out.println("미성년자입니다.");
        }

반복조건문 활용

public class Prac {
    public static int countFruit(String fruit) {
        List<String> fruits = new ArrayList<>();
        fruits.add("감");
        fruits.add("배");
        fruits.add("감");
        fruits.add("딸기");
        fruits.add("수박");
        fruits.add("메론");
        fruits.add("수박");
        fruits.add("딸기");
        fruits.add("메론");
        fruits.add("수박");
        fruits.add("메론");
        fruits.add("수박");
        fruits.add("감");
        int cnt =0;
        for (int i=0; i<fruits.size(); i++) {
            String f = fruits.get(i);
            if ( f== fruit(입력한과일문자)) {
                cnt++;
            }
        }
        return cnt;
    }

    public static void main(String[] args) {
        int gam = countFruit("감");
        int subak = countFruit("수박");
        int stra = countFruit("딸기");
        System.out.println(gam); // 3 출력
        System.out.println(subak); // 4 출력
        System.out.println(stra); // 2 출력
    }
}

클래스

  • 클래스는 정보를 묶는것 , 클래스의이름첫글자는 대문자로 지어져야한다.

  • 가져오는 클래스 메소드에는 리턴값이없다.

  • 객체지향 프로그래밍 : 조금 더 프로그래밍을 현실 세계에 빗대어 체계적으로 해보자는 발상
    현실과 비슷한 개념(객체를) 나타내기 위한 자바의 도구를 클래스라고한다.

  • 클래스 내 정보를 멤버 변수라고함

  • 앞에 클래스명을 써주고 new 클래스명();

   Course course = new Course();
// 클래스명  변수명     클래스 이름(생성자)

출력값

  • 생성자(빵틀)을 이용하여 변수(빵)들을 여러개 만드는것을 클래스를 활용한다고 한다

  • 위에는 빵을 하나하나만들고 빵 값 하나하나를 부여했다면

  • 처음부터 빵에 이름을 부여할수있는 방법 : 생성자를 만들어준다

  • 생성자는class 이름이랑 메소드이름을 똑같이 써야한다

// 기본생성자(아무것도 없는거)
    public Course() {

    }

    //  생성자
    public Course(String title ,String tutor , int days){
        this.title =title;
// this.title은 필드 title을 말하고 =title은 매개변수를 뜻한다. 즉매개변수의 값을 필드에 대입하라는의미
        this.tutor =tutor;
        this.days =days;
    }
  • 기본생성자가 없으면 에러남, 하지만 자바에서는 기본생성자가 입력되있지 않으면 자동으로 만들어준다

  • 생성자를 추가로 하나라도 더 만들면 기본생성자가 없는걸로 취급이된다. 그래서 생성자를 추가로 만들면 기본생성자를 같이 넣어줘야한다

  • 생성자로 가져오는 클래스 메소드에는 리턴이 없다

  • 생성자의 역할은 객체가 될때 필드를 초기화하는것임

  • this는 자기자신을 참조하는 키워드


Setter

  • 가져오는걸 게터 , 설정하는걸 세터
  • 생성자에서 private를 선언하면 밖에서 바꾸지못함 (고객의 중요정보)
  • 바꾸고싶다면 메소드를 통해서 바꾼다
public 리턴타입 메소드명(재료) {
	명령
}

public void setTitle(String title) {
	this.title =title;
// 내 변수에 title은 전달받은 title로 바꾸겠다
}
  • 값을 지정하는건 setter인데 setter는 돌려주는건 딱히없어도 되기에 void로 리턴타입을해줌
  • 메소드명은 set을 무조건 넣음
  • 돌려주는값은 필요가없지만 세터를 설정하기위한 값은 받아야한다.
  • private인 형태를 private으로 선언된 멤버변수를 바꿀수있는방법(이런형태를 setter라고함)

Getter

 //Getter
        public 반환타입 메소드명(재료) {
            명령
            return 반환값;
        }
        
        //Getter
        public String getTitle() { //그냥 가져오면 되기때문에 파라미터는 필요없음
         return this.title;
        }
  • 게터는 돌려주기위해서 받아야할게 없어서 메소드를만들때 파라미터는 없어도된다.
  • 리턴타입이 중요함
  • 누구나사용할수있게 퍼블릭으로 접근시작
  • get을 써준후에 멤버변수의 첫글자를 대문자로입력
  • 결과값을 출력할때 게터형식으로 해줌

Rest란?

  • 서버의 응답이 JSON형식임을 나타냄

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

    Controller?

  • 자동응답기

  • 서버가 있고 클라이언트가 있을 때 서버가 뭔가 요청하면 받는 녀석이있다 그리고 그 응답을 받고 돌려주는 제일 앞에있는 녀석임


    멤버변수

  • 멤버변수는 선언위치가 클래스 영역이고 지역변수의 선언위치는 메소드나 생성자 내부입니다.

  • 클래스변수는 static이붙음

  • 인스턴스 변수는 객체 생성을 해야 사용가능하다

0개의 댓글