자바의 정석 <기초편> 📌chapter2. 변수

모깅·2023년 1월 28일
0

📖 01. 화면에 글자 출력하기 - print()과 println()

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

<예제 2-1 >

✍️ 입력

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를 출력하고 줄바꿈 한다.
	} 
}

💻 출력
Hello, world
HelloWorld

<예제 2-2 >

✍️ 입력

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이 출력된다.
	}
}

💻 출력
Hello, world
3+5=8


📖 02. 덧셈 뺄셈 계산하기

<예제2-3 >

✍️ 입력

class Ex2_3 {
	public static void main(String args[]) {
		System.out.println(5+3);     // 화면에 5+3의 결과인 8이 출력된다.
		System.out.println(5-3);     // 화면에 5-3의 결과인 2가 출력된다.
		System.out.println(5*3);     // 화면에 5*3의 결과인 15가 출력된다.
		System.out.println(5/3);     // 화면에 5/3의 결과인 1이 출력된다.
	}
}

💻 출력
8
2
15
1

  • 5/3이 1이 나오는 이유
    -> int / int 이므로 계산결과가 int형으로 나온다.
    (소수점으로 만들고 싶다면 하나를 double형으로 바꾸자.)

📖 03. 변수의 선언과 저장

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

변수타입 변수이름; // 변수를 선언하는 방법
ex) int x; // 정수를 저장하기 위한 변수 x 선언

변수를 선언하면 변수(저장공간)이 생기며 그 공간에 값을 저장한다.

<예제 2-4 >

✍️ 입력

class Ex2_4 {
   public static void main(String args[]) {
 		int x = 5;                // int x;와 x =5;를 이처럼 한 줄로 합칠 수 있다.
		System.out.println(x);    // 화면에 x의 값인 5가 출력된다.
		x = 10;                   // 변수 x에 10을 저장. 기존에 저장되어 있던 5는 지워짐. 
		System.out.println(x);    // 화면에 x의 값인 10이 출력된다.
	}
}

💻 출력
5
10


<예제 2-5 >

✍️ 입력

class Ex2_5 {
   public static void main(String args[]) {
		int x = 10;
		int y = 5;
		System.out.println(x+y); 
		System.out.println(x-y);        
		System.out.println(x*y);        
		System.out.println(x/y);        
	}
}

💻 출력
15
5
50
2

  • 변수를 사용하면 변수부분만 바꾸면 되므로 쉽게 코드를 수정 할 수 있다.

📖 04. 변수의 타입

int x = 100; // 정수를 저장할 변수의 타입은 int로 한다.
double pi = 3.14; // 실수를 저장할 변수의 타입은 double로 한다.
char ch = 'a'; // 문자(1개)를 저장할 변수의 타입은 char로 한다.
String str = "abc"; // 여러 문자(0~n개)를 저장할 변수의 타입은 String으로 한다.

<예제 2-6 >

✍️ 입력

class Ex2_6 {
   public static void main(String args[]) {
		int 	 x = 100;
		double pi = 3.14;
		char 	 ch = 'a';
		String str = "abc";
        
		System.out.println(x);
		System.out.println(pi); 
		System.out.println(ch);
		System.out.println(str);
	}
}

💻 출력
100
3.14
a
abc


📖 05. 상수와 리터럴

  • '상수(constant)'는 '값을 저장할 수 있는 공간'이지만 변수와 달리 다른 값으로 저장 할 수 없다.
    -> 선언 방법은 변수와 동일하며 'final'을 붙여주기만 하면 된다.

  • final int MAX_VALUE;
    MAX_VALUE = 100; // 상수에 처음 값 저장
    MAX_VALUE = 200; // 에러. 상수에 저장된 값을 변경할 수 없음.
    -> 저장 후에는 변경을 허용하지 않는다.

  • 리터럴 : 상수의 다른 이름
    -> 이미 상수라는 단어를 정의 했기 때문에 다른 이름이 필요.

    변수(variable) 하나의 값을 저장하기 위한 공간
    상수(constant) 값을 한번만 저장할 수 있는 공간
    리터럴(literal) 그 자체로 값을 의미하는 것


📖 06. 리터럴의 타입과 접미사

  • 리터럴에도 타입이 존재한다.

    byte와 short타입의 리터럴은 존재x -> int타입의 리터럴 사용

  • 진수 (접두사에 붙힌다.)
    8진수 : '0'
    16진수 : '0x' or '0X'


📖 07. 문자 리터럴과 문자열 리터럴

  • 문자 : ' ' -> 문자 리터럴은 반드시 하나의 문자가 존재해야 한다.
    문자열 : " " -> 문자열 리터럴은 빈 문자열 가능하다.
    -> String name = new String("Java"); // String객체 생성
    -> String은 클래스이므로 객체를 생성해야 함. but " "로도 가능함.

📖 08. 문자열 결합

문자열 + anyType -> 문자열 + 문자열 -> 문자열
anyType + 문자열 -> 문자열 + 문자열 -> 문자열

<예제 2-7 >

✍️ 입력

class Ex2_7 {
	public static void main(String[] args) {
		String name = "Ja" + "va";
		String str  = name + 8.0;

		System.out.println(name);
		System.out.println(str);
		System.out.println(7 + " ");
		System.out.println(" " + 7);
		System.out.println(7 + "");
		System.out.println("" + 7);
		System.out.println("" + "");
		System.out.println(7 + 7 + "");
		System.out.println("" + 7 + 7);
	}
}

💻 출력
java
java8.0
7
7
7
7

14
77


📖 09. 두 변수의 값 바꾸기

int temp;

temp = x;
x = y;
y = temp;

<예제 2-8 >

✍️ 입력

