성장 일기/쌍용교육센터 / / 2022. 12. 12. 12:31

1212/변수, 메서드

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.

 

특수문자(Escape Character) : 문자열(")안에서 사용하며 기능을 가진 문자

 

주로 사용하는 특수문자 문법 : ("₩문자")

  • "₩t" : Tab키의 기능    사용법 => "안녕\t하세요"  폰트에 따라 다르게 표현될 수 있다.
  • "₩n" : 개행(new line)  사용법 => "안녕\n하세요\n"
  • "₩₩" : 시작문자₩를 일반문자₩로 출력
  • "₩"" : "를 출력

 

변수(Variable)

  • 프로그램에서 사용될 값을 메모리에 일시적으로 저장하고 사용하기 위해
  • 변수명에 따라 가독성이 향상된다.
  • 변수를 선언하는 위치에 따라 instance(member), static(class), local 3가지로 구분된다.
  • instance(member) variable : 객체가 생성될 떄 만들어지고 객체가 소멸되면 사라진다.
  • static(class) variable : 프로그램이 실행되면 만들어지고 프로그램이 실행이 종료되면 사라진다.
  • local variable : 메소드가 호출되면 만들어지고 메소드 호출이 끝나면 사라진다.

 

instance(member) variable

  • class field에 선언하는 변수
  • 객체화 하여야만 사용할 수 있는 변수(객체명.변수명으로 사용)
  • 객체마다 같은 이름의 변수가 만들어지고 사용되는 변수
  • heap memory에 적재되고, 객체가 소멸되면 heap memory에서 삭제되는 변수
  • 자동 초기화가 된다.(변수가 생성될 때 정해진 값이 할당 되는 것)
  • 접근지정자에 따라 다른 클래스에서도 사용 가능하다.

 

접근지정자(access modifier) - 패키지 개념, 메모리 개념

패키지 개념(1개만 사용 가능)

  • pubilc : 모든 패키지의 모든 클래스에서 접근 가능하다.
  • protected : 같은 패키지의 다른 클래스에서 접근 가능하다.
  • protected :  패키지가 다르면 상속관계의 자식클래스에서만 접근 가능하다.
  • default : 같은 패키지의 다른 클래스에서 접근 가능, 패키지가 다르면 접근 불가하다.
  • private : 클래스 안에서만 접근 가능하다.

 

메모리 개념(n개 사용 가능)

  • static : 모든 메모리에서 접근 가능하다.
  • final : 값 변경 불가
  • transient : 직렬화 방지 키워드

 

class diagram : 클래스와 클래스간의 관계를 도식화

public class Hello{
public int a;
protected int b;
int c;
private int d;
}
  • + : public    
  • # : protected
  • - : private
  • ~ : default

 

+Hello
+ : public  
# : protected
- : private

~ : default
 method

 

객체화

  • instance(member) 변수를 static 영역에서 사용하기 위해 heap 메모리 에 올려 놓는 것
  • 객체화로 생성된 객체(instance)에 member로 instance 변수가 포함된다.
  • 문법 : 클래스명 객체명 = new 클래스명();  ex. Test t = new Test(); 
  • 객체 생성용 키워드는 heap에 저장된다.
  • 기본형은 값을 가지지만 참조형은 주소를 가진다.

 

JVM

  • method 영역 : 실행되는 bytecode가 적재, static 변수 저장, 호출한 method 적재
  • stack 영역 : 지역변수가 저장
  • heap 영역 : 객체 저장, instance 변수 저장

 

JVM 순서

  1. new로 객체를 생성하고, 생성된 객체의 주소를 stack 영역에 저장한다.
  2. stack 영역의 객체를 사용하면 가지고 있는 heap의 주소가 나온다.
  3. heap의 주소를 사용하여, instance 객체 안의 instance 변수를 사용한다.

 

instance 객체 : 주소를 가지고 있음

instance variable : instance 객체 주소 안에 있는 변수들

 

instance variable의 초기화 값

  • 객체를 생성하면 heap에 intstance variable가 생성된다.
  • 값을 설정하지 않아도 자동으로 정해진 값이 할당된다.
  • 객체화 후 값을 할당하지 않고 바로 사용하더라도 에러가 발생하지 않는다.
데이터형 초기화 값
정수형(byte, short, int, long) 0
문자형(char) ₩u0000
실수(float) 0.0
불린(boolean) False
참조형(class, String, array) null (heap의 주소를 가지지 않는다.)

static(class) 변수도 동일한 값을 가진다.

 

static(class) variable

  • 공용 변수
  • Java Program이 실행되면 method 메모리에 올라가는 변수
  • 하나의 변수가 만들어지고 모든 객체는 하나의 변수를 사용한다. (공용)
  • 모든 영역에서 사용할 수 있다.
  • 객체화를 하지 않아도 사용할 수 있다.
  • instance variable보다 참조하는 속도가 빠르고 메모리를 적게 사용한다.
  • 변경된 값이 모든 객체에 반영된다.
  • 사용하지 않더라도 메모리를 계속 점유한다. (메모리 낭비)
  • 작성법 : 접근지정자 static 데이터형 변수명;
  • 사용법 : 클래스명.변수명 <= 특정 객체에 속하지 않기 때문에 객체명으로 사용하지 않는다.

 

method

  • 자주 사용될 코드(업무)를 미리 정의해두고, 필요한 곳에서 호출하여 사용하기 위해서
  • 코드의 중복성을 최소화할 수 있다.
  • 코드를 업무별로 구분할 수 있다.
  • Instance method, static method로 작성한다.
  • Instance method : 객체가 가지고 있는 값을 사용해 처리해야 하는 경우 => 객체화 후 사용
  • static method : 입력된 값으로만 처리해야 하는 경우 => 객체를 생성하지 않고 사용

 

작성법

접근지정자 반환형 method명(매개변수){
    구현할 코드
}
  • 접근지정자 : 패키지 개념은 1개, 메모리 개념은 n개 사용 가능
    public : 패키지에 상관 없이 클래스 외부에서 호출 가능
    protected : 같은 패키지의 다른 클래스에서 호출 가능
                      패키지가 다르면 상속관계의 자식클래스에서 호출 가능
    default : 같은 패키지의 다른 클래스에서 호출 가능
                  패키지가 다르면 호출 불가능
    private : 클래스 안에서만 호출할 때
    static : 객체화를 하지 않고 method를 호출할 때
    final : Override를 막을 때
    synchronized : Multi thread에서 동시호출을 막을 때
  • 반환형 : 업무처리한 결과를 호출한 곳으로 돌려줄 때 기본형이든 참조형이든 1개만 사용 가능
  • 매개변수 : method가 일처리에 필요한 값들을 넣어주는 변수

 

method 호출

  • instance method => 객체화 후 객체명으로 호출
class Test{
public void method(){

 }
}
//1. 객체화
Test t = new Test();
//2. 호출
t.method();
  • static method => 객체화 없이 클래스명으로 호출
class Test{
public static void method(){

 }
}
//1. 호출
Test.method();

 

method의 4가지 형태

고정적인 일을 하는 형 : 반환형 없고, 매개변수 없는 형 

public void method(){

}
//호출) 객체명.method명();

가변적인 일을 하는 형 : 반환형 없고, 매개변수 있는 형

public void method(매개변수){

}
//호출) 객체명.method명(매개변수에 맞는 데이터 값);

 

값으로 사용하는 method - 고정 값, 가변 값

  • method의 반환형이 void가 아닌 다른 형이 되어야 한다.
  • method의 가장 마지막 줄에 반드시 return 값이 정의되어야 한다.

 

고정 값 : 반환형 있고, 매개변수 없는 형

public 반환형 method명(){

	return 값;
}
//호출) 데이터형 변수명=객체명.method명();

가변 값 : 반환형 있고, 매개변수 있는 형

public 반환형 method명(매개변수){

	return 값;
}
//호출) 데이터형 변수명=객체명.method명(매개변수에 맞는 데이터 값);

 

배우고 느낀점

오늘 배운 것들이 자바 공부를 하면서 가장 핵심적이라고

생각될 정도로 중요한 것들을 배운 것 같다.

변수의 종류, 메소드 호출의 종류, 접근지정자와

JVM에서 메모리와의 관계 등 지속적으로도 공부를

해야한다는 게 느껴졌다. 메모리에 대해서는 잘 익숙하지

않으므로 그 부분에 대해 더 공부를 해야겠다.

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

1214/메서드  (0) 2022.12.14
1213/객체지향  (0) 2022.12.12
1209/반복문  (0) 2022.12.12
1208/조건문, 반복문  (0) 2022.12.12
1207/소스코드 동작, 이클립스 개요  (0) 2022.12.12
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유