반응형

자바스크립트를 사용하여 프로그래밍을 할 때는
데이터를 변수와 상수라는 박스를 만들어 그 안에 넣어서 사용합니다.
이때, 변하지 않는 값이라면 변수를, 고정된 값이라면 상수를 사용합니다.

 

변수와 상수?

 

어떤 의미를 가진 하나의 데이터가 여러 곳에서 사용될 때 변수나 상수를 사용하면 코드 작성이 간편해집니다.

이때 값을 저장하고 변경할 수 있는 것을 변수, 똑같이 값을 저장하지만 변하지 않는 고정값을 담는 것을 상수라고 합니다.

 

다음은 변수와 상수를 선언한 코드입니다. 해석을 해보자면 switchOn 이라는 박스에 true 라는 값이, PI(원주율)이라는 박스에 3.1415926535라는 값이 들어있다는 뜻입니다. 여기서 switchOn은 let을 사용한 변수, PI는 const를 사용한 상수라고 부릅니다.

이처럼 변수와 상수는 이름을 통해 어떤 데이터에 의미를 부여하는 역할도 할 수 있습니다.

let switchOn = true;
const PI = 3.1415926535

 

변수를 사용하면 수정 내용을 코드 전체에 동일하게 적용해야 할 때 변수만 바꿔 주면 되어 무척 편리합니다.

switchOn 의 true를 false로 바꾸면 switchOn을 사용한 코드에 들어가는 모든 값이 바뀌게 됩니다. 반면 고정된 값을 여러 곳에서 사용할 때는 상수를 사용합니다.

 

 

변수를 사용할 때 var를 사용하지 않나요?

ES6 이전에는 자바스크립트에서 변수를 선언할 때 var라는 명령어를 사용하였습니다. 자바스크립트 초창기에는 이것이 굉장히 불안정해 오류의 원인으로 작용했습니다. 하지만 오늘날 ES6 버전 이후부터는 let과 const가 var를 대체합니다.

*
var x = 1;
var y = 2;

console.log(x, y);

* 이렇게 코드를 작성하면 같은 이름의 변수를 두 번 선언할 수 있는 등 코드를 불안정하게 하는 원인이 됩니다.

 

간단히 말해서 let은 변수를 만드는 키워드, const는 상수를 만드는 키워드라 생각하시면 됩니다.

키워드 의미 특징
let 변수를 선언 넣은 데이터를 변경할 수 있음
const 상수를 선언 넣은 데이터를 변경할 수 없음

 

let

 

아래의 코드는 a라는 박스에 1이라는 데이터를 담는다는 뜻입니다. 프로그래밍에서 등호(=)는 단순히 같다는 뜻이 아니라 왼쪽에 오른쪽의 값을 넣는다고 이해해야 합니다. 따라서 콘솔로 a를 출력하면 let 변수 선언을 통해 담긴 1이라는 결과가 나옵니다.

 

 

b라는 박스를 하나더 만들어서 b에 a값을 넣어보겠습니다.

a, b 박스의 값이 각각 1로 출력되었습니다.

오른쪽에 있는 a라는 박스의 값을 왼쪽의 b 박스에 넣어줬다고 생각하시면 됩니다.

 

 

이번에는 let을 붙이지 않고 a 박스에 2를 넣어보겠습니다. 왜냐하면 a라는 박스가 이미 만들어져있기 때문입니다. 그러면 a 박스에 원래 들어가 있던 값이 2로 변경되었기 때문에 출력결과도 2로 나오는 것을 볼 수 있습니다.

 

 

이번에는 a에는 "주녘의 IT기술 블로그" 라는 문자열을 b에는 true라는 불리언(참/거짓) 값을 넣어보겠습니다. 출력 결과를 보면 a, b에 들어있는 값이 성공적으로 바뀐 것을 확인할 수 있습니다. let을 붙이지 않았기 때문에 새로운 박스를 만드는 것이 아니라 박스안에 있는 값만 바뀌었습니다.

 

 

const

 

상수는 const라는 키워드를 사용하여 다음과 같이 선언합니다. A라는 박스에 상수 1을 넣고 출력하면 1이라는 결과가 나옵니다.

