본문 바로가기
Study/Java

01. <변수, 상수, 리터럴, 지시자> ~자바의 정석 summary ~

by 하구땡 2023. 1. 8.
반응형

1. 글자 출력

=> System.out.print() 사용

(1) System.out.print() : 괄호 안의 내용 출력 후 줄 바꿈 하지 않는다.

(2) System.out.println() : 괄호 안의 내용 출력 후 줄 바꿈 한다.

           ex1.

clasee Hello, java {
           public static avoid main(String args[]) {
              System.out.println(”Hello, java”)
              System.out.print(”Hello”)
                    System.out.println(”,java”)
        }
}
Hello, java
Hello, java

2. 변수 선언 및 저장

*변수(variable):하나의 값을 저장할 수 있는 저장공간

*변수 선언 이유:값(data)을 저장할 공간을 마련하기 위해서

*초기화:변수에 처음으로 값을 저장하는 것

           ex2.

class Exam2 {
           public static avoid main(String argsp[]) {
           int x=5; // 변수선언
          System.out.println(x);
        x=10;  // 변수 x에 기존의 5대신 10을 저장한다
          System.out.println(x);
        }
}
5
10

3. 변수, 상수, 리터럴

*변수(variable):하나의 값을 저장할 수 있는 저장공간

*상수(constant):한 번 값을 저장하면 다른 값으로 변경할 수 없는 저장공간

*리터럴(literal):기존에 우리가 알고 있던 ‘상수’의 의미, 그 자체로 값인 수.

           3-1. 기본형 변수의 종류

숫자형 정수형 byte(1), short(2), int(4), long(8)
실수형 float(4), double(8)
문자형      char(2)
논리형   boolean(1)

 

[더하기 개념]

1byte=8bit

 ex) byte=8bit, short=8x2=16bit, int=32bit, long=64bit...

정수형의 경우 가질 수 있는 범위 값

: -(2ⁿ⁻¹)~{(2ⁿ⁺¹)-1} (이때, n=bit의 수)

           ex3.

byte가 가질 수 있는 범위의 값은?
    =>-(2⁸⁻¹)~{(2⁸⁻¹)-1} = -128~127

*변수의 명명 규칙 - 변수의 이름 = (식별자)

[1] 대소문자가 구분되며 길이에 제한이 없다.

[2] 예약어를 사용해서는 안된다. (예약어 = 키워드, 리져브드 워드)

[3] 숫자로 시작해서는 안된다. (top10은 가능, 7up은 불가능)

[4] 특수문자는 ‘_’와 ‘$’만 허용된다.

 

           3-1-1. 기본형

[1] 논리형 - boolean(1bit/1byte)

: true와 false 중 하나를 저장하며 default값은 false이다.

 ->대소문자 구분되므로 Ture 혹은 False는 에러발생한다.

 

[2] 문자형 - char

: 단 하나의 문자만 저장가능하며, 아무것도 초기화하지 않을 수는 없다.

 -> ch c = ‘ ‘; (공백으로 초기화해줘야 함)

 - ch c = 65;와 같은 경우 65는 유니코드로 저장된다.(=A)

 -> 사실 ch c = ‘A’와 같은 경우에도 A가 유니코드 값인 65로 저장되는 것

 

[3] 정수형 - byte, short, int, long

 

[더하기 개념]

[1] 인코딩(encoding)

: 문자를 코드로 변환하는 것

[2] 디코딩(decoding)

: 코드를 문자로 변환하는 것

 

3-2. 참조형 변수의 대표 종류

*이때 참조형이란 주소를 참조한다는 뜻

숫자형 : long(20억이 넘을 때 사용)

문자형 : String(문자열 타입으로 여러 문자를 저장할 때 사용)


->기본형은 실제 값을 저장, 참조형은 어떤 값이 저장되어 있는 주소를 값으로 저장함 -> 참조형 간의 연산은 불가능하므로 실제 연산은 모두 기본형으로 이루어짐

->참조형 변수 선언 시 변수 타입은 클래스 이름을 사용한다.

 

           3-3. 상수 선언 방법

1) 변수 타입 앞에 ‘final’을 붙여준다. 

2) 상수의 이름은 모두 대문자로 하는 것이 관례이다.

3) 여러 단어로 이루어져 있을 경우 ‘_’로 구분한다.

4) 상수는 선언과 동시에 초기화하는 것이 가장 좋다.

           ex4.

final int MAX_SPEED; // 정수형 상수 MAX_SPEED 선언
MAX_SPEED=100;
MAX_SPEED=200; //에러; 이미 100으로 상수 선언했으므로 변경불가

 

           3-4. 리터럴의 타입과 접미사

=> 리터럴에 접미사를 붙여 변수의 타입을 구분한다.

[1] 정수형 [byte, short, int, long]

    => 기본형인 int는 접미사 사용 x

    => byte, short는 int형을 따르므로 똑같이 접미사 사용 x

    => long은 접미사로 ‘l’또는 ‘L’ 사용

    => long형의 경우 중간에 ‘_’을 ‘,’와 같이 삽입 가능