class Ex2_8 {
	public static void main(String args[]) {
		int x = 10, y = 5;   // int x = 10; int y = 5;를 한 줄로
		System.out.println("x="+x); 
		System.out.println("y="+y); 

		int tmp = x;    // 1. x의 값을 tmp에 저장
		x = y;          // 2. y의 값을 x에 저장
 		y = tmp;        // 3. tmp에 저장된 값을 y에 저장
		System.out.println("x="+x); 
		System.out.println("y="+y); 
	}
}

💻 출력
x=10
y=5
x=5
y=10


📖 10. 기본형과 참조형

  • 기본형과 참조형
    자료형은 크게 '기본형'과 '참조형' 두 가지로 나눌 수 있다.
    -> 기본형 : 실제 값(data)을 저장
    -> 참조형 : 주소 값을 저장 (java는 참조형 변수 간의 연산 X)

기본형(Primitive type)
논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double), 계산을 위한 실제 값을 저장한다. 모두 8개
참조형(reference type)
객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입


📖 11. 기본형의 종류와 범위

자료형의 범위 -2^n ~ 2^n-1(n의 bit수)
-> int형은 약 +-20억 정도만 외우자.


📖 12. printf를 이용한 출력

  • printf() : '지시자(specifier)'를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능을 가지고 있다.

📖 13. printf를 이용한 출력 예제

<예제 2-9 >

✍️ 입력

class Ex2_9 {
	public static void main(String[] args) {
		String url = "www.codechobo.com";
		float f1 = .10f;   // 0.10, 1.0e-1
		float f2 = 1e1f;   // 10.0, 1.0e1, 1.0e+1
		float f3 = 3.14e3f;
		double d = 1.23456789;
		System.out.printf("f1=%f, %e, %g%n", f1, f1, f1); 
		System.out.printf("f2=%f, %e, %g%n", f2, f2, f2); 
		System.out.printf("f3=%f, %e, %g%n", f3, f3, f3);
		System.out.printf("d=%f%n", d);
		System.out.printf("d=%14.10f%n", d); // 전체 14자리 중 소수점 10자리
		System.out.printf("[12345678901234567890]%n");
		System.out.printf("[%s]%n", url);
		System.out.printf("[%20s]%n", url);
		System.out.printf("[%-20s]%n", url); // 왼쪽 정렬
		System.out.printf("[%.8s]%n", url);  // 왼쪽에서 8글자만 출력
	}
}

💻 출력

%f는 소수점 아래 6자리까지만 출력 -> 7번째에서 반올림


📖 14. 화면으로부터 입력받기

<예제 2-10 >

✍️ 입력

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

class Ex2_10 { 
	public static void main(String[] args) { 
		Scanner scanner = new Scanner(System.in); // Scanner클래스의 객체를 생성

		System.out.print("두자리 정수를 하나 입력해주세요.>");
		String input = scanner.nextLine(); // 입력받은 내용을 input에 저장
		int num = Integer.parseInt(input); // 입력받은 문자열을 숫자로 변환

		System.out.println("입력내용 :"+input);
		System.out.printf("num=%d%n", num);
	} 
}

💻 출력
두자리 정수를 하나 입력해주세요.>22
입력내용 :22
num=22

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


📖 15. 정수형의 오버플로우

  • 오버플로우(overflow) : 타입이 표현할 수 있는 값의 범위를 넘어서는 것을 의미한다.

    최대값 + 1 -> 최소값
    최소값 - 1 -> 최대값

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


<예제 2-11 >

✍️ 입력

class Ex2_11 {
	public static void main(String[] args) {
		short sMin = -32768,  sMax = 32767;
		char  cMin = 0,       cMax = 65535;

		System.out.println("sMin  = " + sMin);
		System.out.println("sMin-1= " + (short)(sMin-1));
		System.out.println("sMax  = " + sMax);
		System.out.println("sMax+1= " + (short)(sMax+1));
		System.out.println("cMin  = " + (int)cMin);
		System.out.println("cMin-1= " + (int)--cMin);
		System.out.println("cMax  = " + (int)cMax);
		System.out.println("cMax+1= " + (int)++cMax);
	}
}

💻 출력
sMin = -32768
sMin-1= 32767
sMax = 32767
sMax+1= -32768
cMin = 0
cMin-1= 65535
cMax = 65535
cMax+1= 0


📖 17. 타입 간의 변환방법

  1. 숫자를 문자로 변환 - 숫자에 '0'을 더한다. (아스키 코드로 변환)
    -> (char)(3 + '0') => '3'

  2. 문자를 숫자로 변환 - 문자에서 '0'을 뺀다.
    -> '3' - '0' => 3

  3. 숫자를 문자열로 변환 - 수자에 빈 문자열("")을 더한다.
    -> 3 + "" => "3"

  4. 문자열을 숫자로 변환 - Integer.parseInt() 또는 Double.parseDouble()을 사용한다.
    -> Integer.parseInt("3") => 3
    -> Double.parseDouble("3.14") => 3.14

  5. 문자열을 문자로 변환 - charAt(0)을 사용한다.
    -> "3".charAt(0) => '3'

  6. 문자를 문자열로 변환 - 빈 문자열 ("")을 더한다.
    -> '3' + "" => "3"

<예제 2-12 >

✍️ 입력

class Ex2_12 {
	public static void main(String args[]) {
		String str = "3";

		System.out.println(str.charAt(0) - '0');
		System.out.println('3' - '0' + 1);
		System.out.println(Integer.parseInt("3") + 1);
		System.out.println("3" + 1);
		System.out.println((char)(3 + '0'));   // '0'은 숫자로 48
	}
}

💻 출력
3 // 숫자
4 // 숫자
4 // 숫자
31 // 문자열
3 // 문자




[출처] 자바의 정석 <기초편> (남궁 성 지음)

profile
멈추지 않기

0개의 댓글