Search

반응형

'Software'에 해당되는 글 190건

  1. 2021.08.01 변수와 객체 정리해 보기. 클래스 변수, 파라메터, 인스턴스 변수, 지역 변수, 전달 인자...
  2. 2021.05.30 [PLSQL]변수와 상수 친절한 설명으로 이해하기.
반응형

안녕하세요. 신기한 연구소입니다.

프로그램을 개발하다 보면 변수에 대한 이름을 혼동해서 사용하는 경우가 종종 있습니다.

그래서 깔끔하게 정리해볼까 합니다.

우선 변수가 무엇인지 알아야겠지요?

기존 포스팅에 잘 설명이 되어 있으니 참고하시기 바랍니다.

2021.04.10 - [Software/Python(파이썬)] - [왕초보]파이썬 변수 이해하기 편. ( Python variable)

 

[왕초보]파이썬 변수 이해하기 편. ( Python variable)

안녕하세요. 신기한 연구소입니다. 며칠 전 중학생 아이가 갑자기 파이썬 아는지 묻더군요. 학교에서 배우기 시작했다는데 궁금한 게 많은가 봅니다. 게다가 이제 초등학교 2학년 아이도 파이썬

tiboy.tistory.com

또는 다음 포스팅도 참고하세요.

2021.05.30 - [Software/데이터베이스(SQL)] - [PLSQL]변수와 상수 친절한 설명으로 이해하기.

 

[PLSQL]변수와 상수 친절한 설명으로 이해하기.

안녕하세요. 신기한 연구소입니다. 변수와 상수에 대해 알아봅니다. 우선 간단하게 변수와 상수가 무엇인지 알아봅니다. 변수는 변하는 수입니다. 즉, 값을 바꿀 수 있다는 의미입니다. 빈 박스

tiboy.tistory.com

자 이제 간단하게 정리해보겠습니다.

변수는 위 내용을 기반으로 이해하면 됩니다.

클래스 변수는 자바의 Class를 구현한 뒤 static을 붙여줍니다.

그러면 클래스가 메모리에 로딩될 때 해당 static 변수는 전역 변수처럼 어디서든 사용할 수 있게 됩니다.

그 말은 프로그램이 실행 중이라면 어디선가 마지막으로 바꾼 값을 가지고 있다는 의미이기도 합니다.

public class sampleClas {

   static String staVal;

}

이렇게 선언한 뒤 sampleClas.staVal (클래스명. 클래수변수명)처럼 사용하면 됩니다.

인스턴스 변수는 객체가 생성될 때 같이 만들어집니다.

객체는 클래스를 기반으로 만들어지며 메모리에 로딩될 때

인스턴스화 돼서 인스턴스가 되는 겁니다.

그래서 인스턴스 객체라고 부른답니다.

객체를 만드는 기반은 클래스.

클래스를 기반으로 객체를 생성하는 과정을 인스턴스화.

그렇게 메모리에 로딩된 객체는 인스턴스.

public class sampleClas {

     String insStr = "";

}

클래스 선언 후 객체로 생성된 후 사용이 가능하며,

각 객체(인스턴스)마다 고유의 변수가 되며 각자의 값을 가지게 됩니다.

객체명(인스턴스명).변수명으로 사용됩니다.

이렇게 두 개의 변수는 클래스 영역에서 선언된답니다.

 

그다음 클래스 내 메서드를 선언하고

그 안에서 사용하는 변수가 있는데

바로 지역변수라고 합니다. 

public class sampleClas {

     public void testMsd() {

          int localInt = 0;

    }

}

그 메서드 내(지역)에서만 사용 가능하다는 의미입니다.

해당 메서드가 실행되어야 사용이 가능하답니다. 

그리고 메서드를 벗어나면 다시 사라지는 변수입니다. (밖에서 사용 불가)

메서드에서 입력받는 변수는 매개변수 또는 파라미터(parameter)라고 합니다.

public void testMsd(int p1, String p2) {

     System.out.println(p1);

     System.out.println(p2);

}

이 메서드를 사용할 때 매개변수에 실제 값을 넣는데

바로 전달 인자(argument, 아귀먼트)라고 합니다.

sampleClas.testMsd(3, "Hello");

 

즉, 메서드 만들 때 입력값을 선언하는데 매개변수 또는 파라미터라고 하고

메서드를 실행할 때 실제 넣을 값을 전달 인자 또는 아귀먼트라고 합니다.

 

이제 정리해보겠습니다.

객체를 만들기 위해 클래스를 추상화하고,

클래스를 기반으로 인스턴스화 하면 인스턴스가 생성됩니다. 

인스턴스는 객체가 메모리에 로딩된 것을 말합니다.

클래스 변수는 클래스 기반으로 static을 붙여 선언합니다.

