JAVA 기초(2) 변수

Dayon·2023년 11월 6일
0

자바-기초다지기

목록 보기
2/7
post-thumbnail

1. 간단한 자바 프로젝트 생성 복습


  • 프로젝트 생성, 클래스 추가, 소스 코드 작업 및 수정, 실행, 종료
  • // 이후의 내용은 한 행만 주석 처리된다
  • / ~ / 여러 행을 묶어서 주석으로 처리할 때 사용한다.

2. 변수


변수의 개념

  • 변수 : 값을 저장하는 메모리 공간

  • 100과 200을 저장하려면 이 두값을 담을 그릇 → 변수가 두개 필요하다.

    public class Code2_2 {
    	public static void main(String[] args) {
    		int a = 100 ;
    		int b = 200 ; 
    	}
    }

    → 화면에 값을 출력하는 메서드인 System.out.println() 을 사용하지 않으면 화면에 아무것도 나오지 않는다.

    → 또한 자바 코드는 문장의 끝에 반드시 세미콜론 ; 을 넣어줘야 한다.


  • 그릇에 비유되는 변수

    • int : 정수형을 뜻하는 integer의 약자

    • double : 실수형 변수

    • char : 문자형 변수

    • String : 문자열형 변수

    • 대입연산자 (=) : 오른쪽의 값을 왼쪽에 넣으라는 의미


  • 변수의 값 더하기

    public class Code2_3 {
    	public static void main(String[] args){
    		int a = 100 ; 
    		int b = 200 ;
    
    		int c = a + b ;
    	}
    }

  • 변수의 값 출력

    System.out.println() 은 괄호안의 내용을 화면에 출력하는 기능을 한다.

    public class Code2_4 {
    	public static void main(String[] args) {
    		int a = 100 ; 
    		int b = 200 ;
    		int c = a + b ;
    
    		System.out.println(c);  // 300 출력 
    	}
    }
    public class Code2_5 {
        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 출력 
        }
    }

변수 선언과 값 대입

  • 변수를 선언하고 값을 대입할 때 주의해야 할 점

    • 올바른 값 대입 , 대입연산자에서는 =의 오른쪽인 부분이 모두 계산된 후 왼쪽에 대입된다는 것을 주의해야 함

      • 모든 코드에서 = 의 왼쪽에는 변수가 있어야 함

      • 하지만 = 의 오른쪽이 모두 변수일 필요는 없음

      • = 오른쪽에서는 값과 값의 연산이든 변수와 값의 연산이든 문제없이 처리됨

      • result = 100 + num1 ;


    • 잘못된 값 대입

      • 대입 연산자의 왼쪽에는 무조건 변수가 있어야 함

      • 100 = num1 + num2 ; (X)

      • num1 + num2 = 100 ; (X) 왼쪽에는 변수 1개!


    • 빼기 연산 코드

      result = num1 - num2 ; 
      System.out.println(num1 +-+ num2 +=+ result);
      
      // 100-50=50 출력
    • 곱하기 연산 코드

      result = num1 * num2 ;
      System.out.println(num1 + "*" + num2 + "=" + result);
      
      // 100*50=5000
    • 나누기 연산 코드

      result = num1 / num2;
      System.out.println(num1 + "/" + num2 + "=" + result);
      
      // 100/50=2
    • 사칙연산 계산기 코드

      public class Code2_7 {
          public static void main(String[] args) {
              int num1, num2, result ; 
              num1 = 100; 
              num2 = 50 ; 
      
              // add
              result = num1 + num2 ; 
              System.out.println (num1 + "+" + num2 + "=" + result) ;
      
              // minus
              result = num1 - num2 ; 
              System.out.println (num1 + "-" + num2 + "=" + result) ;
      
              // multiple
              result = num1 * num2 ;
              System.out.println (num1 + "*" + num2 + "=" + result) ;
      
              // divide
              result = num1 / num2 ; 
              System.out.println (num1 + "/" + num2 + "=" + result) ;
      
          }
      }

출력결과

