미새문지

JAVA. Day03 변수의 선언 본문

언어 학습/자바 연습

JAVA. Day03 변수의 선언

문미새 2022. 4. 20. 23:27
728x90

자바 3일차 입니다. 아직 셋째 날인데 벌써 코딩이 헷갈리고있습니다...

 

변수란?

값을 저장하는 저장공간이며, 값을 재사용하기 위해 사용하는 값을 변수라고 합니다.

 

변수에도 정수, 실수 문자, 문자열이라는 종류로 나뉘어 사용되는데,

이러한 종류에 맞춰 선언하는것을 변수의 선언이라고 하고,

변수의 종류를 알게 해주는 것을 "자료형" 이라고 합니다.

 

  자료형   변수명;

    int       정수

 double    실수

  char      문자

 String   문자열

 

 

이제 변수를 선언한 후 값을 넣어줘야하는데 이러한 행위를 "초기화" 라고합니다.

변수명 = 값; 으로 작성합니다.

 

ex) a = 5 이면 "a는 5와 같다" 가 아닌 "a에 5를 대입한다"라는 뜻으로 쓰입니다.

 

 

★변수에 대해 중요한 해석이 있는데 

변수가 선언되거나 대입연산자 왼쪽에서 사용되면 저장공간으로 해석하고 나머지는 값으로 해석합니다.

abcdefg = 12345678 이 있으면 =자 좌측으론 전부 저장공간으로 해석되어 abcdefg는 변수명이 되고 

우측 12345678은 abcdefg의 변수값이 되는거죠

 

 

변수명 생성시에 규칙이 있습니다

 1. 숫자로 시작할 수 없다.

  - a12는 가능하지만 12a는 불가능합니다.

 2. 특수문자 사용이 불가능하다.

  - 변수명에 특수문자 사용은 불가능하지만 _언더바만 사용이 가능합니다.

 3. 띄어쓰기는 불가능하다.

  - int misae는 사용할 수 있으나 int mi sae는 불가능합니다

  - 대신에 _언더바로 띄어쓰기 대신은 가능합니다.    ex) int mi_sae

 

 

변수명 권고사항

 1. 변수명으로 코드를 파악할 수도 있기 때문에 웬만하면 의미있는 단어를 사용해 가독성을 높입시다.

 2. 보통 대문자는 클래스명으로 사용하기에 웬만하면 소문자로 시작합시다.

 

 

이제 자료형과 변수명을 작성했다면 변수값을 입력받아야 합니다.

 

Java에서는 입력받기 위해 Scanner라는 클래스를 사용하는데, 정수, 실수, 단어, 줄단위를 쉽게 읽을 수 있습니다.

 

먼저, 스캐너를 호출해야 합니다.

스캐너를 호출하기 위해서는 import를 통해 호출해야 하는데 java.util 패키지에 포함되어 있어 같이 작성합니다.

import java.util.Scanner;

 

그다음 자바의 기본 문법을 작성해 줍니다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
    
    }
}

 

이제 스캐너의 객체를 생성해야 합니다.

Scanner sc = new Scanner(System.in);

- sc라는 변수명을 만들어 입력값을 읽는 것을 의미합니다.

 

 

예시로 코드하나 만들어보겠습니다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("나이 : ");
		int age = sc.nextInt();
		sc.nextLine();
		System.out.print("이름 : ");
		String name = sc.nextLine();
		
		System.out.printf("%s님은 %d살입니다\n", name, age);
	}
}

- 위 코드를 출력하게 되면 "나이 : "라는 문장이 출력되고 수치를 입력하면 "이름 = "이 출력됩니다.

똑같이 이름에도 수치를 입력하면  입력 수치를 읽어 "oo님은 oo살입니다" 가 출력됩니다.

이것을 Input(입력)이라고 합니다.

 

스캐너 클래스에도 각 자료형에 맞게 메소드가 만들어져 있는데 이것을 입력 메소드 라고 합니다.

 

< 입력 메소드 >

1. next( );

  - 사용자가 콘솔창에 입력한 갑을 String 타입으로 받아온다.

  - 띄어쓰기로 구분

2. nextLine( );

  - 사용자가 입력한 값을 String 타입으로 받아온다.

  - next()와 다르게 엔터로 구분

3. nextInt( );

  - 사용자가 입력한 값을 int로 받아온다.

  - 띄어쓰기로 구분

4. nextDouble( );

  - 사용자가 입력한 값을 double로 받아온다.

  - 띄어쓰기로 구분

 

입력 메소드를 사용하고 나면 버퍼에 엔터 값이 남아 있습니다.

