JAVA 변수 및 리터럴

YeHee·2024년 10월 22일

⏰ 2024.10.11 (D+2)

1. 화면에 글자 출력하기 - print & println

🖥️ 화면에 글자 출력할 때는 System.out.print()을 사용하며, 괄호 () 안에 출력하고자 하는 내용을 넣으면 된다.

📌 예시]
System.out.print("Hello World"); //실행결과 : Hello World
System.out.print(3+5); // 실행결과 : 8
System.out.print("3+5"); // 실행결과 : 3+5

🔖 중요]

  • System.out.print() : 괄호 안의 내용을 출력하고 줄바꿈을 하지 않는다.
  • System.out.println() : 괄호 안의 내용을 출력하고 줄바꿈을 한다.

📖 예제]
class Ex2-1{
public static void main(String args[]){
-
system.out.println("Hello World"); //실행결과 : Hello World 출력 및 줄바꿈 한다.
system.out.print("Hello"); // 실행결과 : Hello 출력 및 줄바꿈 안한다.
system.out.println("World"); // 실행결과 : World 출력 및 줄바꿈 한다.

📖 예제]
class Ex2-2{
public static void main(String args[]){
-
system.out.println("Hello, World"); //실행결과 : Hello, World 출력 및 줄바꿈 한다.
system.out.print("3+5="); // 실행결과 : 3+5= 출력 및 줄바꿈 안한다.
system.out.println(3+5); // 실행결과 : 화면에 8 출력

2. 덧셈 뺄셈 계산하기

사칙연산(+,-,*,/)이 포함된 식(expression)의 결과를 화면에 출력하려면 아래와 같이 괄호 안에 식을 넣기만 하면 된다.

📌 예시]
System.out.println(5+3) // 괄호안의 식을 계산
System.out.println(8) // 실행결과 8이 출력

📖 예제]
class Ex2-3{
public static void main(String args[]){
-
system.out.println(5+3); // 실행결과 : 화면에 8 출력
system.out.println(5-3); // 실행결과 : 화면에 2 출력
system.out.println(5*3); // 실행결과 : 화면에 15 출력
system.out.println(5/3); // 실행결과 : 화면에 1 출력

3. 변수의 선언과 저장

변수 : 하나의 값을 저장할 수 있는 저장공간

📌 예시]
변수타입 변수이름; // 변수를 선언하는 방법

💡 주의사항]

  • 변수의 타입은 변수에 저장할 값이 어떤 것이냐에 따라서 달라진다.
    → int x; // 정수(integer)를 저장하기 위한 변수 x 를 선언
  • 변수의 이름은 저장공간이 서로 구별될 수 있어야 하기 때문에 필요하다.
  • '=' 는 오른쪽의 값을 왼쪽에 저장하라는 의미의 대입 연산자 (assignment operator)이다.
    → x = 5; // 변수 x에 5를 저장
  • 변수는 오직 하나의 값만 저장할 수 있으므로 이미 저장된 변수에 새로운 값을 저장하면 기존의 값은 지워지고 새로 저장된 값만 남는다.
    → x = 3; // 변수 x에 3을 저장, 기존의 값은 지워진다.

    ❗ 한 줄로 간단히 정리하는 경우,
    int x; // 변수의 선언
    x = 5; // 변수에 대입
    → int x = 5; //변수의 선언 및 대입을 동시에 입력

📖 예제]
class Ex2-4{
public static void main(String args[]){
-
int x = 5;
system.out.println(x); // 실행결과 : 화면에 5 출력
x = 10;
system.out.println(x); // 실행결과 : 화면에 10 출력

📖 예제]
class Ex2-5{
public static void main(String args[]){
-
int x = 10;
int y = 5;
-
system.out.println(x+y); // 실행결과 : 화면에 15 출력
system.out.println(x-y); // 실행결과 : 화면에 5 출력
system.out.println(x*y); // 실행결과 : 화면에 50 출력
system.out.println(x/y); // 실행결과 : 화면에 2 출력

4. 변수의 타입

변수를 선언할 때, 변수에 저장할 값의 종류에 따라 변수의 타입을 선택

🔢 숫자
1) int, long : 정수(integer)를 저장하기 위한 타입(20억이 넘을 땐 long)
2) float, double : 실수(floating-point number)를 저장하기 위한 타입
(float는 오차없이 7자리, double은 15자리)

🔠 문자
1) char : 문자(character)를 저장하기 위한 타입
2) String : 여러 문자(문자열. String)를 저장하기 위한 타입

