JAVA 변수 & 연산자1

박종휘·2022년 5월 14일
0

JAVA - 국비

목록 보기
3/29
post-thumbnail

본격적인 JAVA 공부가 시작되었다!


1. 변수

1-1. 변수

  • Java에서도 다양한 종류의 자료를 표현할 수 있는 값
  • 일반적으로 웹 페이지에서 처리하고자 하는 "데이터"에 해당

1-2. 자료형 (Data Type)

  • 프로그래밍 언어에서 변수의 종류를 구별하기 위해 사용되는 키워드
  • Java에서 제공되는 자료형의 종류에는 총 8가지가 있으며, 이를 기본 자료형 (Primitive Data Type)이라 한다.

1-3. 자료형이 가지는 의미

  • 모든 변수는 컴퓨터의 메모리 영역에 생성
  • 일반적으로 메모리란, PC에 설치하는 RAM을 의미
  • 4byte의 크기를 갖는 변수 값 하나를 생성할 경우, PC의 RAM에서 해당 용량만큼을 사용
  • 변수는 RAM의 크기를 넘지 않는 범위 안에서만 생성 가능
    (용량을 넘어서는 경우 OutOfMemory 에러 발생)

1-4. 문자열 데이터

  • 참조변수
  • 프로그램 코드에서 "문장"을 표현하기 위해 사용되는 데이터 값

1-5. String -> S는 무조건 대문자

  • 문자열을 표현하기 위한 자료형 (첫 글자 대문자 주의)
  • 글자 수에 상관 없이 쌍따옴표("")로 묶인 내용 할당 가능
  • 숫자 값의 경우 쌍따옴표로 묶이게 되면 문자열로 취급되므로, 숫자와 문자열을 분명하게 구별해야 함.

1-6. 변수의 사용 방법

  • 변수를 사용하는 방법은 "선언"과 "할당"의 두 영역으로 구분

  • 변수의 선언
    -> 선언은 데이터 형과 사용하고자 하는 변수의 이름을 지정한 후, 세미콜론( ; )으로 한 라인을 종료

    		데이터형 변수이름;
    		int num1;
  • 변수의 할당
    -> 선언된 변수에 원하는 값을 대입하는 과정을 의미
    -> 값의 대입은 대입연산자("=")를 사용하여, 우변에서 좌변으로 대입

    		변수이름 = 값;
      		num1 = 100;
  • 선언과 할당의 통합

    		데이터형 변수이름 = 값;
      		int num1 = 100;

1-7. 문자열 데이터

  • String 형의 변수를 선언하고, 쌍 따옴표로 묶인 값을 대입

  • 빈 문자열이나 공백도 문자열 데이터이다.

    		String msg = "  안녕하세요. 자바  "
      		-> 문장을 표현, 공백 포함
              
           	String blank = "";
            -> 빈 문자열 값 가능
            
            String age = "25";
            -> 숫자 값이 쌍따옴표로 묶였다면 문자열이다.
  • 문자열 데이터의 덧셈
    -> 문자열 + 문자열 : 두 문장을 하나로 합쳐준다.

    		String language = "JAVA";
        	String language = "JA" + "VA";
  • 문자열 + 기본자료형
    -> 기본 자료형의 데이터가 문자열로 변환되고, 두 문장이 합쳐진다.

    		int age = 20;
        	String name = "자바학생";
        	String result = name + age;
        	-> "자바학생" + 20 -> "자바학생20"

1-8. 변수 이름 명명 규칙

  • 변수 이름은 영문, 숫자, "_", "$"만 사용 가능
  • 변수 이름의 첫 글자는 숫자로 시작될 수 없다.
  • 대/소문자를 엄격하게 구별하므로 오타에 주의
  • 자바에서 사용하는 예약어(키워드) 사용 불가
  • ex) myName, my_name, my_phone, userInput, userPassword
  • Class의 이름의 명명 규칙도 변수 이름의 규칙과 동일