그 다음에 nextLine( )을 사용하면 입력을 받지않고, 버퍼에 남아있는 엔터값을 받아옵니다.

따라서 버퍼를 비우려면 입력 메소드를 사용한 후에 nextLine( )을 사용해 버퍼를 비워주어야 합니다.

 

 

다음은 연산자 입니다.

각 연산의 결과가 어떤 타입인지 파악하는 것이 매우 중요합니다.

연산자에는 네 종류가 있습니다.

- 산술연산자

- 관계연산자

- 논리연산자

- 삼항연산자

 

3일 차에는 산술연산자만 배워보겠습니다.

 

 

< 산술 연산자>

 " +

  - String은 연산시 결과가 String이며 연결된다.

  - char는 int로 생각한다(각 부여된 숫자로 계산됨)

 

 " - "

  - String연산이 불가

  - char는 int로 생각한다

 

 " * "

  - String연산이 불가

  - char는 int로 생각한다

 

 " / "

  - String연산이 불가

  - char는 int로 생각한다

  - int / int --> int(몫)

  - 0으로는 나눌 수 없다.

 

 " % "

  - 나머지 연산자이다

  - 10 % 3 --> 1(나머지만 나옴)

 

다음은 각 자료형별로 산술연산자를 사용할 때 나오는 값에 대해 적어놨습니다.

(장문이라 더보기로 숨겨놓았습니다)

더보기

덧셈

< int + ?? >
System.out.println(10 + 10); // int + int --> int
System.out.println(10 + 3.14); //int + double --> double
System.out.println(10 + 'a'); // int + char --> int
System.out.println(10 + "안녕"); // int + String --> String

 

< double + ?? >
System.out.println(3.14 + 10); // double + int --> double
System.out.println(3.1 + 1.9); //double + double --> double
System.out.println(3.1 + 'a'); //double + char --> double
System.out.println(3.1 + "안녕");  //double + String --> String

< char + ?? > 
System.out.println('a' + 10); // char + int --> int
System.out.println('a' + 10.0); //char + double --> double
System.out.println('a' + 'b'); //char + char --> int
System.out.println('a' + "안녕하세요"); // char + String --> String

< String + ?? >
System.out.println("안녕" + 10); //String + int --> String
System.out.println("안녕" + 1.0); //String + double --> String
System.out.println("안녕" + 'a'); //String + char --> String
System.out.println("안녕" + "하세요"); // String + String --> String

 

뺄셈
< int - ?? >
System.out.println(10 - 5); //int - int --> int
System.out.println(10 - 3.1); //int - double --> double
System.out.println(10 - 'a'); //int - char --> int
System.out.println(10 - "안녕"); //오류 문자열은 뺄셈 사용 불가능

< double - ?? >
System.out.println(3.1 - 1.1); //double - double --> double
System.out.println(3.1 - 'a'); //double - char --> double

< char - ?? >
System.out.println('a' - 'b'); //char - char --> int

곱셈
< int * ?? >
System.out.println(3 * 0); //int * int --> int
System.out.println(0 * 5.1); // int * double --> double
System.out.println(3 * 'a'); // int *char --> int
// 문자열은 곱셈 불가능

< double * ?? >
System.out.println(3.1 * 3.0); //double * double --> double
System.out.println(3.0 * 'a'); //double * char --> double
System.out.println('a' * 'a'); //char * char --> int

나눗셈
int / int는 몫이 결과로 나온다
System.out.println(10 / 3); // int / int --> int
System.out.println(10 / 1.0); // int / double --> double
System.out.println(10 / 'a'); // int / char --> int

문자열은 나눗셈 불가능
System.out.println(1.5 / 1.5); // double / double --> double
System.out.println(1.5 / 'a'); // double / char --> double
System.out.println('a' / 'a'); // char / char --> int

System.out.println(10 / 0);  //0으로는 나눌 수 없다

 

산술연산자의 설명은 여기까지입니다.

남은 연산자들은 다음 날에 들어갈 것 같습니다.

공부할 땐 "아 그렇구나" 하고 간단해보였는데 막상 복습해볼려하니까 너무 헷갈리더군요

이번 강의로 복습이 확실히 중요하다고 느꼈습니다

728x90

'언어 학습 > 자바 연습' 카테고리의 다른 글

JAVA.Day06 swhich문 + for문  (1) 2022.04.27
JAVA.Day05 선택제어문  (1) 2022.04.24
JAVA. Day04 연산자  (1) 2022.04.22
JAVA. Day02 변수  (1) 2022.04.16
JAVA. Day01 JAVA란?  (1) 2022.04.14