지난시간에 내용을 기억하고 계신지요! 지난시간에는 클래스와 객체에 대해서 알아보았습니다. JAVA는 "객체지향 프로그래밍"이라는 프로그래밍 방법론을 주되게 사용하며, 이 "객체"를 만들기 위한 도구를 "클래스(class)", 도구로 생성된 객체의 실제형태를 "인스턴스(Instance)"라고 부른다는것이 지난 글의 주된 내용입니다. 이번시간에 다룰 주제는 객체와 인스턴스를 구현하는 생성자에 대한 이야기를 조금 더 깊게 해볼까 합니다. 지난 이야기가 기억이 나지 않으신다면, 꼭! 저번 글을 읽고 와주시기 바랍니다!

2021.12.01 - [JAVA] - [JAVA와 친해지기] 클래스와 객체

 

[JAVA와 친해지기] 클래스와 객체

프로그래밍 방법론(Programming Methodology)라는 것이 있습니다. 프로그래머는 컴퓨터와 대화를 하는 사람으로 어떠한 언어를 사용해서 컴퓨터와 대화를 할지 결정해서 컴퓨터에게 작업을 지시하기

tutoreducto.tistory.com


생성자(Constructor)

지난시간에 간단하게 생성자에 대해서 다루었습니다. 지난시간의 정의로는

  • 생성자(Constructor) : 객체가 인스터스화될때(생성될 때) 호출되는 블럭 생략가능하다.

로 말씀을 드렸죠. 지난시간의 코드를 다시 들고 오겠습니다.

 

// Dog.java

public class Dog{
	
	int gender;
	int height;
	int weight;
	boolean adorable;
	boolean cute;
	
	Dog(){
    		System.out.println("Hello Im dog");
    	}	// 객체생성자
	
	public void eat(){}
	public void bark(){}
	public void sleep(){}
	public void tailling(){}
	
}

위의 코드 중 Dog(){}라는 부분이 이 Dog 클래스의 생성자입니다. 생성자는 다음과 같은 특징이 있습니다!

  1. 생성자는 클래스이름(){}의 형태로 이루어진다.
  2. 생성자는 파라미터(소괄호 안에 들어가는 부분) 를 변경하여 여러개 생성할 수 있다.
  3. 생성자를 생략하면 디폴트 생성자( 클래스이름(){} ) 이 자동으로 추가된다.

코드를 통해서 살펴보겠습니다!

// Dog.java

public class Dog{
	
	int gender;
	int height;
	int weight;
	boolean adorable;
	boolean cute;
	
    // 3. 아래처럼 클래스이름(){} 된 생성자는 디폴트 생성자(Default Constructor)라고 부르며
    //    생성자를 명시하지 않은 경우에 자동으로 컴파일러에서 붙여준다.
	Dog(){
    		System.out.println("Hello Im dog");
    	}	// 1. 객체생성자, 생성자는 클래스이름과 동일한 함수의 형태를 가진다.
       
    Dog(int gender){
        this.gender = gender;
    }   // 2. 파라미터를 다르게 하여 여러개의 생성자를 선언할 수 있다.
	
	public void eat(){}
	public void bark(){}
	public void sleep(){}
	public void tailling(){}
	
}

2.의 내용처럼 파라미터를 다르게 하여 생성자를 여러개 선언하는 것을 생성자 오버로딩(Constructor Overloading) 이라고 부릅니다! 추후 함수에 관련된 이야기를 할 떄도 Overloading이라는 단어를 보실 수 있으실 겁니다!

 

gender를 파라미터로 받는생성자블럭에 this라는 키워드가 보입니다. this는 인스턴스화된 class자기자신을 의미합니다.

