인스턴스화란, 컴파일된 클래스를 호출하는 것이고, 이를 통해 재사용성, 이식성을 갖는다.
변수란, 기능을 하도록 여러 값이 들어가는 것이고, 선언위치와 값의 속성에 따라 여러 종류가 있다.(전역변수, 지역변수, 정적변수/int, double, boolean 등)
(public) class 클래스명{
변수선언
메소드 //변수선언 -> 호출 -> 소유주는 클래스 -> 인스턴스화
}
package com.step1;
public class Variable3 extends Object{
//중급으로 가려면 타입을 결정할 수 있어야 하고, 갯수까지도 결정할 수 있어야 한다.
public void account(int z, int y) { //파라미터 자리에 선언된 변수는 지변이고,선언만 되었고,
//17번 라인 메소드가 호출될 때 값이 결정됨
System.out.println("account 호출 성공");
System.out.println(z); //1 -
System.out.println(y); //2 - call by value
}
//사용자 측 개발자가 임의의 메소드를 얼마든지 선언, 구현할 수 있음.
//컴파일을 하는 언어는 컴파일 타임에 JVM이 문법체크를 함. -> JAVA는 다른 언어보다 안전, 일관성, 공정하다
public static void main(String[] args) {
//insert here - 내가 정의한 메소드 account 호출하기
//내 안에 정의된 메소드라 하더라도 static영역 안에서 non-static(스태틱이 없는) 메소드를 호출하려면
//반드시 인스턴스화 할 것(메인 메소드 앞에는 static이 있기 때문에)
//주소번지.or인스턴스변수.해당메소드가 선언된 소유주.account(1,2);
Variable3 v = new Variable3();
v.account(1,2);
v.account(1); //파라미터와 갯수가 다르면 JVM이 같은 메소드 이름이어도 다른 메소드로 인식한다.
v.account("호출");//파라미터와 타입이 다르면 JVM이 같은 메소드 이름이어도 다른 메소드로 인식한다.
}
}
종류 | 할당되는 메모리 크기 | 타입 | 표시 |
---|---|---|---|
int | 4byte | 원시형 | □ |
double | 8byte | 원시형 | △ |
boolean | 8byte | 원시형 | ○ |
String | 1byte | 참조형 | - |
전역변수(global) :
지역변수(local) :
정적변수(static) : ‘클래스타입.변수명’으로 사용(싱글톤, 하나다, 공유된다)
int i = 0;
타입 이름 = 값;
----------
----
(선언) (초기화)
True or False 값을 갖고 조건문, 반복문에서 사용 → 중요
public class Boolean1 {
public static void main(String[] args) {
boolean isOk = false; //boolean 타입에는 접두어로 is를 붙임
isOk = true;
if(isOk) { //false
System.out.println("괄호 안 조건식이 true일 때 실행");
}else {
System.out.println("false일 때 실행");
}
}
public class Static1 {
//아래 변수는 모두 원시형 타입이라 변수 호출 시 값이 출력됨
//참조형 변수는 호출하면 주소번지가 출력됨
int i = 1; //정적 변수는 클래스급, 하나만 생성
static int j = 2;
public double d = 0.5;
public void methodA() {
System.out.println("메소드A 호출 성공"); //꼭 호출해보는 습관 들이기!!
}
public static void methodB() {
System.out.println("메소드B 호출 성공");
}
public static void main(String[] args) {
Static1 s = new Static1();
System.out.println(s.i); // i는 non-static 이라 직접 접근 불가능하여 인스턴스화 필요
System.out.println(j); // 변수 j 선언 시 static을 붙여서 인스턴스 변수 없이 호출 가능
//insert here 0.5 출력해 보세요(변수 d)
System.out.println(s.d); //인스턴스변수.변수로 호출
s.methodA(); //static이 없어 불가 -> 해결 : 앞에 다트연산자 사용하여 추가
methodB();
}
}