* 상수는 일반적으로 프로그래밍에서는 대문자로 이름을 짓습니다.

 

여기에 다른 값을 넣으려고 하면 오류가 발생해 코드가 실행되지 않습니다. 따라서 어떤 데이터가 절대 바뀌면 안되는 값을 가져야 한다면 const 키워드를 이용해 상수를 선언하면 됩니다.

식별자 명명 규칙
  • 영문, 한글 및 유니코드(대부분의 문자 표현) 글자, 숫자 사용 가능
  • 특수문자는 & 또는 _ 사용가능
  • 숫자로 시작할 수 없음
  • 공백(스페이스) 사용 불가
  • 예약어 사용불가
반응형

'JavaScript > JS 이론' 카테고리의 다른 글

템플릿 문자열  (0) 2023.08.31
[JS] 기본이론  (0) 2023.08.23
[JS] 문서 객체 모델 (DOM)  (0) 2023.08.22
[JavaScript] 자바스크립트의 기본 입출력방식  (0) 2023.08.16
반응형
변수(Variable)란?
  • 변하는 수
  • 하나의 값을 저장할 수 있는 저장공간.
변수의 타입(Data type)

■ 기본형(Primitive Type)

- 8개 (boolean, char, byte, short, int, long, float, double)

- 실제 값을 저장

■ 참조형(Reference type)

- 기본형을 제외한 나머지(String, System 등...)

- 객체의주소를 저장(4byte, 0x00000000~0xffffffff)

 

  기본형(Primitive Type)
  1. 논리형 - true와 false 중 하나의 값으로 갖으며, 조건식과 논리적 계산에 사용
  2. 문자형 - 문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다.
  3. 정수형 - 정수 값을 저장하는데 사용된다. 주로 사용하는 것은 int와 long이며, byte는 이전데이터를 다루는데 사용되며, short는 c언어와 호환을 위해 추가되었다.
  4. 실수형 - 실수 값을 저장하는데 사용, float와 double이 있다.

변수의 선언 방법

★ 타입 변수명

int score;

score 100;

int score 100;

String str = new String("abc");

          str = null;

 명명규칙(Naming convention)
  • 대소문자가 구분되며 길이에 제한이 없다 // True와 true는 서로 다른 것으로 간주된다.
  • 예약어(Reserved word)를 사용해서는 안 된다. // ture는 예약어라 사용할 수 없지만, True는 가능하다. 
  • 숫자로 시작해서는 안 된다. // top10은 허용하지만, 7up은 허용되지 않는다.
  • 특수문자는 '_' 와 '$' 만을 허용한다. // $harp은 허용되지만 S#arp는 허용되지 않는다.
명명규칙 - 권장사항
  • 클래스 이름의 첫 글자는 항상 대문자로 한다. // 변수와 메서드 이름의 첫 글자는 항상 소문자로 한다. 
  • 여러 단어 이름은 단어의 첫 글자를 대문자로 한다. // lastIndexOf, StringBuffer
  • 상수의 이름은 대문자로 한다. 단어는 '_'로 구분한다. // PI, MAX_NUMBER
변수, 상수, 리터럴
  • 변수(variable) - 하나의 값을 저장하기 위한 공간
  • 상수(constant) - 한 번만 값을 저장할 수 있는 공간
  • 리터럴(literal) - 그 자체로 값을 의미하는것 
int score = 100;
    score = 200;
char ch = 'A';
String str = "abc";
final in MAX = 100;
MAX = 200; // 에러, 상수의 값은 변경불가!
리터럴과 접미사
boolean power = true;
char ch = ‘A’;
char ch = ‘\u0041’;
char tap = ‘\t’;
byte b = 127;
short s = 32767;
int I = 100;
int oct = 0100;
int hex = 0x100;
long l = 10000000000L;
float f = 3.14f;
double d = 3.14d
float f = 100f;
10. -> 10.0
.10 -> 0.10
10f -> 10.0f
3.14e3f -> 3140.0f
1e1 -> 10.0
변수의 기본값과 초기화

변수의 초기화 ?

