[JAVA.02] 변수(variable)와 상수(constant) 그리고 자료형(data type) 🐣

Kama_Code·2023년 6월 16일
1

JAVA

목록 보기
7/20
post-thumbnail
post-custom-banner

<Step.1> 변수(variable)

  • 1+2 = 3
  • x+y = 3

우리는 '1+2=3' 하면 매우 쉽게 와 닿는다. 하지만!
'x+y=3' 하면 은근히 어렵게 느껴지면서 생각이 많아진다.
ㄴ(그냥 1자리에 x가 들어간 것 뿐이고 2자리에 y가 들어간 것뿐인데 말이다.)

▶ 왜냐하면 변수(variable)는 다양한 것들이 들어갈 수 있기 때문이다.

프로그램을 만들었는데 1+2=3 이라는 계산밖에 안되는 프로그램이라면
아무도 사용하지 않을 것이다.
변수(variable)가 들어갈 수 있기에 프로그램은 가치가 있고 매우 유용하다.

▶자바(JAVA)에서는 변수를 사용할 때 지켜야 하는 규칙이 있다.

  1. 변수 이름은 숫자로 시작할 수 없다.
  2. $와 _외 다른 특수문자는 사용할 수 없다.
  3. 변수 이름은 소문자로 시작하되 반드시 데이터를 유추할 수 있는 이름을 사용한다.
  4. 키워드는 변수 이름으로 사용할 수 없다.
    EX) public, class, int, double 같은 단어들

▶ 변수를 사용할거라면 가장 먼저 공간부터 만들어준다.

  1. 컴퓨터는 변수를 선언할때 메모리를 사용하게 된다.
  2. int num1; ➙ 변수를 선언한 코딩이다.
    ㄴ10진수 정수의 저장을 위한 메모리 공간을 할당하고 그 이름을 num1이라고 지어준 것이다.
  3. num1 = 10; ➙ 변수에 10을 할당. 최초로 할당하는 값을 ‘초기값’이라 한다.
    ㄴ공간을 만들어줬으니 값을 넣어주어야 한다.
    우리는 수학에서 '='는 왼쪽과 오른쪽이 같다라고 배웠는데
    자바(JAVA)에서는 '오른쪽 값을 왼쪽에 넣는다(대입한다)' 라고 한다.
    같다는 '==' 2번을 연달아 넣는 기호를 사용한다.

<Step.2> 상수(variable)

  • 상수란 변하지 않는 값을 말한다.
    더 넓은 범위로 리터럴(Literal) 이라고 하는데
    문자 뜻 그대로의 값을 의미한다.
  • 5와 7은 ‘정수형(int) 리터럴’
  • 3.3과 4.5는 ‘실수형(double) 리터럴’

● final(최종) 상수
ㄴ프로그래머가 임의로 만드는 상수이며, final 상수 이름은 대문자를 이용해서 만든다.

<Step.3> 기본 자료형(primitive type)

▼▽ 아래의 표가 바로 기본 자료형이다 ▼▽

이 뜻은 다음과 같다.
byte는 -127~+128까지만 계산이 가능하다고 생각하면 된다.
1바이트(byte) = 8비트(bits)와 같다.
우리 옛날에 8비트 게임, 8비트 게임하는데 유래가 여기서 나온 것이다.

Quiz. 돌발 퀴즈!
1바이트와 2바이트의 차이는 몇배일까요?

많은 사람들은 1x2는 2니까 2배 라고 생각하겠지만,
1바이트와 2바이트의 차이는 사실 엄청나다.

정답은 2의 8 제곱(승) 배이다.

어마어마한 차이인 것이다.

1바이트당 0부터 255까지 총 256개의 수치를 표현할 수 있는데,
2바이트면 512개의 수치를 표현할 수 있는 것이다.

CPU는 참으로 2를 좋아하는 거 같다.
1바이트 = 8비트 = 2 x 2 x 2비트
2바이트 = 16비트 = 2 x 2 x 2 x 2비트
4바이트 = 32비트 = 2 x 2 x 2 x 2 x 2비트

