KeyWords : Method, Class
void welcome(String name) {
System.out.println(name + "님 안녕하세요");
}
void welcome(int num) {
System.out.println(num+"번님 안녕하세요");
}
인수와 매개변수 : 메소드에게 전달해주는 무언가
*Argument : 메소드를 사용할 때 메소드의 매개변수로 전달될 값
*Parameter : 외부에서 전달받아 값을 저장하고 메소드 내에서 사용할 변수
int ar = new int[3];
Scanner cs. new Scanner(System.in);
sc.next();
// new : heap메모리 영역에 저장, 값이 정해지지않았다면 기본값을 올림 = 0, ""
🍄 클래스 선언
class 클래스명{
field - 상태
method - 동작
생성자
}
public class Bike(){
// field
int wheel;
String color;
int price;
}
public class ClassTest{
public static void main(String[] args){
// 객체화
// className objectName = new ClassName();
Bike bike1 = new Bike();
System.out.println(bike1.color);
System.out.println(bike1.price);
}
}
🍄 생성자
클래스명 뒤에 소괄호가 있는 형태
생성자의 역할은 필드를 초기화함
단, 생성자는 리턴이라는 기능이 존재하지 않음
🍄 기본 생성자
클래스명()
클래스 선언시 자동으로 선언되며 사용자가 직접 생성자를 선언하게 되면 자동으로 선언해주지 않음
--> 기본 생성자와 오버로딩한(직접 선언한) 생성자를 같이 사용하고 싶다면 기본 생성자를 직접 선언해야함
🍄 this
객체의 주소값이 this라는 변수에 자동으로 담기게 됨
일반적으로 생성자의 매개변수와 필드의 이름이 같은 경우 구분하기 위해 사용
🍄 this()
자기 자신의 다른 생성자를 의미
생성자 내부에서만 사용이 가능하며 최상단에 작성
클래스명 객체명 = new 클래스명()
Scanner sc = new Scanner(System.in)
Bike bike1 = new Bike()
필드사용 : 객체명.필드명
메소드 사용 : 객체명.메소드명()
ClassTest ========================
static void methodA(){
System.out.println("static method 실행");
}
// 원래라면
ClassTest ct = new ClassTest();
ct.methodA();
// 근데 static을 붙이면 이렇게만 가능 - 메모리에 올리지 않아도 실행 가능
methodA();
compiler가 static 키워드를 메모리에 한번에 모아서 쭉 올림
메소드는 메모리에 올린 시점부터 사용 가능
Static 키워드가 있는 메소드는 프로그램이 시작하자마자 메모리에 올라가는거고
static 키워드가 없는 메소드는 객체화를 한 시점부터 메모리에 올라가서 사용 가능
static method 사용할때 : className.methodName
Bike bike1 = new Bike();
// => 객체 생성
// bike1은 객체
// bike1은 Bike클래스의 인스턴스