- 변수에 처름으로 값을 저장하는 것

* 지역변수는 사용되기 전에 반드시 초기화해주어야 한다.

문자와 문자열

정수의 오버플로우(Overflow)

부호가 없는 정수

부호가 있는 정수

형변환(Casting)

형변환이란?

- 값의 타입을 다른 타입으로 변환하는 것

- boolean을 제외한 7개의 기본형은 서로 형변환이 가능

folat f = 1.6f;

int i = (int)f;

1. byte -> int

byte b = 10;

int i = (int) b; // 생략가능

2. int -> byte

int i2 = 300;

byte b2 = (byte) i2; // 생략불가

 

형식화된 출력 - printf()

▶ println()의 단점 - 출력방식을 지정불가하다는 점!

1. 실수의 자리수를 조절불가 - 소수점 n 자리만 출력하려면?

System.out.println(10.0 / 3);  // 3.333333....

2. 10진수로만 출력된다. - 8진수, 16진수로 출력하려면?

System.out.println(0x1A);  // 26

 

▶ printf() 로 출력형식 지정가능하다.

System.out.println("%.2f", 10.0/3);  // 3.33

System.out.println("%d", 0x1A);  // 26

System.out.println("%X", 0x1A);  // 1A

 

printf()의 지시자
  • %b  : 불리언(boolean) 형식으로 출력 (true or false)
  • %d  : 10진수(decimal) 형식으로 출력
  • %o  : 8진수(octal) 형식으로 출력
  • %x, %X  : 16진수(hexa-decimal) 형식으로 출력 (%x는 소문자로, %X는 대문자로 출력)
  • %f  : 부동 소수점(floating point) 형식으로 출력
  • %e, %E  : 지수(exponent) 형식으로 출력
  • %c  : 문자(character) 형식으로 출력 (Unicode)
  • %s  : 문자열(string) 형식으로 출력