📖 예제]

class Ex2-6{
public static void main(String args[]){
-
int x = 100; // 정수를 저장할 변수의 타입은 int
double pi = 3.14; // 실수를 저장할 변수의 타입은 double
char ch = 'a'; // 문자(1개)를 저장할 변수의 타입은 char
String = "abc"; // 여러 문자(0~n개)를 저장할 변수의 타입은 String

system.out.println(x); // 실행결과 : 화면에 100 출력
system.out.println(pi); // 실행결과 : 화면에 3.14 출력
system.out.println(a); // 실행결과 : 화면에 a 출력
system.out.println(abc); // 실행결과 : 화면에 abc 출력

5. 상수와 리터럴

상수(constant)는 변수와 마찬가지로 '값을 저장할 수 있는 공간'이지만 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수 없다.
변수의 타입 앞에 키워드 'final'을 붙여주면 된다.

📌 예시]
final int MAX_SPEED = 10;

💡 주의사항]

  • 상수의 이름은 모두 대문자로 작성하며, 여러 단어로 이루어져 있는 경우 '_'으로 구분

리터럴(literal)는 그 자체로 값을 의미하는 것

6. 리터럴의 타입과 접미사

종류 리터럴 접미사
논리형 false, true 없음
정수형 123, 0b0101, 077, 0xFF, 100L L
실수형 3.14, 3.0e8, 1.4f, 0x1, 0p-1 f, d
문자형 'A', '1', '\n' 없음
문자열 "ABC", "123", "A", "true" 없음

🔖 중요]

  • float타입 리터럴에는 'f'를 double타입 리터럴에는 'd', 'D'
  • 정수형에서는 int가 기본 자료형
  • 실수형에서는 double이 기본 자료형

💡 주의사항]

  • long타입의 리터럴에 접미사 'l', 'L'을 붙이고 접미사가 없으면 int타입의 리터럴
  • byte와 shout타입의 변수에 값을 저장할 때는 int타입의 리터럴을 사용
  • 16진수라는 것을 표시하기 위해서 접두사 '0x'또는 'OX'을 입력
  • 8진수라는 것을 표시하기 위해서 접두사 '0'을 입력

7. 문자 리터럴과 문자열 리터럴

문자 리터럴 : 'A'와 같이 작은따옴표로 문자 하나를 감싼 것
문자열 리터럴 : 두 문자 이상을 큰따옴표로 감싼 것

📌 예시]
char ch = 'J' //char ch = 'Java'; X
String name = "Java" //변수 name에 문자열 리터럴 "Java"를 저장

🔖 중요]

  • char타입의 변수는 단 하나의 문자만 저장
  • String타입의 변수는 여러 문자(문자열)을 저장
  • 문자열 리터럴 " " 안에 아무런 문자도 넣지 않는 것을 허용
  • 문자 리터럴 ' ' 안에 무조건 하나의 문자가 존재

📌 예시]
String str = ""; //내용이 없는 빈 문자열
char ch = '' //에러 ''안에 반드시 하나의 문자가 필요
char ch = ' ' //공백(blank)로 변수 ch를 초기화

8. 문자열 결합

두 문자열을 합칠 때, 덧셈(+)을 사용하여 문자열 결합

📌 예시]
String name = "Ja"+"va"; //실행결과 : Java
String str = name+8.0; //실행결과 : Java8.0

❗ 덧셈 연산자(+)는 피연산자가 모두 숫자일 때는 두수를 더하지만,
어느 한쪽이 String이면 나머지 한 쪽을 String으로 반환한 다음 두 String을 결합 처리

⭐ 덧셈 연산자(+)는 왼쪽에서 오른쪽의 방향으로 연산 수행
문자열 + any type → 문자열 + 문자열 → 문자열
any type + 문자열 → 문자열 + 문자열 → 문자열

9. 두 변수의 값 바꾸기

두 컵에 담긴 내용물을 바꾸려면 빈 컵이 필요한 것처럼, 값을 임시로 저장할 변수가 하나 더 필요하다.

int tmp // 임시로 값을 저장하기 위한 변수(빈 컵 역할)
-
tmp = x; // x의 값을 tmp에 저장
x = y; // y의 값을 x에 저장
y = tmp; //tmp에 저장된 값을 y에 저장