1-9. 값의 할당 방법

  • boolean은 true(참), false(거짓) 중 한 가지만 갖는다.
  • boolean isKorean = true;
  • boolean isJapanese = false;

  • char는 홑따옴표(')로 감싸진 한 글자만 대입 가능
  • char first = '곽';

  • long, float, double은 다른 데이터 형과의 구별을 위해 값 뒤에 데이터 형의 첫 글자를 접미사로 가질 수 있음
    -> 접미사는 대/소문자를 가리지 않지만 가급적 대문자로 사용하는 것을 추천
  • long money = 5000000000L;
  • float PI = 3.14F;
  • double lat = 128.32452D;

  • 생성된 변수는 다른 변수에 대입될 수 있다.
  • int num1 = 100;
  • int num2 = num1;

1-10. 변수 사용의 제약

  • 반복하여 다른 값이 할당될 수 있지만, 선언은 중복 불가
  • int num1 = 100;
    num1 = 200;
    num1 = 300;
    int num1 = 400; (에러 : 이미 선언된 변수이므로 에러)

  • 선언되지 않은 변수는 사용 불가
  • int num1 = 100;
    num1 = 200;
    num2 = 300; (에러 : 선언되지 않은 변수이므로 에러)

  • 값이 대입되지 않은 변수는 다른 변수에 대입하거나 출력 불가
  • int num1; (에러 X : 선언한다고 에러가 나지는 않음)
    int num2 = num1; (에러 : 할당되지 않은 변수를 대입하였으므로 에러)
    System.out.println(num1); (에러 : 할당되지 않은 변수를 출력하였으므로 에러)

1-11. 상수

  • 변하지 않는 수

  • 변수와 마찬가지로 메모리상에 존재하지만, 값이 변경될 수 없는 데이터

  • final 키워드를 사용하여 선언된 변수는 상수로 생성된다.

    		final int age = 20;
      		final long money = 1200000L;
      		final float PI = 3.14F;
  • 메모리 상에 접근은 가능하지만, 할당한 값을 변경할 수는 없다. (읽기 전용)

Coding Training

public class Main {
	public static void main(String[] args) {
    	int num1; // 변수 선언
        num1 = 100; // 변수 할당
        System.out.println("num1 : " + num1);
        // 출력 -> num1 : 100
        
        num1 = 200; // 변수의 재할당
        System.out.println("num1 : " + num1);
        // 출력 -> num1 : 200
        
        int num2 = 200; // 변수 선언 + 할당
        System.out.println("num2 : " + num2);
        // 출력 -> num2 : 200
        
        // 선언 + 할당 + 접미사의 사용
		long num3 = 123456789000000000L;
		double num4 = 128.D;
		float num5 = 3.14F;
        
		System.out.println("num3 : " + num3);
		System.out.println("num4 : " + num4);
		System.out.println("num5 : " + num5);
        /* 
        출력
        num3 : 123456789000000000
        num4 : 128.0
        num5 : 3.14
        */
        
		int width = 100; // 일반변수
		
		final double PI = 3.14D; // 상수
		
		System.out.println("width : " + width);
        // width : 100
		System.out.println("PI : " + PI);
        // PI : 3.14
		
		width = 200; // 값의 변경
		
		// 이 라인은 에러가 발생한다.
		// PI = 3.141582d; -> 상수에 값을 재할당을 해서
		
		System.out.println("width : " + width);
        // width : 200
		System.out.println("PI : " + PI);
        // PI : 3.14

2. 연산자1

2-1. 연산자란?

  • 프로그램에서 연산을 수행하기 위하여 사용되는 특수기호들

2-2. 연산자의 종류

  • 대입 연산자 (=)
    -> 변수에 숫자나 문자열 등의 자료를 입력하거나 연산 결과를 다른 변수에 할당한다.
  • 사칙 연산자
    -> 덧셈 (+), 뺄셈 (-), 곱셈 (*), 나눗셈의 몫 (/), 나머지 (%)
  • 단항 연산자
    -> 변수에 대한 연산 결과를 다시 자기 자신에게 적용하는 경우 사용
  • 증감 연산자
    -> 특정 변수에 저장되어 있는 값을 1씩 증가, 감소 시킬 경우 사용
  • 비교 연산자
    -> 두 개의 변수값 간의 관계를 비교하고 참(true), 거짓(false)의 결과를 반환
  • 논리 연산자
    -> 좌변과 우변을 논리연산하고, 참일 때는 true, 거짓일 때는 false값을 반환

2-3. 사칙 연산자

  • 일반적인 덧셈 (+), 뺄셈 (-), 곱셈 (*), 나눗셈 (/ , %)을 수행
  • 사칙연산의 결과는 대입 연산자를 통하여 다른 변수에 대입 가능
  • 정수 (byte, short, int, long)와 실수(float, double)의 연산시에는 정수가 실수의 형태로 자동 변환되어 처리되기 때문에, 결과는 실수가 된다.
  • 나눗셈에 있어서의 주의사항
    -> 10 나누기 3을 할 때, 몫 3, 나머지가 1 계산되어지지만, 나눗셈에 대한 두 개의 연산자로 구분된다.

    -> 10 / 3 : 나눗셈의 몫만을 취하여 결과값은 "3"
    -> 10 % 3 : 나눗셈의 나머지만을 취하여 결과값은 "1"
    -> 모든 수는 0으로 나눌 수 없다.

  • 연산자 우선 순위
    -> 곱셈(*)과 나눗셈(/ , %)은 덧셈(+)과 뺄셈(-)보다 우선한다.
    -> 여러 연산자를 복합적으로 사용할 경우, 괄호로 묶여 있는 곳이 우선한다.

Example Coding

public class Main {
	public static void main(String[] args) {
    	int num1 = 12;
        int num2 = 8;
        
        int result1 = num1 + num2; // + (덧셈)
        int result2 = num1 - num2; // - (뺄셈)
        int result3 = num1 * num2; // * (곱셈)
        int result4 = num1 / num2; // / (나눗셈 - 몫)
        int result5 = num1 % num2; // % (나눗셈 - 나머지)
        
        System.out.println("result1 : " + result1);
		System.out.println("result2 : " + result2);
		System.out.println("result3 : " + result3);
		System.out.println("result4 : " + result4);
		System.out.println("result5 : " + result5);
    }
}

👉 출력

		result1 : 20
		result2 : 4
		result3 : 96
		result4 : 1
		result5 : 4
* 주의 : 나눗셈
	// 0 으로 나누기
    int num = 100;
    int zero = 0;
    
    int result = num / zero; 	// 에러 : 0으로 나누어서 에러
    int rewult2 = zero / num; 	// 0 

2-4. 단항 연산자

  • 어떤 변수(x)의 값에 대한 계산 결과를 다시 자기 자신에게 대입하고자 하는 경우의 약식 표현이다.

    		int x = 100;
    		x = x + 5;
    
    		-> 단항연산자
    
    		int x = 100;
    		x += 5;
  • 단항 연산자는 모든 사칙 연산자에 표현 가능
    -> +=, -=, *=, /=, %=

Example Coding

public class Main {
	public ststic void main(String[] args) {
    	int source = 100;
        
        source += 100;	// source = source + 100;	,200
        source -= 50;	// source = source - 50;	,150
        source *= 2;	// source = source * 2;		,300
        source /= 100;	// source = source / 100;	,3
        source %= 2;	// source = source % 2;		,1
        
        System.out.println("source : " + source);
    }
}

👉 출력

		source : 1

2-5. 증감연산자

  • 단항 연산자로 표현할 수 있는 식에서 계산 대상 값이 1인 경우, 덧셈과 뺄셈에 대해서는 다시 한번 축약 할 수 있다.

  • 덧셈의 경우

    		x = x + 1;
      		x += 1;
      		x++;
      		++x;
  • 뺄셈의 경우

    		x = x-1;
      		x -= 1;
      		x--;
      		--x;
  • "x++"와 "++x"의 차이
    -> 증감연산자는 그 자체가 다른 연산식의 피연산자로 사용 가능
    이때, 증감연산자의 표시 위치에 따라 결과가 서로 다르게 적용된다.

  • x++ / 증감연산자가 뒤에 표시되는 경우
    -> 현재 x의 값을 먼저 수식에 적용하고, 나중에 x에 대한 1증가 처리를 한다.

    		int a = 100;
        	int x = 1;
        	int y = a + x++;
        
        	y : 101
        	x : 2
  • ++x / 증감연산자가 앞에 표시되는 경우
    -> 먼저 현재 x의 값을 1증가 시킨 후, 그 결과를 수식에 적용

    		int a = 100;
        	int x = 1;
        	int y = a + ++x;
        
        	y : 102
        	x : 2

Example Coding

public class Main {
	public static void main(String[] args) {
    	int plus_num = 1;
        plus_num = plus_num + 1;
        plus_num += 1;
        plus_num++;
        ++plus_num;
        
        System.out.println("plus_num : " + plus_num);
        
        int minus_num = 5;
		minus_num = minus_num -1;
		minus_num -= 1;
		minus_num--;
		--minus_num;
		
		System.out.println("minus_num : " + minus_num);
        
        -------------------------------------------------
        
        // x1값과 y1값의 결과 확인
        int a1 = 100;
        int x1 = 1;
        int y1 = a1 + x1++;
        System.out.println("y1 : " + y1);
        System.out.println("x1 : " + x1);
        
        // x2값과 y2값의 결과 확인
        int a2 = 100;
        int x2 = 1; 
        int y2 = a2 + ++x2;
        System.out.println("y2 : " + y2);
		System.out.println("x2 : " + x2);
    }
}

👉 출력

		plus_num : 5
    	minus_num : 1
        
        y1 : 101
		x1 : 2
        
		y2 : 102
		x2 : 2

2-6. 비교연산자

  • 같다, 다르다, 크다(초과), 크거나 같다(이상), 작다(미만), 작거나 같다(이하) 에 대한 비교를 수행하는 연산자

    		같다 ==
      		다르다 !=
      		초과 >
      		이상 >=
      		미만 <
      		이하 <=
  • 주어진 식이 참인지 거짓인지만 판별 가능 → 연산 결과는 boolean 값으로 생성

    		int x = 100;
      		int y = 1;
      		boolean result = x != y;
              		(true)

Example Coding

public class Main {
	public static void main(String[] args) {
    	
        int num1 = 123;
        int num2 = 456;
        
        boolean result1 = num1 == num2;	//	F
		boolean result2 = num1 != num2;	//	T
		boolean result3 = num1 > num2;	//	F
		boolean result4 = num1 <= num2;	//	T
        
        System.out.println("result1 : " + result1);
		System.out.println("result2 : " + result2);
		System.out.println("result3 : " + result3);
		System.out.println("result4 : " + result4);
    }
}

👉 출력

		result1 : false
		result2 : true
		result3 : false
		result4 : true
profile
개린이의 개발 고수되기 작전!

0개의 댓글