인스턴스 변수는 인스턴스(객체가 메모리 로딩)될 때 클래스 기반으로 선언된 변수입니다.

지역변수는 메서드, 초기화 블록, 생성자 등에 선언된 변수입니다. 지역 영역을 벗어나면 사용할 수 없습니다.

메서드 선언 시 매개변수 또는 파라미터,

메서드 실행 시 넣는 실제 값은 전달 인자 또는 아귀먼트(Argument)

이제 이름 제대로 알고 사용하면 되겠습니다.

그런데 그냥 클래스 객체를 인스턴스화 (메모리에 올리는, 생성하는) 하면 인스턴스라 하는데

그냥 객체라고 해도 괜찮지 않을까요? ㅎㅎ

 

반응형
반응형

안녕하세요. 신기한 연구소입니다.

변수와 상수에 대해 알아봅니다.

우선 간단하게 변수와 상수가 무엇인지 알아봅니다.

변수는 변하는 수입니다.

즉, 값을 바꿀 수 있다는 의미입니다.

빈 박스를 생각하면 됩니다.

박스 안에 어떤 수를 넣고 뺄 수 있거든요.

상수는 변하지 않는 수입니다.

그 말은 한 번 포장을 하면 바꿀 수 없다는 의미입니다.

유리나 플라스틱 큐브 안에 하나의 값을 넣고 밀봉하면 다른 값을 넣을 수 없겠죠?

바로 상수라고 합니다.

 

PL/SQL에서는 변수와 상수를 어떻게 사용하는지 같이 보겠습니다.

우선 변수를 선언하는 방법입니다.

기본적인 몇 가지를 소개해봅니다.

먼저 저번에 봤던 문자열 VARCHAR2 형식입니다.

사용할 변수명을 지정한 뒤 문자열이면 VARCHAR2를 붙여줍니다.

그리고 몇 글자를 입력받을지 사이즈를 정할 수 있습니다. ( ) 안에 숫자로 표시합니다.

위 예시는 (50)이므로 50개의 문자를 입력받을 수 있습니다.

그리고 값을 할당 할때는 :=를 사용합니다.

문자열이기 때문에 싱글쿼테이션 ' ' 안에 값을 넣어줍니다.

이름이라는 변수를 만들고 싶다면,

name VARCHAR(10); 

이렇게 하면 되겠네요. name := '홍길동';

숫자인 NUMBER나 INTEGER는 싱글 쿼테이션이 없어도 됩니다.

숫자는 그냥 숫자만 써주면 된답니다. age := 5;

이제 상수에 대해 알아봅니다.

변수와 비슷하지만 다른점이 있습니다.

상수는 밀봉된 큐브안에 값이 있기에 바꿀 수 없다고 했습니다.

그 말은 선언(밀봉)할 때 이미 값이 들어 있어야 합니다.

그리고 중간에 값을 바꿀 수 없는 구조라는 겁니다.

위 예제를 보면 iCode는 값을 넣고 밀봉(CONSTANT)을 했습니다.

출력하면 4355로 값이 잘 나옵니다. 

그리고 iCode를 3344로 변경을 시도합니다.

하지만 오류가 발생합니다 (빨간 밑줄 보이시죠?)

중간에 값을 바꿀 수 없습니다. 밀봉(CONSTANT)되어 있기 때문입니다.

또한 iMember처럼 선언할 때 값 없이 밀봉해도 오류가 납니다.

값이 없이 밀봉이 끝났기에 중간에 값을 넣을 수도 없습니다.

전부 오류가 발생했습니다.(빨간줄)

좀 더 편하게 타입을 정할 수 있습니다.

위 예제를 보면 VARCHAR2, CHAR, NUMBER 등의 타입을 지정해서 사용했습니다.

하지만 변수가 테이블의 변수와 대응한다면 

하나씩 찾아가면서 타입을 지정해야 하는 불편함이 있겠지요?

더 편하게 사용할 수 있습니다.

바로 그 컬럼의 타입을 불러오면 되거든요.

MEMBER 테이블의 NAME을 변수에 담아서 사용하고 싶다면

sName MEMBER.NAME%TYPE;

사용할 변수 이름(sName)을 지정한 뒤 테이블명.컬럼명을 지정합니다. MEMBER.NAME

그리고 컬럼명에 %TYPE를 붙여주면 MEMBER.NAME의 타입을 사용할 수 있게 됩니다.

이렇게 변수와 상수 그리고 편하게 사용할 수 있는 테이블의 타입을 활용하는 방법을 알아봤습니다.

어떤 공부를 하더라도 용어에 대한 개념을 잘 이해한다면

어려움 없이 사용할 수 있다고 생각되네요.

내일도 가서 열심히 코딩해야겠습니다. 

 

반응형