[2] 실수형 [float, double]

    => 기본형인 double은 ‘d’나 ‘D’로 사용할 수 있지만 생략 가능

    => float는 ‘f’또는 ‘F’를 사용하며 생략 불가능

    => 리터럴에 소수점이나, 10의 제곱을 나타내는 기호 E 또는 e, 접미사 f, F, d, D를 포함하고 있으면 실수형 리터럴로 간주한다.

[3] 진수 표현

    =>16진수를 표현 : 숫자 앞에 0x 또는 0X를 붙임

    =>8진수를 표현 : 숫자 앞에 0을 붙임

ex5.

int octNum =010;     //8진수 10, 10진수 8
int hexNum=0x10;    //16진수 10, 10진수 16
int binNum =0b10;    //2진수 10, 10진수 2

 

[4] 문자 리터럴(char)과 문자열 리터럴(String)

  1) 문자 리터럴(char)

    - 단 하나의 문자만 저장할 수 있다.

    - ‘ ‘로 표현하며, 반드시 하나의 문자가 있어야 한다.

  2) 문자열 리터럴(String)

    - 여러 개의 문자를 저장할 수 있다.

    - “”로 표현하며, 안에 아무런 문자가 들어있지 않아도 허용된다. 

 

4. 정수형의 오버플로우(overflow)

:연산과정에서 해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것.

 그러나, 오버플로우가 발생했다 해서 에러가 발생하는 것은 아니며

다만 원하던 결과를 얻지 못할 뿐이다.

  => 충분한 크기의 변수 타입 설정 필요

이와 같은 원리로,

최댓값+1 ==> 최솟값

ex6.

short smin=-32768, smax=32767;
char cmin=0,       cmax=65535;
   System.our.println(”smin=”+smin);
   System.our.println(”smax=”+smax);
   System.our.println(”smin-1=”+(short)(smin-1));
   System.our.println(”smax+1=”+(short)(smax+1));
   System.our.println(”cmin-1=”+(int)--cmin);
   System.our.println(”cmax+1=”+(int)++cmin);
smin=-32768
smax=32767
smin-1=32767
smin+1=-32678
cmin-1=65535
cmax+1=0

 

5. 문자열 결합

=> 덧셈 연산자(+)는 피연산자가 모두 숫자일 때는 두 수를 더하지만, 어느 한쪽이라도 String이면 두 피연산자 모두 문자열로 변환시킨다.

           ex7.

System.out.println(7+””);
System.out.println(7+” “);
System.out.println(” “+7);
System.out.println(””+””);
System.out.println(7+7+””);
System.out.println(””+7+7);
7
7(공백)
(공백)7
(공백)
14
77

6. printf / 지시자(specifier)

=> 같은 값을 다른 형식으로 출력하고 싶을 때 printf사용

*지시자=값을 어떻게 출력한 것인지를 지시해 주는 역할

*출력하려는 값이 2개일 경우, 지시자도 2개 사용해야 함

*출력될 값과 지시자의 순서는 일치해야 한다.

*3개 이상의 값도 지시자 지정 출력 가능하며, 개수의 제한이 없다.

 (1)%d=10진 정수의 형식으로 출력
 (2)%x=16진 정수의 형식으로 출력
 (3)%f=부동 소수점의 형식으로 출력
       =소수점 아래 6자리까지만 출력하므로 7번째에서 반올림 함
 (4)%c=문자로 출력
 (5)%s=문자열로 출력
 (6)%e, %E=지수형태로 출력
 (7)%g=값을 간단하게 출력 (전체 숫자의 갯수가 6개가 되게 함)
 (8)%n=줄바꿈
 (9)%0=8진 정수의 형식으로 출력

 

           ex8.

String url=”www.codechobo.com”;
   float f1=.10f;                              // 0.10, 1.0e-1
   float f2=1e1f;                      // 10.0, 1.0e1, 1.0e+1
   float f3=3.14e3f;                   //3140.0, 3.14e3, 3.14e+3
   double d=1.23456789;
 System.out.printf(”f1=%f, %e, %g%n”, f1, f1, f1);
 System.out.printf(”f2=%f, %e, %g%n”, f2, f2, f2);
 System.out.printf(”f3=%f ,%e, %g%n”, f3, f3, f3);
 System.out.printf(”d=%f%n”, d);
 System.out.printf(”d=%14.10f%n”, d);
 System.out.printf(”[12345678901234567890]%n]”);
 System.out.printf(”[%s]%n”, url”);
 System.out.printf(”[%20s]%n, url”);
 System.out.printf(”[%-20s]%n, url”);
 System.out.printf(”[%.8s]%n, url”);
0.100000, 1.0000000e-01, 0.100000
10.000000, 1.000000e+01, 10.0000
3140.000000, 3.140000e+03, 3140.00
1.234568
  1.2345678900
[12345678901234567890]
[www.codechobo.com]
[   www.codechobo.com]
  =>오른쪽정렬/최소 20글자의 자리를 확보 (남는 자리는 공백)
  =>기존에 포함되지 않았던 문자 ‘[]’는 자릿수로 세지 않는다.
  =>기존에 포함되어 있던 문자 ‘.’는 자릿수로 센다.
[www.codechobo.com   ]
  =>왼쪽정렬/최소 20글자의 자리를 확보 (남는 자리는 공백)
[www.code]
  =>8글자만 출력

 

반응형

댓글