X. 3바이트? = 24비트 = 2 x 2 x 2 x (3비트?)
ㄴ2의 배수로 표현되지 않는 3바이트는 처리 단위로 사용되지 않는다
<없다는 뜻>

다시 돌아와서 > >

  • 자바(JAVA)는 4가지 정수형 자료형이 있는데
    byte, short, int, long이 전부이다.
    하지만,

★정수형 계산기는 int 계산기밖에 없다.

  • 그럼, short와 byte는 왜 필요한가?
    MP3파일, 동영상 파일이나 게임같이 연산보다
    데이터의 양이 중요한 경우 데이터의 디테일이 중요한 분야에서는
    short과 byte를 활용한다.
  • 자바(JAVA)는 2가지 실수 자료형이 있는데
    float(4바이트), double(8바이트)이 전부이다.
    float는 소수점 이하 6자리, double은 12자리 정밀도를 가지는데

★실수형 계산기는 Float, double 계산기밖에 없다.

  • 이제 문자형 타입을 알아본다.
    바로 char 형이다. 크기는 2바이트이며
  1. 특징은 문자 한글자만 대입할 수 있고,
  2. 반드시 ' ' (싱글쿼테이션,작은따옴표)를 사용한다.
    ex) char ch1 = ‘A’;
    ▲ ch1라는 문자형 변수 선언과 동시에 그 변수를 A라는 값으로 초기화한다.
  • 아스키코드 (알파벳, 숫자는 아스키코드(1byte)로 표현)

우리는 아스키코드를 통해 알파벳을 숫자로 표현할 수 있다.
문자 'A'를 표현하면 65이다.
그 외의 문자는 유니코드(2byte)로 표현한다.

이로써 우리는 왜 프로그래밍을 할 때 한글을 잘 안 쓰는지를 추리해보면 알 수 있다.
한글은 바로 유니코드이다. 더 큰 메모리 용량을 사용하기 때문도 있다.

  • 이제 논리형 타입을 알아본다
    바로 참과 거짓을 표현하기 위한 자료형 boolean 형이다.
    크기는 1바이트이다.
  1. 특징은 true, false 두 가지 값만 가진다. 참이냐? 거짓이냐?
    코딩에서는 스위치로도 많이 쓰인다.
    ex) 응용: 짠! 버튼을 누르면 true가 되고 true가 될 때
    메롱~ 을 출력하는 액션을 실행한다.
  • 이제 문자열 타입을 알아본다
    바로 String 형이다.
    복수 개의 문자를 모아놓은 것이 문자열이며
    String은 문자열을 저장하기 위한 클래스 (기본 자료형은 아니다)
    나중에 ※ 메소드 스택 힙 영역 이야기를 하면서 다룰 에정이다.
    코드 작성 시 “(더블 쿼테이션)을 사용한다.

▶ 나중에 자세히 다룰 예정
★ String str1 = new String(“안녕하세요”);
ㄴstr1이라는 스트링 타입의 주소값(참조값) 변수를 생성하고
그 안에 "안녕하세요"를 넣는다.

<Step.4> 발전을 위한 문제풀이 (kama_code 출제)

  1. num1과 num2를 double 선언과 동시에
    1.0000001과 2.0000001로 초기화하고 둘을 더하시오.
  2. num3을 long으로 선언하고 22억으로 초기화 하시오.
  3. num4를 정수형으로 2147483647로 선언과 동시에 초기화하고
    1을 더한 값을 출력하시오
  4. 1+2의 값이 2가 맞는지 아닌지 참 거짓을 출력하시오.
  5. 대문자A와 소문자 a를 문자형 변수로 선언과 동시에 초기화하고
    둘을 더하여 정수로 출력해보시오
  6. 국어 95 영어 5 수학 100을 kor, eng, math로 선언과 동시에 초기화를 하고
    총점을 구하시오.
  7. 문자열 "장점이 있으면"과 "단점이 있고"와 "단점이 있으면"과 "장점이 있다" 를
    각각 선언하고 모두 한 줄에 출력하시오.