100+50=150
100-50=50
100*50=5000
100/50=2


변수를 사용한 코드 출력

  • 변수에 문자열 대입
    • 문자열(String)에는 큰 따옴표(” “) 를 사용

    • 한글자로 이루어진 문자 (char)에는 작은 따옴표(’ ‘) 를 사용한다.

      String str1 = "난생처음" ;
      String str2 = "자바" ;
      System.out.println(str1);
      System.out.println(str2);
      // 난생처음자바 출력 
  • 숫자
    • 문자열의 더하기 빼기 연산

    • 빼기 연산은 오류 발생

      String result = str1 + str2 ; 
      System.out.println(result) ;         // 문자열의 더하기 빼기 연산
  • 문자열의 더하기 빼기 연산 코드
    public class Code2_8 {
        public static void main(String[] args) {
            String str1 = "난생처음" ;
            String str2 = "자바" ;
    
            System.out.println(str1);
            System.out.println(str2);
    
            String result = str1 + str2 ;
            System.out.println(result) ;
        }
    }
  • 나누기 연산
    • 10과 20으로 +,-,*,/ 연산을 출력하는 계산기
      public class Code2_9 {
          public static void main (String[] args) {
              int number1 = 10, number2 = 20;
      
              int resAdd;
              int resSub;
              int resMul;
              int resDiv;
      
              resAdd = number1 + number2 ;
              resSub = number1 - number2 ;
              resMul = number1 * number2 ;
              resDiv = number1 / number2 ; 
              
              System.out.println(number1 + "+" + number2 + "=" + resAdd);
              System.out.println(number1 + "-" + number2 + "=" + resSub);
              System.out.println(number1 + "*" + number2 + "=" + resMul);
              System.out.println(number1 + "/" + number2 + "=" + resDiv);
          }
      }

    실행 결과

10+20=30
10-20=-10
10*20=200
10/20=0

  • 실행 결과에서 더하기, 빼기, 곱하기 연산은 문제가 없지만 나누기 연산의 결과는 0.5가 아닌 0이 출력된다.
    • 정수 ( + , - , *, / ) 정수 = 정수
    • 정수 ( + , - , *, / ) 실수 = 실수
    • 실수 ( + , - , *, / ) 실수 = 실수

  • 10/20 = 0.5 가 되게 하는 방법
    • 변수 앞에 데이터 형식을 붙이면 그 변수의 데이터형이 잠깐 바뀐다.
    • double resDiv ; resDiv = (double) number1 / number2 ;



3. 변수명 작성 방법


변수명 규칙

  • 영문과 숫자 사용 가능
    • 변수 명은 영문이 맨 앞에 와야 함
      int abc = 100 ; (0)  
      int its4you = 200 ; (0) 
    • 숫자로만 구성해도 안되고, 영문과 숫자가 섞였더라도 숫자로 시작하면 안 됨
      int 444 = 100 ;   (X) 
      int 3away = 200 ; (X) 
  • 언더바 사용가능

    • 변수명에는 띄어쓰기를 허용하지 않음
    • 띄어쓰기 자리에 언더바()를 사용하면 의미를 쉽게 알아볼 수 있음
    • 언더바는 변수명의 맨 앞, 중간, 맨 뒤 어디든 넣을 수 있음
      *input_num , _*number , __my__ , _1 , _1234
  • 대/소문자 구분

    • 변수명에서 대문자와 소문자는 같지 않음
    • 변수명에 대문자와 소문자를 섞으면 언더바 없이도 의미를 부여할 수 있음
    • 변수명은 소문자로 시작하고, 클래스명은 대문자로 시작하는 것을 권장함
  • 예약어 사용 불가

    • 예약어란 자바에서 문법상 이미 사용하고 있는 단어를 말한다.

  • 클래스명 사용 지양
    • 클래스명을 변수로 사용하면 문법상 오류가 발생하진 않지만 클래스 본래의 기능을 잃어버려 프로그램이 엉망이 될 수 있다.

    • 클래스명을 변수로 사용해 오류가 발생하는 경우


