❗Cannot resolve symbol 'system'
class Ex2_1 {
public static void main(String args[]) {
System.out.println("Hello, World!");
System.out.print("Hello");
System.out.println("World");
}
}
계산한 결과 값을 출력하는 것은 어렵지 않다.
print 명령어의 값에 연산 부호가 포함된 식을 적어버리면 그만이다.
class Ex2_3 {
public static void main(String args[]) {
System.out.println(5+3);
System.out.println(5-3);
System.out.println(5*3);
System.out.println(5/3); // 나눗셈(/)연산의 경우 몫만 출력한다.
}
}
int x; // 변수타입(int) 변수이름(x)
int 타입의 x라는 변수를 사용하겠다고 선언한 것이다.
변수의 타입은 저장할 값의 종류에 따라 선택해야 하는데 그 중 자주 쓰이는 것은 4가지 정도로 꼽을 수 있다.
분류 | 변수의 타입 | 설명 |
---|---|---|
숫자 | int | 정수(integer)를 저장하기 위한 타입 |
double | 실수를 저장하기 위한 타입 | |
문자 | char | 문자(character)를 저장하기 위한 타입 |
String | 여러 문자(문자열, string)를 저장하기 위한 타입 |
int x = 100;
double pi = 3.14;
char ch = 'a';
String str = "abc";
'상수(constant)'도 변수와 마찬가지로 '값을 저장할 수 있는 공간'이지만 변수와의 차이점은 한 번 값을 저장하면 다른 값으로 바꿀 수 없다는 점이다.
상수를 선언하는 방법은 변수와 동일하나 변수타입 앞에 키워드 'final'을 붙여 선언한다.
final int MAX_SPEED = 10;
MAX_SPEED = 50; // int타입 상수 MAX_SPEED에 10을 저장하고 다른 값으로 변경하려 하면 오류.
상수의 이름은 모두 대문자로 하는 것이 관례라고 한다.
int year = 2023; // year -> 변수 2023, 100 -> 리터럴
final int MAX_VALUE = 100; // MAX_VALUE -> 상수
리터럴에도 변수와 같이 타입이 있다. 그 중 정수형과 실수형 리터럴은 구분을 위해 접미사를 붙여 사용한다.
long타입 리터럴에는 접미사 'l' 또는 'L'을 붙이고 접미사가 없다면 int타입의 리터럴이다.
또한 float타입 리터럴에는 'f' 또는 'F'를 붙인다. 접미사가 없다면 double타입의 리터럴이다.
'문자 리터럴'은 작은 따옴표(')로 감싸진 문자 하나로, 문자 두개 이상의 경우 큰 따옴표(")로 감싸야 하며 '문자열 리터럴'이라고 한다.
문자열 리터럴의 경우 따옴표 안에 아무 문자도 넣지 않는 '빈 문자열(Empty string)을 허용한다. 그러나 문자 리터럴의 경우에는 반드시 하나의 문자가 있어야 한다.
char ch = 'J'; // char ch = 'Java'; 와 같이는 사용할 수 없다.
String name = "Java";
String str = ""; // 빈 문자열 str
char ch = ''; // 오류
char ch = ' '; // ch에 공백 문자(blank)를 저장
String name = "ja"+"va";
System.out.println(name); // 출력 : java
String str = name + 8.0;
System.out.print(str); // 출력 : java8.0
System.out.println(7); // 출력 : 7
System.out.println("7"); // 출력 : 7
System.out.println(7+7); // 출력 : 14
System.out.println("7"+7); // 출력 : 77
int x = 10;
int y = 20;
두 변수 x와 y에 저장된 값을 서로 바꾸려면 어떻게 해야 할까?
우선 한 값을 일시적으로 저장해 둘 변수가 하나 더 필요하다.
int x = 10;
int y = 20;
int tmp; //임시로 값을 저장하기 위한 변수선언
tmp = x; //x값(10)을 tmp에 저장
x = y; //y값(20)을 x에 저장
y = tmp; //y에 tmp값(10)을 저장
System.out.println("x = "+x); // 출력 : x = 20
System.out.println("y = "+y); // y = 10
이러한 값의 종류에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것을 자료형(data type)이라고 한다.
자료형은 크게 '기본형'과 '참조형'으로 나눌 수 있다.
기본형 변수는 실제 값을 저장하는 반면, 참조형 변수는 값이 저장되어 있는 주소(memory address)를 값으로 갖는다.
자바는 참조형 변수 간의 연산을 할 수 없으므로 연산에 사용되는 것은 모두 기본형 변수이다.
기본형에는 모두 8개의 타입(자료형)이 있다.
종류 | 1 byte | 2 byte | 4 byte | 8 byte |
---|---|---|---|---|
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
위에서 강조 표시한 int와 double은 각각 정수형과 실수형의 기본 형식이다.
기본 자료형의 종류와 크기는 외워둬야 한다.
앞에서 사용한 print(), println()은 변수의 값을 그대로 출력하는 함수이므로 값을 변환하지 않고는 다른 형식으로 출력할 수 없다.
printf()는 '지시자(specifier)'를 통해 변수의 값을 여러 형식으로 변환해 출력한다.
int age = 24;
System.out.printf("age:%d%n", age); // 출력 -> age:24
// %n은 줄바꿈
int year = 2023;
System.out.printf("age:%d year:%d", age, year); // 출력 -> age:14 year:2023
printf()의 지시자 중 자주 사용되는 것은 아래와 같다.
지시자 | 설명 |
---|---|
%d | 10진(decimal) 정수의 형식으로 출력 |
%x | 16진(hexa-decimal) 정수의 형식으로 출력 |
%f | 부동 소수점(floating-point)의 형식으로 출력 |
%c | 문자(character)로 출력 |
%s | 문자열(string)로 출력 |
class Ex2_9 {
public static void main(String[] args) {
String url = "www.codechobo.com" ;
float f1 = .10f;
float f2 = 1e1f;
float f3 = 3.12e3f;
double d = 1.23456789;
System.out.printf("f1=%f, %e, %g%n", f1, f1, f1); // %f는 소수점 6자리까지 출력
System.out.printf("f2=%f, %e, %g%n", f2, f2, f2); // %e는 지수형태로,
System.out.printf("f3=%f, %e, %g%n", f3, f3, f3); // %g는 값을 간략하게 표현
System.out.printf("d=%f%n", d);
System.out.printf("d=%14.10f%n", d); // %전체자리.소수점 아래 자리f
System.out.printf("[12345678901234567890]%n"); // 정수부분의 빈 자리는 공백으로,
System.out.printf("[%s]%n", url); //소수점 아래 빈 자리는 0으로 채운다.
System.out.printf("[%20s]%n", url); // 20글자 공간에 출력(우측정렬)
System.out.printf("[%-20s]%n", url); // 20글자 공간에 출력(우측정렬)
System.out.printf("[%.8s]%n", url); // 왼쪽에서 8글자만 출력
}
}
실행 결과
f1=0.100000, 1.000000e-01, 0.100000
f2=10.000000, 1.000000e+01, 10.0000
f3=3120.000000, 3.120000e+03, 3120.00
d=1.234568
d= 1.2345678900
[12345678901234567890]
[www.codechobo.com]
[ www.codechobo.com]
[www.codechobo.com ]
[www.code]