▲△ 한번 직접 풀어보세요 ▲△

★ 정답 및 해설 ☆

		/* 1번 문제: num1과 num2를 double 선언과 동시에 
		1.0000001과 2.0000001로 초기화하고 둘을 더하시오.*/
		
        double num1 = 1.0000001;
		double num2 = 2.0000001;
		System.out.println(num1+num2);
		
        //실수는 크고 작다를 비교하는데 주로 사용한다.
        결과: 3.0000001999999997 //오차없이 표현이 불가능하다 (실수형 계산기 단점)
        
		/* 2번 문제: num3을 long으로 선언하고 22억으로 초기화 후 출력하시오.*/
       
        // 정수형 계산기는 int 형밖에 없으므로 
        // 숫자 뒤에 반드시 L을 넣어서 long이라는 것을 선언해주어야 인식 가능
		long num3 = 2200000000L; // L을 넣어줘야 에러가 안남
		System.out.println(num3);
        
        결과: 2200000000
		
		/*3번 문제 : num4를 정수형으로 2147483647로 선언과 동시에 초기화하고 
		1을 더한 값을 출력하시오*/
        
		int num4 = 2147483647;
		System.out.println(num4+1);
        
        //int가 표현할 수 있는 가장 큰 수는 2147483647이다.
        //이 숫자를 초과할 경우 int가 표현할 수 있는 첫번째 숫자(음수)로 돌아온다.
        결과: -2147483648 
		
		/*4번 문제 : 1+2의 값이 2가 맞는지 아닌지 참 거짓을 출력하시오.*/
        
        // num5를 boolean 타입 선언과 동시에 연산 확인
		boolean num5 = (1+2==2); 
		System.out.println(num5);
        
         결과: false // 1+2==3이지 2가 아니다.
		
		/*5번 문제 : 대문자A와 소문자 a를 문자형 변수로 선언과 동시에 초기화하고
		둘을 더하여 정수로 출력해보시오*/
        
		char ch1 = 'A'; //아스키코드 65이다.
		char ch2 = 'a'; //아스키코드 97이다.
        // 더한 값을 int 정수형으로 바꾼다.
		System.out.println((int)ch1+ch2);
        
        결과 : 162
		
		/*6번 문제 : 국어 95 영어 5 수학 100을 kor, eng, math로 선언과 
		동시에 초기화를 하고 총점을 구하시오.*/
        
        //int 변수가 여럿일때 이렇게 묶어서 선언하는게 좋다
		int kor=95, eng=5, math=100; 
		System.out.println(kor+eng+math);
		
        결과 : 200
        
		/*7번 문제 : 문자열 "장점이 있으면"과 "단점이 있고"와 
		 "단점이 있으면"과 "장점이 있다" 를 각각 선언하고 초기화하면서
         모두 붙여서 띄어쓰기를 추가하여 한 줄에 출력하시오.*/
         
		String str1 = "장점이 있으면"; // 스트링 선언 및 초기화
		String str2 = "단점이 있고";
		String str3 = "단점이 있으면";
		String str4 = "장점이 있다";
        
        //문자열은 연산이 불가능하므로 +는 앞 문자열과 뒷 문자열을 잇는다
        //공백을 표현하기 위해 " "를 추가했다.
		System.out.println(str1+" "+str2+" "+str3+" "+str4+".");
        
		결과 : 장점이 있으면 단점이 있고 단점이 있으면 장점이 있다.
        
        

그럼 다음 포스팅 때 봐요~ 자바(JAVA) 공부는 계속 됩니다.

profile
[Java SQL HTML CSS JS Studying] 발전을 꿈꾸며 이상을 실현합니다
post-custom-banner

0개의 댓글