따라서 this.gender라는 것은 public class Dog{바로 아래 있는 멤버변수(클래스 변수) int gender;를 의미하고, this.gender=gender의 우항 gender는 파라미터로 전달된 값을 의미합니다. 

다음의 예시를 살펴보겠습니다.

// Dog.java

public class Dog{
	
	int gender;
	int height;
	int weight;
	boolean adorable;
	boolean cute;
	
	Dog(){
    		System.out.println("Hello Im dog");
    	}	// 객체생성자
	
	public void eat(){}
	public void bark(){}
	public void sleep(){}
	public void tailling(){}
    
    public void printGender(){
        if(gender == 1){
            System.out.println("남성");
        }else{
            System.out.println("여성");
        }
    }
	
}

public class Main{
	public static void main(String[] args){
      Dog bagGu = new Dog(1);
      Dog hwangGu = new Dog(2);
      
      bagGu.printGender();
      hwangGu.printGender();
    }
}
## 출력결과
남성
여성

그렇습니다. 인스턴스화한 bagGu의 gender는 생성자블럭의 this.gender = gender에 의해서 bagGu의 멤버변수 gender는 1로, hwangGu의 멤버변수 gender는 2로 초기화됩니다.(bagGu의 this는 bagGu이며, hwangGu의 this는 hwangGu입니다.)

 

this키워드를 잘 이용하면, 생성자에서 다른 생성자를 호출할 수도 있습니다.

// Dog.java

public class Dog{
	
	int gender;
	int height;
	int weight;
	boolean adorable;
	boolean cute;
	
	Dog(){
    		System.out.println("Hello Im dog");
    	}	
       
    Dog(int gender){
        this();  // 위의 Dog(){ System.out.println("Hello Im dog"); } 호출
        this.gender = gender;
    }  
	
	public void eat(){}
	public void bark(){}
	public void sleep(){}
	public void tailling(){}
	
}

 이렇게 생성자를 다른 생성자에서 사용함으로 나오는 이점은 생성자를 재사용할 수 있다는 점입니다. 생성자A와 B가 있는데, 모든 100가지 줄이 같고 B에 한줄만 추가되는 거라면? 궅이 같은 내용을 A / B에 두번씩 쓸필요없이, A에 한번만 쓰고, B는 A를 호출하기만 하면 되겠죠?


이번시간에는 여러가지 생성자를 선언하는 방법과 디폴트 생성자, this키워드가 어떤것인지, 사용은 어떻게 하는지 알아보았습니다. 다음시간에는 객체의 기능, 행동을 표현하는 매서드(함수)에 대해서 알아보겠습니다!

프로그래밍 방법론(Programming Methodology)라는 것이 있습니다. 프로그래머는 컴퓨터와 대화를 하는 사람으로 어떠한 언어를 사용해서 컴퓨터와 대화를 할지 결정해서 컴퓨터에게 작업을 지시하기도 하고, 컴퓨터의 이야기를 듣기도합니다.

 

JAVA라는 언어로 대화하기를 선택한 우리들은 JAVA언어를 어떻게 전달하는지 그 "방법" 알아야 [효율적]으로 컴퓨터와 대화할 수 있습니다.  '어떻게 컴퓨터에게 작업을 지시할 것인지에 대한 방법'을 "프로그래밍 방법론"이라고 부를 수 있습니다.(위키백과의 정의도 아래 남겨두겠습니다.) JAVA는 그 중 '객체지향 프로그래밍(Object Oriented Programming)'이라는 방법론을 사용합니다.


객체지향이란?

객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

< 출처 위키백과 https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8Dhttps://ko.wikipedia.org/wiki/%EB%B0%B0%EC%97%B4>

위에서 중요한 단어들만 굵음 처리해서 다시보겠습니다.

 

"객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다."

 

객체지향에서 핵심적인 단어들이 위에 적혀있습니다. 만약 우리가 '강아지'와 '고양이'을 "객체"로 간주한다면 다음과 같이 표현할 수 있습니다.

위 그림에서 '강아지'와 '고양이'는 객체(아래부터는 '클래스'라는 이름과 혼용하겠습니다.)입니다. 객체(클래스)는 성별, 키, 몸무게 같은 속성을 가질 수 있고, 밥먹기, 잠자기 등의 '행동'을 할 수 있습니다. 타 프로그래밍언어의 '함수'가 JAVA에서는 '메서드'라고 불린다고 생각해 주시면됩니다.

&lt;출처 : 위키백과&nbsp; https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98 &gt;

프로그래밍에서 함수란 0개 이상의 입/출력을 받아 무엇인가 기능을 하는 개념입니다. JAVA에서는 이 함수를 '메서드'라고 부르며 '메서드'를 통해서 객체와 객체가 상호작용하며 프로그램이 진행됩니다.


클래스와 인스턴스

그러면 JAVA에서 어떻게 객체라는 개념을 코드로 표현하고 있을까요? 그걸 알기위해서는 우선 클래스와 인스턴스의 관계를 알아야합니다.

 

  • 클래스 : 객체를 만들기 위한 '틀'
  • 인스턴스 : 클래스라는 틀로 만들어진 '실제 객체'

 

최근에 유명한 넷플릭스의 오징어 게임의 달고나 게임을 기억하시는 분들이 많으실 겁니다. 달고나도구는 달고나를 반복적으로 찍어낼 수 있는 틀입니다. 이렇게 생성된 달고나를 '인스턴스'라고 칭하며, 달고나 도구를 '클래스'라고 부릅니다. 코드를 보며 실제 상황을 가정하겠습니다. 위의 그림중 강아지에 대한 클래스입니다.

// Dog.java

public class Dog{
	
	int gender;
	int height;
	int weight;
	boolean adorable;
	boolean cute;
	
	Dog(){
    		System.out.println("Hello Im dog");
    	}	// 객체생성자
	
	public void eat(){}
	public void bark(){}
	public void sleep(){}
	public void tailling(){}
	
}

JAVA에서 객체(틀)을 만들고 싶을때는 'class' 라는 예약어를 사용한 후 사용할 클래스명(여기서는 Dog)를 지정합니다. 클래스 블럭(중괄호로 둘러쌓인 부분)에는 변수선언(멤버선언), 매서드선언(행위선언)을 할 수 있습니다. 

 

중간에 System.out.println("Hello Im dog");가 보입니다. 이 출력문은 생성자이름인 Dog의 함수블럭에 존재하는데요. 이것은 매서드가 아닌 '생성자' 라고 불리웁니다. 

  • 생성자(Constructor) : 객체가 인스터스화될때(생성될 때) 호출되는 블럭 생략가능하다.

이 Dog틀롤 인스턴스를 만드는것을 예시로 보면서 생성자 이야기를 계속하겠습니다. 아래는 Dog틀을 이용해서 새로운 강아지 bagGu와 hwangGu를 만드는 코드입니다.

 

// DogTest.java

public class DogTest{
	public static void main(String[] args){
    		Dog bagGu;
        	Dog hwangGu = new Dog();
	}
}

Dog라는 '틀'은 자료형이 됩니다. 우리가 지난 시간 알아보았던 기본자료형또한 '틀'이고요. 따라서 변수를 선언하듯이

<자료형> [사용할 변수명] 의 형태로 인스턴스를 만들 수 있습니다. 이렇게만 하면 변수를 사용할 것이라는 '선언'만 진행한것입니다. '초기화'를 위해서는 'new' 라는 예약어를 이용합니다. 위 코드에서는 new Dog()가 될것입니다. 코드를 실행시켜보면 콘솔창에 다음과 같은 결과가 나올것입니다. 

Hello Im dog

이 'Hello Im dog'는 Dog hwangGu = new Dog();에서 출력된 코드입니다. 객체가 인스턴스가 될 때는 생성자가 호출이됩니다. 따라서 객체코드의 Dog(){ System.out.println("Hello Im Dog")}가 실행된 것입니다.


이번시간에는 객체와 인스턴스, 생성자에 관하여 간단하게 알아보았습니다. 다음시간에는 생성자의 활용법과 객체사용법을 조금더 알아보는 시간을 가지겠습니다!

'JAVA' 카테고리의 다른 글

[Java Project] 죽는날 타이머. DIE_ALARM  (0) 2022.09.18
[JAVA와 친해지기] 생성자  (0) 2021.12.13
[JAVA와 친해지기] 배열  (0) 2021.08.24
[JAVA와 친해지기] 반복문  (0) 2021.08.21
[JAVA와 친해지기] 흐름제어문  (0) 2021.08.19

해시계산, 무결성검사기 프로그램을 배포합니다.

- 프로그램명 : IntMan.exe

- 제작기간 : '21.11.06. ~ '21.11.09 (4일) 

- 제작자 : REDUCTO

- 사용언어 : JAVA

- 사용라이브러리 : Swing

- 버전 : v1.0


소개

IntMan은 해시검사기능을 제공하며, 두파일이 같은지 비교, 지정된 파일 무결성 검사를 제공합니다.

 

* 무단배포는 금지합니다.(댓글달아주세용)
* 기능에 커스터마이징이 필요하시다면 댓글달아주세용

* [해시계산&비교탭] 윗줄은 검사할 해시입니다.

* [무결성검사탭] 무결성검사데이터는 C:\tmp아래 저장되며, 무결성검사를 수행한 날에 C:\tmp\[프로그램실행날짜]\ 에 파일이 복사됩니다. 

* [무결성검사탭] 무결성검사결과 변경된 항목은 기울임꼴, 사라진 파일은 굵음 표시됩니다.


사용법

더보기

윗줄의 해시를 입력하는 것으로 해당하는 해시값이 굵게 표시됩니다.

* 파일선택은 드래그앤 드랍 or [파일선택]버튼을 통해서 수행합니다.

두 파일이 같은 파일이라면 초록색 / 다른파일이라면 붉은색으로 표시됩니다.

 

* 파일추가는 드래그앤 드랍 or [+]버튼을 통해서 수행합니다.

행을 우클릭하여 특정파일 무결성검사, 혹은 삭제할 수 있습니다.

 

컴퓨터에는 자료구조라는 것이 있습니다. 자료구조는 컴퓨터에서 [효율적인] 접근과 수정을 가능케 하는 구조입니다. 아래는 여러 가지 자료구조의 예시입니다!

이번 시간에는 이 자료구조 중 배열에 대해서 알아보도록 하겠습니다!


배열이란?

컴퓨터 과학에서 배열(영어: array, 配列·排列, 문화어: 배렬)은 번호(인덱스)와 번호에 대응하는 데이터들로 이루어진 자료 구조를 나타낸다. 

< 자료형 : 출처 위키백과 https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%97%B4>

배열자료가 일렬로 이어진 자료구조입니다. 단순하게 일렬로만 이어진 자료구조라면 어째서 배열을 사용하는 걸까요? 아래 코드를 예를 들어 보겠습니다.

// Students.java
// 학생3명을 저장하고 이름을 출력하는 코드

public class Students{

	public static void main(String[] args){
		String student1 = "철수";
		String student2 = "영희";
		String student3 = "민수";
			
		System.out.println("student1 : "+student1);
		System.out.println("student2 : "+student2);
		System.out.println("student3 : "+student3);
	}	
}

그렇습니다. 3명을 사용하는데 코드의길이가 많이 깁니다. 문제는 여기서 그치지 않고 학생이 10명, 100명으로 늘어나는 순간, 이 프로그램의 코드는 말도 안 되게 길어지는 단점이 발생합니다. 반복적인 일을 하고 있는데도, 심지어 반복문도 제대로 이용을 못하고 있지요, 이를 위해서 배열이 사용됩니다. 문법적으로 먼저 만나보겠습니다.

그렇습니다. 배열은 한가지종류의 자료형만을 받습니다. 같은 배열에 int, String이 같이 있을 수는 "아직"없습니다. 자료형 뒤에 대괄호[]를 사용한 후 변수 이름을 지정하고, 초기화를 해도 좋고 안 해도 좋습니다. 아래의 코드를 보겠습니다.

// Students.java

public class Students{

	public static void main(String[] args){
		String[] students = {"철수","영희","민수"};	//배열의 선언과 초기화 동시진행 동시에 크기는 3
		//String[] students = new String[3]		//배열의 크기만 잡아줌
			
		System.out.println("student1 : "+students[1]);	//배열요소의 접근은 [인덱스]로 시행
		students[0] = "영수";
        
    		System.out.println("\n 배열의 크기 : "+students.length);	// 배열의 크기출력

		for(int i=0;i<3;i++){
			System.out.println("Student : "+students[i]);
		}
	}	
}

코드를 통해본 배열의 특징은 다음과 같습니다.

  • 배열요소의 접근은 배열 변수[인덱스]로 접근함
  • 인덱스는 0부터 시작. 즉 배열의 크기가 5라면 0~4까지가 배열의 인덱스가 됨(0이 첫 번째 요소)
  • 위를 이용해서 반복문의 효율적인 사용이 가능

배열에 사용되는 자료형은 아무 자료형이나 가능하며, 배열의 크기만 잡아준 주석처리 코드처럼 아무 값도 배열에 부여하지 않은 경우 배열의 요소는 null이 됩니다. 자주 사용하는 프로퍼티로 배열 이름. length를 하면 배열의 크기가 출력됩니다.


이번 시간에는 기본자료구조인 배열에 대해서 알아보았습니다! 다음 시간에는 JAVA를 JAVA 답게 만들어주는, 객체 재향이라는 프로그래밍 기법에 빠질 수 없는 클래스에 대해서 알아보겠습니다!

'JAVA' 카테고리의 다른 글

[JAVA와 친해지기] 생성자  (0) 2021.12.13
[JAVA와 친해지기] 클래스와 객체  (0) 2021.12.01
[JAVA와 친해지기] 반복문  (0) 2021.08.21
[JAVA와 친해지기] 흐름제어문  (0) 2021.08.19
[JAVA와 친해지기] 연산자  (4) 2021.08.18

_(언더스코어) : JAVA 9부터 예약어가 되었습니다.(이제 단독으로 언더스코어만쓰는 변수명은 불가하네영)

 

abstract : 추상클래스를 지정하는 데 사용됩니다.

 

assert : 강한 에러검출을 위한 키워드

 

boolean : 논리값 자료형

 

break : 루프탈출 제어문

 

byte : 바이트 자료형

 

case : 다중분기 내부에 사용되는 정합여부확인 제어문

 

catch : 에러발생 시 사용되는 에러핸들블럭 시작문(try 와 같이 쓰임)

 

char : 단일 문자열 자료형

 

class : 객체 생성을 위한 예약어

 

const : 고정값 지정 예약어

 

continue : 다음 루프로 강제이동 제어문

 

default : 다중분기 내부 끝에서 사용되는 제어문

 

 do : do-while loop시 시작문을 의미하는 예약어

 

double : 소수표현 예약어

 

else : if와 같이 쓰이는 제어문 예약어

 

enum : 열거형 타입을 선언하기 위한 예약어

 

extends : 상속을 위한 예약어

 

final : 상속불가 클래스 지정 or 변경불가 상수 지정 예약어

 

finally : try~ catch 후 클리너 코드(close 등)등을 지정키 위한 예약어

 

float : 소수표현 예약어(double 이 64bit, float가 32bit 어지간하면 double쓰세영)

 

for : 반복문 지정 예약어

 

goto : 안씁니당

 

if : 분기 제어문 예약어

 

implements : 인터페이스 구현을 위한 예약어

 

import : 라이브러리 사용을 위한 예약어

 

instanceof : 인스턴스 타입 확인을 위한 예약어 infix로 사용된다.

 

int : 정수 자료형 예약어

 

interface : 인터페이스 구현 예약어

 

long : 64bit 정수 자료형 예약어

 

native : 메소드 구현시 다른 메서드들과 겹치는지 특정해주기 위해 사용되는 예약어

 

new : 새로운 인스턴스 생성 예약어

 

package : 패키지 지정 예약어

 

private : 가시성 지정 예약어(자기밖에 못봄)

 

protected : 가시성 지정 예약어(상속까진 봄)

 

public : 가시성 지정 예약어(다 봄<어멋>)

 

return : 반환문

 

non-sealed : 실드클래스 유무 표현을 위한 예약어(실드클래스는 상속이 안되영)

 

short : 16bit 정수형 자료형

 

static : 인스턴스 생성없이 접근가능한 클래스 종속적 매서드 / 변수 지정에 사용되는 예약어

 

strictfp : 소수점 지정을 위한 예약어(J2SE 1.2추가되었다고 합니다.)

 

super : 상위 클래스 지정자

 

switch : 다중분기 제어문

 

synchronized : 스레드 동기화를 맞추어주기위한 블럭을 생성하는 예약어

 

this : 자기자신의 인스턴스를 의미하는 예약어

 

throw : 에러발생시키는 예약어 당연하게도 catch에서 걸러질 수 있게 짜야된당

 

throws : 메서드 선언 시 사용, 메서드가 다음의 에러를 발생시킬 가능성이 있음을 암시

 

transient : 클래스 필드가 직렬화에 제외된다는 암시를 해주는 예약어

 

try : 에러처리를 위한 블럭을 시작하는 예약어, catch와 같이 사용된다.

 

void : 空

 

volatile : 변수를 메인 메모리에 저장할 것이가를 지정하는 예약어

 

while : 반복문 지정 예약어

프로그래밍과 알고리즘

 

우리는 JAVA를 이용해서 프로그래밍을 하고 있습니다! 근본적인 질문으로 프로그래밍이란 무엇일까요? 사전에 프로그래밍의 정의는 다음과 같이 서술되어있습니다!

컴퓨터 프로그래밍(영어: computer programming) 또는 간단히 프로그래밍(programming, 문화어: 프로그램 작성) 혹은 코딩(coding)은 하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술을 말한다.

< 프로그래밍의 정의 : 출처 위키백과 https://ko.wikipedia.org/wiki/%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D >

2번째 줄을 조금 강조해서 볼까요?

 

"하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술을 말한다."

 

오호; 그럼 여기서 프로그래밍 언어는 우리가 선택한 JAVA가 될 것이고 우리는 구체적인 컴퓨터 프로그램을 만들기 위해서 프로그래밍이라는 행위를 하는 것을 알 수 있겠죠! 그런데 앞쪽에 문제를 해결하기 위해 [추상 알고리즘]을 사용한다고 되어있습니다! 알고리즘이란 무엇일까요? 이번에는 알고리즘의 사전적 정의입니다.

알고리즘(영어: algorithm), 셈법은 수학과 컴퓨터과학, 언어학 또는 엮인 분야에서 어떠한 문제를 풀어 맺기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차를 의미한다. 

< 알고리즘의 정의 : 출처 위키백과 https://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 >

알고리즘은 문제해결을 위해서 사용하는 일련의 절차나 방법을 공식화한 형태라고 합니다! 알고리즘이 어떻게 생겼는지 한번 아래 그림을 보도록 할까요?

위 사진은 필자블로그의 다른 글이 WebHacking사이트 Suninatas의 1번 문제 풀이 알고리즘을 가져온 것입니다. 위와 같이 일련적으로 사용하는 문제 해결절차를 우리는 알고리즘이라고 정합니다!

 


변수와 상수

 

프로그래밍에는 어마어마하게 많은 수들이 있습니다! 위에 알고리즘만 보아도 위에서부터 2번째 그림에 str이라는 요소가 순서도 전반적으로 사용되고, 중간에는 "a"라던지 "in"이라던지, 고정된 값들이 있지요. 이런 수들은 프로그래밍에서 크게 가변성에 따라 다음의 2가지로 분류합니다.

  • 변수 : 프로그래밍을 사용하면서 변할 수 있는 수
  • 상수 : 변하지 않는 고정된 값

다음의 코드를 다들 코딩해 봅시다!

// VarConst.java

public class VarConst{

	public static void main(String[] args){
		int x = 1;			// x는 변수, 대입된 1은 상수
		int y = 3;			// y는 변수, 대입된 3은 상수
		String name = "REDUCTO";	// name은 변수, 대입된 "REDUCTO"는 상수

		System.out.println(x);
		x = y;				// 변수에는 다른 변수 대입가능
		//3 = x;			// 당연하게 상수는 대입불가
		System.out.println(y);
		System.out.println(x);
		System.out.println(name);
	}

}

Compile, 실행해보면 다음과 같은 값을 얻을 수 있습니다!

 

1
3
3
REDUCTO

* "=" 기호는 오른쪽의 값을 왼쪽에 대입하라는 의미입니다! 자세한건 다다음 시간(연산자) 편에서 계속됩니다!

main이라는 글자가 있는 줄의 바로 아래쪽 int x=3; 이라는 코드가 있습니다. int라는 단어는 넘어가고 x=3이니, 이제 우리의 변수 x는 3이라는 상수값을 가지고 있는 것입니다!


변수 명명법

 

변수 이름은 프로그래머가 작성하기 나름입니다! 특정한 합이라는 이름을 짓고 싶으면 sum이라는 변수명을 정의해도 되고, 임시 값이라는 의미를 담고 싶으면 tmp라는 이름을 사용하는 것도 전통적인 방법입니다! 단 다음의 규칙은 지켜야 됩니다!

  • 대소자는 구분되며, 변수 이름 길이에 제한은 없다.(x와 X는 다른 변수)
  • 숫자로 시작할 수 없으며, 공백은 사용불가( 3x, tmp_dd dd는 사용 불가한 변 수명 임)
  • 변수에 허용되는 글자는 대소문자, 숫자, _(언더스코어), $만 허용됨
  • 예약어 사용불가(예약어는 프로그래밍 언어에서 미리 정해둔 문법적으로 의미 있는 단어를 의미합니다.)

다음의 단어들이 변수의 이름으로 사용될 수 있겠네요!

ex > tmp, _file_name, isSetted, onClose, SUMOFSET2, m3val2

 

예약어는 다음의 글을 참고해 주세요!

2021.08.14 - [JAVA] - JAVA 예약어 종류

 

JAVA 예약어 종류

_(언더스코어) : JAVA 9부터 예약어가 되었습니다.(이제 단독으로 언더스코어만쓰는 변수명은 불가하네영) abstract : 추상클래스를 지정하는 데 사용됩니다. assert : 강한 에러검출을 위한 키워드 bool

tutoreducto.tistory.com


이번 시간에는 프로그래밍이 무엇인지, 우리가 하려는 JAVA 프로그래밍이란 무엇인지, 프로그래밍에서 사용되는 변수나 상수가 무엇인지에 대해서 알아보았습니다. 다음 시간에는 자료형이라는 주제로 또 인사드릴게요!

+ Recent posts