바람직한 변수명

  • 짧으면서 의미를 한눈에 파악할 수 있는 경우
  • 변수의 용도를 알수 없거나 너무 길어선 안된다.
    • int a = 100 ; (X)

    • int first_number_of_intput_value = 100 ; (X)


4. 값을 입력받는 Scanner 클래스


4가지 꼭 지켜주자!
1. import java.utill.Scanner;
2. Scanner s = new Scanner(System.in);
3. score = s.nextInt() ; // next()는 문자열, nextDouble()은 실수
4. s.close()

Scanner 클래스

: 변수의 값을 키보드로 입력받도록 도와주는 역할을 함

  • 사용 형식
import java.utill.Scanner;            
Scanner s = new Scanner(System.in);   // System.in => 외부로 부터 입력받기 위해 
변수명 = s.nextInt();  // 정수 입력받기 
s.close() 
  • nextInt( ) : 사용자로부터 정수를 입력받을 때 사용하는 메서드
    • Code2_10.java
      import java.util.Scanner ; 
      
      public class Code2_10 {
          public static void main(String[] args) {
              Scanner s = new Scanner(System.in) ;
      
              int num ;
      
              num = s.nextInt();
              System.out.println("사용자가 입력한 값 ==> " + num);
      
              s.close();
          }
      }
  • nextDouble( ) : 실수를 입력 받을 때
  • next( ) : 문자열 입력받을 때
    • Code2_11.java
        import java.util.Scanner;
        
        public class Code2_11{
            public static void main (String[] args) {
                Scanner s = new Scanner(System.in);
        
                double num ;
                System.out.println("실수를 입력하시오 : ");
                num = s.nextDouble();
                System.out.println("사용자가 입력한 값 ==>" + num);
        
                String str;
                System.out.println("문자열을 입력하시오 : ");
                str = s.next();
                System.out.println("사용자가 입력한 값 ==>" + str);
        
                s.close();
            }
        }

문자열을 숫자로 변환하는 메서드

  • Integer.parseInt( ) : 입력받은 문자열을 정수로 변환하는 메서드
  • Double.parseDouble( ) : 입력받은 문자열을 실수로 변환하는 메서드
  • 변환 예제 코드
    public class Code2_12 {
        public static void main(String[] args) {
            int num1;
            double num2;
            String str;
    
            str = "1234";
            num1 = Integer.parseInt(str);
            System.out.println("문자열 ==> 정수 : " + num1);
    
            str = "3.14";
            num2 = Double.parseDouble(str);
            System.out.println("문자열 ==> 실수 : " + num2);
        }
    }

출력 결과
문자열 ==> 정수 : 1234
문자열 ==> 실수 : 3.14


문자열을 숫자로 변환하는 메서드

import java.util.Scanner;

public class Code2_Calculate{
    public static void main (String[] args) {
				// 변수 선언 , 나누기 결과는 실수형으로 준비 
        int num1, num2 ; 
        int resAdd;
        int resSub;
        int resMul;
        double resDiv;
        int resRem;

        Scanner s = new Scanner(System.in);  // Scanner 클래스 사용

				// 두 정수를 입력 받는 부분 
        System.out.println("정수1 ===> " );
        num1 = s.nextInt();
        System.out.println("정수2 ===> " );
        num2 = s.nextInt();

				// 연산 수행 후 출력 
        resAdd = num1 + num2 ; 
        System.out.println(num1 + "+" + num2 + "=" + resAdd);

        resSub = num1 - num2 ; 
        System.out.println(num1 + "-" + num2 + "=" + resSub);

        resMul = num1 * num2 ; 
        System.out.println(num1 + "*" + num2 + "=" + resMul);

        resDiv = (double) num1 / num2 ; 
        // result = Double.parseDouble(num1);
        System.out.println(num1 + "/" + num2 + "=" + resDiv);

        resRem = num1 % num2 ; 
        System.out.println(num1 + "%" + num2 + "=" + resRem);

        s.close();
    }
}

profile
success is within reach, allow yourself time

0개의 댓글