public static void main(String[] args) {

System.out.printf("age:%d year:%d\n", 14, 2017);

// "age:14 year:2017\n" 이 화면에 출력된다.

 

int age = 10;

System.out.printf("age:%d", age); // 출력 후 줄바꿈을 하지 않는다.

System.out.printf("age:%d\n", age); // 출력 후 줄바꿈을 한다.

System.out.printf("=================");

// 정수를 10진수, 8진수, 16진수로 출력

System.out.printf("%d\n", 15); // 15 >> 10진수

System.out.printf("%o\n", 15); // 17 >> 8진수

System.out.printf("%x\n", 15); // f >> 16진수

System.out.printf("%s\n", Integer.toBinaryString(15)); // 1111 >> 2진수

 

// 8진수와 16진수에 접두사 붙이기

System.out.printf("%#o\n", 15); // 017

System.out.printf("%#x\n", 15); // 0xf

System.out.printf("%#X\n", 15); // 0xF

 

// 실수 출력을 위한 지시자 %f - 지수형식(%e), 간단한 형식(%g)

float f = 123.4567890f;

System.out.printf("%f", f); // 123.456787 소수점 아래 6자리

System.out.printf("%e", f); // 1.2345678e+02 지수형식

System.out.printf("%g", 123.456789); // 123.457 간략한 형식

System.out.printf("%g", 0.00000001); // 1.00000e-8 간략한 형식

 

System.out.printf("[%5d]%n", 10); // [       10]

System.out.printf("[%-5d]%n", 10); // [10       ]

System.out.printf("[%05d]%n", 10); // [00010]

화면에서 입력받기 - Scanner

★ Scanner 란?

화면으로부터 데이터를 입력받는 기능을 제공하는 클래스

 

★ Scanner를 사용하려면

1. import 문 추가

import java.util.Scanner;

2. Scanner 객체의 생성

Scanner scanner = new Scanner(System.in);

3. Scanner 객체를 사용

Scanner scanner = new Scanner(System.in);

int num = scanner.nextInt(); // 화면에서 입력받은 정수를 num에 저장

 

String input = scanner.nextLine(); // 화면에서 입력받은 내용은 input에 저장

 

int num = Integer.parseInt(input); // 문자열(input)을 숫자(num)로 변환

반응형

'Java > Java 이론' 카테고리의 다른 글

[JAVA] 생성자  (0) 2023.08.01
[JAVA] 배운내용정리 (2)  (0) 2023.07.29
[JAVA] 인스턴스 생성과 힙 메모리  (0) 2023.07.28
[JAVA] 함수와 메서드  (0) 2023.07.28
[JAVA] 객채지향 언어  (0) 2023.07.28
반응형

변수란 변하는 수를 의미하며 그의 반대인 상수는 변하지 않는 수를 의미한다.

 

상수의 예로는 원주율(3.14....), 1년은 12개월 등이 있다.

 

프로그래밍에서 상수를  '값을 한번 저장하면 변경할 수 없는 저장공간'으로 정의하였기 때문에 이와 구분하기 위해 상수를

 

다른 이름으로 불러야만 했습니다. 그래서 상수 대신 '리터럴'이라는 용어를 사용합니다.

 

자바에서 상수를 사용하기 위해서는 명령어 final을 사용합니다.

 

final int MAX_NUM = 12;

대부분의 개발자는 final 예약어를 사용시 상수의 이름을 대문자로 쓰고 연결단어가 있을 경우 _를 사용한다

 

위의 예시 처럼 MAX_NUM 이라고 사용을 합니다.

 

그리고 상수는 한번 선언한 값을 다시 다른 값으로 선언할 경우 오류가 발생합니다.

 

package ch02;

 

public class ConstantTest {

 

// 코드의 시작점 - 메인함수

public static void main(String[] args) {

 

// 변수 != 상수 (상수는 변하지 않는 수)

// 예약어 (미리 선점해 놓은 단어) - final 키워드를 사용해서 상수라고 지정한다.

// 권장사항 - 상수를 사용할때는 대문자를 사용하고, 연결의 단어는 _로 사용해서 연결한다.

 

final int MAX_NUM = 12;

 

// 상수란 한 번 초기화 된 값은 변경할 수 없다.

 

System.out.println(MAX_NUM);

 

// MAX_NUM = 100; -> 오류발생 (상수로 선언하였기 때문에 변수로 사용불가)

위의 코드 처럼

 

초기 final int MAX_NUM = 12; 라고 선언을 하고 다음 줄에 MAX_NUM = 100; 이라는 값으로 선언을 할 경우 오류가 발생하게 됩니다.

 

따라서 상수의 값을 변경하기 위해서는 초기에 선언한 값에서 변경해주면 됩니다.

 

위의 설명처럼 상수는 변하지 않는 값이기 때문에 많은 양의 상수의 값을 출력할 경우 초기 선언한 상수값만 변경해주면 되기 때문에 변수처럼 여러번 수정할 필요가 없습니다.

 

final int MIN_NUM;

 

MIN_NUM = 500;

// MIN_NUM = 20000; : 상수는 한 번 초기화된 값은 변경 불가

 

// 상수는 선언한 부분만 변경하면 되기 때문에 여러번 수정할 필요가 없음.

System.out.println(MAX_NUM);

System.out.println(MAX_NUM);

System.out.println(MAX_NUM);

System.out.println(MAX_NUM);

System.out.println(MAX_NUM);

System.out.println(MAX_NUM);

System.out.println(MAX_NUM);

System.out.println(MAX_NUM);

System.out.println(MAX_NUM);

System.out.println(MAX_NUM);

위의 코드 처럼 500이라는 값을 300으로 변경하기위해서는 초기에 선언한 상수 MIN_NUM=500; 부분을 MIN_NUM=300; 으로 변경하면 됩니다.

 

출력값

12

12

12

12

12

12

12

12

12

12

12

반응형

'Java > Java 이론' 카테고리의 다른 글

[JAVA] 대입연산자와 부호연산자  (0) 2023.07.25
[JAVA] 형변환  (0) 2023.07.25
[JAVA] 변수형과 자료형 - 2  (0) 2023.07.25
[JAVA] 변수와 자료형  (0) 2023.07.24
[JAVA] 이클립스 환경 설정  (0) 2023.07.24

+ Recent posts