목차
변수
변수는 값을 저장하는 메모리 공간이다. 쉽게 비유하자면 음식을 담는 그릇이라고 할 수 있다.
예를 들어 100과 200이 담겨 있는 그릇은 a 그릇과 b 그릇이라고 보면 된다.
public class Study {
public static void main(String[] args) {
int a = 100;
int b = 200;
}
}
그러면 두 그릇의 음식을 하나의 그릇에 합친다고 하자. 새로운 그릇(c)이 필요하다.
public class Study {
public static void main(String[] args) {
int a = 100;
int b = 200;
int c = a + b;
}
}
그렇게 한 번 출력해 보면 300이라는 숫자가 나오는 것을 볼 수 있다.
public class Study {
public static void main(String[] args) {
int a = 100;
int b = 200;
int c = a + b;
System.out.println(a + "+" + b + "=" + c);
}
}
------
출력 결과
100+200=300
빼기 연산
public class Study {
public static void main(String[] args) {
int a = 100;
int b = 200;
int c = a - b;
System.out.println(a + "-" + b + "=" + c);
}
}
------
출력 결과
100-200=-100
곱하기 연산
public class Study {
public static void main(String[] args) {
int a = 100;
int b = 200;
int c = a * b;
System.out.println(a + "*" + b + "=" + c);
}
}
------
출력 결과
100*200=20000
나누기 연산
public class Study {
public static void main(String[] args) {
int a = 100;
int b = 200;
int c = a / b;
System.out.println(a + "/" + b + "=" + c);
}
}
------
출력 결과
100/200=0
나머지 연산
public class Study {
public static void main(String[] args) {
int a = 100;
int b = 200;
int c = a % b;
System.out.println(a + "%" + b + "=" + c);
}
}
------
출력 결과
100%200=100
변수에 문자열 대입
문자열(String)에는 큰 따옴표("")를 사용하고, 한 글자로 이루어진 문자(char)에는 작은따옴표('')를 사용한다.
public class Study {
public static void main(String[] args) {
String a = "안녕";
String b = "하세";
char c = '요';
char d = '.';
System.out.println(a + b + c + d);
}
}
------
출력 결과
안녕하세요.
문자열에서 빼기 연산은 불가능하다.
변수명 작성 방법
- 영문과 숫자 사용가능
public class Study {
public static void main(String[] args) {
int a = 100;
int abcd = 100;
int zzz = 100;
int a233= 100;
int iloveyou = 100;
}
}
- 언더바 사용 가능
public class Study {
public static void main(String[] args) {
int a_a = 100;
int _abcd = 100;
int __zzz = 100;
int _a233= 100;
int _1234 = 100;
}
}
- 대, 소문자 구분
public class Study {
public static void main(String[] args) {
int a_a = 100;
int A_A = 100;
int A_a = 100;
int a_A= 100;
}
}
- 예약어 사용 불가
예약어는 자바에서 이미 문법상 사용하고 있는 단어로 아래와 같은 종류가 있다.
boolean | byte | char | short | int | long | float | double |
private | protected | public | class | abstract | interface | extends | implements |
enum | void | return | if | else | switch | case | default |
for | do | while | break | contunue | true | flase | try |
catch | finally | throw | throws | transient | volatile | package | import |
synchronized | native | final | static | strictfp | assert |
public class Study {
public static void main(String[] args) {
int if = 100;
int else = 100;
int int = 100;
}
}
-------
에러! 사용불가!
- 클래스명 사용 지양
클래스명을 변수로 사용하면 문법상 오류가 발생하지는 않지만 클래스 본래의 기능을 잃어버리기 때문에 정상적인 프로그램을 만들 수가 없을 수 있다. 예를 들어 출력문인 System.out.printls() 메서드에서 클래스명인 System과 문자열 클래스명인 String을 변수명으로 사용하면 당장 에러가 발생하지는 않는다.
public class Study {
public static void main(String[] args) {
int System = 100;
int String = 100;
}
}
-------
에러 발생하지 않음
하지만 출력을 해보면? 다음과 같이 에러가 발생한다. 본래의 기능을 잃어서이다.
public class Study {
public static void main(String[] args) {
int System = 100;
int String = 100;
System.out.println(System + String);
}
}
------
출력 결과
Study.java:5: error: int cannot be dereferenced
System.out.println(System + String);
^
1 error
Scanner 클래스
이번에는 직접 키보드로 입력하고 그 입력된 값으로 계산이 가능하게 하는 클래스를 본다.
변수의 값을 키보드로 직접 입력받도록 도움을 주는 Scanner 클래는 그 외에도 많지만 nextInt()와 같은 메서드를 제공한다.
nextInt()
import java.util.Scanner;
public class Study {
public static void main(String[] args) {
// Scanner 클래스를 사용하기 위한 준비 작업.
Scanner scanner = new Scanner(System.in);
// 키보드를 통해 입력 받은 숫자를 get_number 변수에 저장.
int get_number = scanner.nextInt();
// 출력
System.out.println(get_number);
// 더 이상 키보드로의 입력이 필요 없으니 Scanner 클래스를 닫기
scanner.close();
}
}
------
키보드로 입력한 값 : 1
출력된 결과 : 1
nextDouble(), next()
이러한 메서드가 존재하는 이유는 각 변수에는 알맞은 형태가 있다.
예를 들어 int는 숫자(정수)를 저장할 수 있는 그릇을 만드는 예약어이고, float,double은 실수형 숫자를 저장할 수 있는 그릇을 만드는 예약어이다. 왜 이렇게 구분하는지에 대한 의문점은 아래 코드를 보자.
import java.util.Scanner;
public class Study {
public static void main(String[] args) {
// Scanner 클래스를 사용하기 위한 준비 작업.
Scanner scanner = new Scanner(System.in);
// 키보드를 통해 입력 받은 숫자를 get_number 변수에 저장.
int get_int_number = scanner.nextInt();
// 출력
System.out.println(get_int_number);
// 더 이상 키보드로의 입력이 필요 없으니 Scanner 클래스를 닫기
scanner.close();
}
}
------
입력 값 : 1.11111
출력되는 값이 없고 오류가 발생한다.
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Study.main(Study.java:8)
int로 생성된 변수는 오로지 숫자(정수) 저장이 가능하다. 더 쉽계 이야기하자면 삼각형 모양으로 생긴 구멍에 사각형 모양의 물건을 못 집어 넣는 것 처럼말이다. 재질이 같더라도...
import java.util.Scanner;
public class Study {
public static void main(String[] args) {
// Scanner 클래스를 사용하기 위한 준비 작업.
Scanner scanner = new Scanner(System.in);
// 키보드를 통해 입력 받은 숫자(실수)를 변수에 저장.
double get_double_number = scanner.nextDouble();
// 출력
System.out.println(get_double_number);
// 더 이상 키보드로의 입력이 필요 없으니 Scanner 클래스를 닫기
scanner.close();
}
}
------
입력 값: 1
출력 결과 : 1.0
입력 값: 1.111
출력 값: 1.111
import java.util.Scanner;
public class Study {
public static void main(String[] args) {
// Scanner 클래스를 사용하기 위한 준비 작업.
Scanner scanner = new Scanner(System.in);
// 키보드를 통해 입력 받은 문자열을 get_string 변수에 저장.
// char도 마찬가지로 사용.
String get_string = scanner.next();
// 출력
System.out.println(get_string);
// 더 이상 키보드로의 입력이 필요 없으니 Scanner 클래스를 닫기
scanner.close();
}
}
------
입력 값 : Hello!
출력 결과 : Hello!
이렇게 키보드를 통해 입력 받고자하는 것에 따라 nextInt(), nextDouble(), next()처럼 나뉘어진다.
사칙연산 계산기
import java.util.Scanner;
public class Lab02_02 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int number1, number2;
int rAdd;
int rSub;
int rMul;
double rDiv;
int resRem;
System.out.print("정수1 =>");
number1 = s.nextInt();
System.out.print("정수2 =>");
number2 = s.nextInt();
rAdd = number1 + number2;
rSub = number1 - number2;
rMul = number1 * number2;
rDiv = (double) number1 / number2;
rRem = number1 % number2;
System.out.println(number1 + "+" + number2 + "=" + rAdd);
System.out.println(number1 + "-" + number2 + "=" + rSub);
System.out.println(number1 + "x" + number2 + "=" + rMul);
System.out.println(number1 + "/" + number2 + "=" + rDiv);
System.out.println(number1 + "%" + number2 + "=" + rRem);
s.close();
}
}
'JAVA > 자바 공부' 카테고리의 다른 글
데이터형과 문자열(4장) (1) | 2024.06.14 |
---|---|
연산자 (2장) (0) | 2024.06.12 |