📖 예제]
class Ex2-8{
public static void main(String args[]){
-
int x = 10, y = 5;
system.out.println("x="+x); // 실행결과 : 화면에 x=10 출력
system.out.println("y="+y); // 실행결과 : 화면에 y=5 출력
-
int tmp = x
x = y;
t = tmp;
system.out.println("x="+x); // 실행결과 : 화면에 x=5 출력
system.out.println("y="+y); // 실행결과 : 화면에 y=10 출력

10. 기본형과 참조형

- 값의 종류는 크게 '문자와 숫자'로 나눌 수 있으며, 숫자는 다시 '정수와 실수'로 나눌 수 있다.
- 값의 종류에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것이 자료형(data type)이다.

기본형과 참조형

기본형(primitive type)
논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double)
계산을 위한 실제 값을 저장한다. (기본형 8개)

참조형(reference type)
객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입

  • 기본형의 종류와 범위

    종류/크기 1byte 2byte 4byte 8byte
    논리형 boolean - - -
    문자형 - char - -
    정수형 byte short ★int long
    실수형 - - float ★double

11. printf를 이용한 출력

- printf는 지시자를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능
- 지시자는 값을 어떻게 출력할 것인지를 지시해주는 역할
- 정수형 변수에 저장된 값을 10진 정수로 출력할 때는 지시자 '%d' 를 사용

println과 달리 printf는 출력 후 줄바꿈을 하지 않는다.
줄바꿈을 하려면 지시자 '%n' 을 함께 작성하여 줄바꿈을 해야한다.

지시자 설명
%d 10진 정수의 형식으로 출력
%x 16진 정수의 형식으로 출력
%f 부동 소수점의 형식으로 출력
%c 문자로 출력
%s 문자열로 출력

💡 실수형 값을 출력에 사용되는 지시자

  • %f : 기본적으로 소수점 아래 6자리까지만 출력
  • %e : 지수형태로 출력할 때 사용
  • %g : 값을 간략하게 표현할 때 사용

📌 그 외에 출력에 사용되는 지시자

  • %s : 숫자를 추가하면 원하는 만큼의 출력공간을 확보하거나 문자열의 일부만 출력

    지정된 숫자보다, 문자열의 길이가 작으면 빈자리는 공백으로 출력된다.

  • '-': 좌측 끝에 문자열을 붙이려고 하는 경우

  • '.': 문자열의 일부만 출력하려는 경우

12. 화면으로부터 입력받기

import java.util.Scanner; // Scanner 클래스를 사용하기 위해 추가

  1. Scanner 클랙스의 객체를 생성

    Scanner scanner = new Scanner(System.in); // Scanner클래스의 객체를 생성

  2. nextLine() 메서드 호출
    : 입력대기 상태에 있다가 입력을 마치고 Enter를 누르면 입력한 내용이 문자열로 반환

    String input = scanner.nextLine(); // 입력받은 내용을 input에 저장

  3. 입력 받을 문자열을 숫자로 변환
    : Interger.parseInt 메서드를 이용하여 문자열을 int타입의 정수로 변환

    int num = Interger.parseInt(input); // 입력받은 내용을 int타입의 값으로 변환

    int num = scanner.nextInt(); // 정수를 입력 받아서 변수 num에 저장

    13. 정수형의 오버플로우

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

    정수형 타입이 표현할 수 있는 최대값에 1을 더하면 최소값
    최소값에서 1을 빼면 최대값

    최대값 + 1 → 최소값
    최소값 - 1 → 최대값

14. 부호있는 정수의 오버플로우

- 부호없는 정수와 부호있는 정수는 표현범위 즉, 최대값과 최소값이 다르기 때문에 오버플로우가 발생되는 시점이 다르다.
- 부호없는 정수는 2진수 '0000'이 될 때 오버플로우가 발생하고, 부호있는 정수는 부호비트가 0에서 1일 될 때 오버플로우가 발생한다.

15. 타입 간의 변환방법

  1. 숫자를 문자로 변환 - 숫자에 '0'을 더한다.
    (char)(3 + '0') → '3'
  1. 문자를 숫자로 변환 - 문자에서 '0'을 뺀다.
    '3' - '0' → 3
  1. 숫자를 문자열로 변환 - 숫자에 빈 문자열("")을 더한다.
    3 + "" → "3"
  1. 문자열을 숫자로 변환 - lnteger.parselnt() 또는 Double.parseDouble()을 사용한다.
    Interger.parseInt("3") → 3
    Double.parseDouble("3.14") → 3.14
  1. 문자열을 문자로 변환 - charAt(0)을 사용한다.
    "3".charAt(0) → '3'
  1. 문자를 문자열로 변환 - 빈 문자열("")을 더한다.
    '3' + "" → "3"

0개의 댓글