문제 풀이
1번)
int x; 는 x라는 변수를 선언 (but x 를 출력하면 않음)
오직 정수형 데이터만 담을수 있다.
지역 변수라서 초기화하지 않고는 사용 x
전역변수였다면 기본값 0으로 초기화 되어있을터 0이 기본값인 이유는
정수는(양수,음수, 0) 중에 특정값을 기본값으로 가지는건 자바 입장에서 말이 안됨
(특정 양 수, 특정 음수)
따라서 가장 의미가 적은 0을 기본값으로 가짐
x = 20;이라는 의미는
x라는 변수에 20이라는 값을 넣겠다
지역변수라면 해당 과정을 거치지 않고는 사용 불가
전역변수라면 0으로 초기화 되어있던 공간에 20이라는 값을 덮어씌우는 과정
재할당!
2번) 문제 : 레퍼런스변수에 값 할당과정 설명
자동차 a자동차;
-> 오직 자동차 데이터(자동차 객체를 컨트롤 할 수 있는
리모컨(자동차 리모컨))만 가질수 있다
당연히도 지역변수라서 초기화 하지 않고는 사용할수 없다
전역변수라면 기본값 null로 초기화 되어있을 것이다
참조형 함수들 기본값이 null인 이유?
......
a자동차 = new 자동차();
a자동차라는 변수에 자동차 리모컨(this)을 연결하겠다!
-> 현재 상황에서는 자동차 객체가 존재한다라는 의미
지역 변수라면 해당 과정을 거치지 않고는 사용 불가(필수 과정)
전역 변수라면 null로 초기화 되어있던 공간에 자동차 리모컨을 덮어씌우는 과정
a자동차.달리다();
a자동차 변수가 가지고 있는 리모컨의 버튼을 누른다
달리다() 라는 버튼을 신호가 실존하는 객체에 전달되어 객체가 가진
달리다()라는 메서드가 실행된다
class 자동차
void 달리다() {
System.out.println("자동차가 달립니다.");
}
}
이 메서드(함수)의 2가지 용도
-> 기능 동작, 리모컨의 버튼
문제 : 자동차를 올바르게 달리게 해보세요. 그리고 그 과정을 자세히 설명해주세요.
1. 설계도(클래스)가 필요
2. 설계도 안에 메서드가 선언되어 있어야 함
3. 설계도 타입으로 리모컨 저장할 변수를 생성
4. 설계도를 기반으로 인스턴스를(객체) 생성함
5. 변수에 리모컨을 연결
6. 변수가 가진 리모컨의 달리다 버튼을 누른다!
7. 신호가 전달되어 실존하는 객체가 가진 달리다 메서드가 실행
static(스테틱)
// 스테틱 part
// public static void main 에서
// static -> 정적 - 멈춰있다
// 실제로 멈춰있어서
//
// 동적 할당 - 할당을 상황에 따라 유도리 있게 하겠다
// 한번 할당받은 곳에서 안 움직인다
// 프로그램이 시작되고(메인메서드 실행) 자리를 잡은 뒤에 프로그램이 끝날떄까지 안움직이고
// 고정되어 있다
// 객체를 만들지 않고 클래스에게 직접 호출하는 형태로 사용될 수 있다
1차원적인 숫자들은 스텍
참조형은 heap에 저징
클래스 파일은 메소드 영역에 저장
static
장점 : 객체(인스턴스) 안 만들어도 사용 가능
실행속도가 빠르다(인스턴스 문법에 비해서) why? -> 인스턴스 안 만들어도 되니까!
질문 : 우리가 지금까지 해왔던 인스턴스 변수, 인스턴스 메서드보다
static이 좋다? -> x!
단점 : 메모리 관리를 효율적으로 못한다(동적으로 할당하는 시스템이 x
언어가 가진 본질을 흐린다(스테틱 남발시)
static이 꼭 필요한 시점
현재 날짜와
스테틱이 붙은 메서드는 인스턴스 안만들고 클래스한테 직접 호출 가능
스테틱이 붙은 변수는 모든 인스턴스들이 공유하는 공유자원이다
argument, parameter(매개변수)
메서드에게 값을 주는것 --> 인자(인수) .. 메서드 호출할때!
매개변수 -> 메서도 외부와 메서드 내부를 연결하는 매개체
인자와 매개변수의 개수와 타입이 일치해야 작동함
또한 이때에 인자의 순서와 매개변수의 숫자는 일치! 인1, 매1 .. 인2, 매2...
매개변수 예시)
계산기.합(10, 20);
계산기.합(30, 20);
.
.
.
class 계산기 {
static void 합(int a , int b) {
System.out.println(a + b);
결과는 30, 50으로 나옴!
매개변수는 메서드가 선언될 때 사용
자바는 매개변수한테 직접 값을 정하는 거 x
매개변수는 타입 사용 제한 x (혼용 가능!)
return(리턴)
상속 inheriit
casting
상속을 통한 casting