변수의 앞이나 뒤에 ++나 --를 붙이면 자동으로 1씩 증가하거나 감소합니다.

뒤에 붙이면 원래의 변수값을 먼저 사용하고 변수가 사용된 다음에 1씩 증가하거나 감소하고

앞에 붙이면 원래의 변수값을 사용하기 전에 증가나 감소를 먼저 하게 됩니다.


추가적인 얘기로, C언어가 있고 C++언어가 있는데

C언어 다음의 언어라는 의미로 C++라고 이름을 붙인 것입니다.


예제 코드를 참고하여 어떻게 작동하는지 확인해보도록 하겠습니다.


public class ExTest {

public static void main(String[] args) {

int x = 8;

int y = 3;

System.out.println(x++);

System.out.println(++x);

System.out.println(y--);

System.out.println(--y);

}

}





자바 연산자는 종류가 여러가지입니다.

우선 기초인 사칙연산부터 해보겠습니다.

덧셈, 뺄셈, 곱셈, 나눗셈 순서대로

+, -, *, /으로 사용하면 됩니다.

앞에서 int는 나눗셈을 하면 소수 부분이 잘린다고 배웠습니다.

이때, %를 사용해서 연산을 하면 나머지를 계산할 수 있습니다.

다음 코드로 예를 들어보겠습니다.

public class ExTest {

public static void main(String[] args) {

int x = 9;

int y = 5;

int add = x+y;

int sub = x-y;

int mult = x*y;

int div = x/y;

int mod = x%y;

System.out.println(add);

System.out.println(sub);

System.out.println(mult);

System.out.println(div);

System.out.println(mod);

}

}




값을 입력받고 사용하는 방법을 배워보겠습니다.

우선 입력받을 때 Scanner를 사용해야 하는데 맨 윗줄에 

import java.util.Scanner;

를 선언해줘야지 사용할 수 있습니다.

Scanner 함수를 다음과 같이 사용하여 입력받고 

int scan = s.nextInt(); 를 사용하여 scan 변수에 입력받은 값을 넣어서 사용하면 됩니다.

다음과 같이 실행해보았습니다.


import java.util.Scanner;


public class ExTest {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);

System.out.println("숫자를 입력하세요");

int scan = s.nextInt();

System.out.println("입력받은 값입니다 : " + scan);

}

}



위의 코드를 실행하고 1111을 입력하면 다음과 같이 실행됩니다.



int는 정수형이고, double은 소수형이라고 했습니다.

변수 두개씩 선언하고 2와 7을 넣어보겠습니다.

7/2를 수행하면 3.5여야 하는데

변수를 int로 선언한 경우에는 3.5에서 소수 부분이 잘려서 3으로 저장됩니다.

코드를 실행해보면 다음과 같습니다.



public class ExTest {

public static void main(String[] args) {

int x1 = 2;

int y1 = 7;

double x2 = 2;

double y2 = 7;

System.out.println(y1/x1);

System.out.println(y2/x2);

}


}


실행결과입니다.


변수의 자료형은 여러 가지가 있다고 했었습니다.

코딩할 때 어떤 자료형을 사용할지는 그 변수에 담을 데이터의 크기에 따라 결정하면 됩니다.

각 자료형이 담을 수 있는 데이터의 크기는 다음과 같습니다.


byte : 1byte

short : 2byte

int : 4byte

long : 8byte


1byte=8bit 이고 각 자료형은 음수와 양수를 담을 수 있기 때문에

byte 타입을 예로 들면 2의 8제곱인 256가지 수를 표현할 수 있습니다.

가능한 범위는 -128~127이 됩니다.

각 자료형이 표현 가능한 범위를 넘어선 연산을 하게 되면 오버플로우가 발생하게 되는데 이 부분은 나중에 배우도록 하겠습니다.


담을 수 있는 범위를 정리해보면 다음과 같습니다.


byte : -128~127

short : -32768~32767

int : -2147483648~2147483647

long : -9223372036854775808~9223372036854775807


범위가 클수록 자료형이 차지하는 공간도 많아지기 때문에 필요하지 않으면 더 작은 자료형을 사용하는 것이 좋습니다.


다음 코드로 예를 들어 보겠습니다.



public class Variables_Extra {

public static void main(String[] args) {

byte b = 127;

short s = 32767;

int i = 2147483647;

long l = 9223372036854775807l;

System.out.println(b);

System.out.println(s);

System.out.println(i);

System.out.println(l);

i=i+1;

System.out.println(i);

}

}


위의 코드를 실행하면 결과는 다음과 같습니다.


각 타입의 변수에 그 변수에 넣을 수 있는 최댓값을 넣고 출력해보았습니다.

제대로 출력되는 것을 확인할 수 있습니다.

그 다음, 이미 최댓값인 127이 들어있는 변수 i에 1을 더해보았습니다.

출력해보면 이상한 128이 아닌 이상한 값이 들어 있는 것을 확인할 수 있습니다.

이것이 앞에서 말한 오버 플로우입니다.

보관할 수 있는 범위를 넘어서면 발생하게 됩니다.

일단은 이런 것이 있다는 것만 알아두고

이를 방지하기 위해서 필요한 타입의 변수를 적절히 사용하면 된다는 것만 알아두면 되겠습니다.

+ Recent posts