[JAVA] 소스파일 / 주석문 / 변수 / 연산자 / 형변환

형이·2023년 7월 4일
0

JAVA

목록 보기
3/19
post-thumbnail

📝 Day 2

🖥️ 1. 소스파일 구문 분석

📎소스는 블록간의 중첩으로 구성

📎하나의 블록 = {...}

📎블록 안에 명시되는 명령어는 세미콜론(;)으로 문장의 끝을 표현


🖥️ 2. 주석문

2-1. 주석문이란

📎프로그램 소스코드 안에 개발자의 필요에따라 명시하는 설명문

📎주석문은 프로그램으로 컴파일되지 않는다

📎특정 명령문이 실행되지 않도록 차단하는 용도로 사용 가능

2-2. 주석문 종류

  • 한 줄만 처리하는 주석문
    앞에 "//"가 명시된 라인은 주석으로 인식
  • 여러 줄을 처리하는 주석문
    /* 이 블록 안에서는 여러 라인을 주석으로 처리할 수 있다. */

🖥️ 3. 변수

3-1. 변수란

프로그램에서 다양한 종류의 자료를 표현할 수 있는 값을 변수라고 부르며, 일반적으로 웹 페이지에서 처리하고자 하는 "데이터"에 해당

3-2. 자료형 (data type)

📎프로그래밍 언어에서 변수의 종류를 구별하기 위해 사용되는 키워드

📎자바에서 제공되는 자료형의 종류에는 총 8가지가 있으며, 이를 기본 자료형 (Primitive Data Type)이라 한다

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

📎모든 변수는 컴퓨터의 메모리 영역에 생성

📎일반적으로 메모리란, PC에 설치하는 RAM을 의미. 4byte 크기를 갖는 변수값 하나를 생성할 경우, PC의 RAM에서 해당 용량만큼을 사용

📎변수는 RAM 크기를 넘지 않는 범위 안에서만 생성 가능 (용량을 넘어설 경우 'OutofMemory' 에러 발생

3-4. 문자열 데이터

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

📎String

✔️ 문자열을 표현하기 위한 자료형 (첫글자 대문자)

✔️ 글자수 상관없이 쌍따옴표("")로 묶인 내용을 할당

✔️ 숫자값의 경우 쌍따옴표로 묶이게 되면 문자열로 취급되므로,
숫자와 문자열을 분명하게 구별해야 한다.

3-5. 변수의 사용방법

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

📌 변수의 선언

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

📌 변수의 할당

  • 선언된 변수에 원하는 값을 대입하는 과정을 의미
  • 값의 대입은 대입연산자(=)를 사용하며, 우변에서 좌변으로 대입
    ex) num = 10;
=> 변수 할당의 통합 : 선언과 할당은 한 줄로 표현 가능
ex) int num = 10;

📌 문자열 데이터

  • String형의 변수를 선언하고, 쌍따옴표로 묶인 값을 대입
  • 빈 문자열이나 공백도 문자열 데이터
	String msg = "안녕하세요, 자바.";	 -> 문장 표현(공백 포함)
	String blank = "";	             -> 빈 문자열 값
	String age = "20";	             -> "숫자값"은 문자열
  • 문자열 데이터의 덧셈 : 두 문장을 하나로 합쳐줌
	String language = "JA" + "VA"; 	// "JAVA"
  • 문자열 + 기본자료형 : 기본자료형의 데이터가 문자열로 변환되어 두 문장이 합쳐짐
	int age = 10;
	String name = "자바학생";
	String result = age + name;   // 10 + "자바학생" -> "10자바학생"

3-6. 변수 이름 명명 규칙

📎변수 이름은 영문, 숫자, '_', '$'만 사용 가능

📎변수 이름의 첫글자는 숫자로 시작될 수 없음

📎대/소문자를 엄격하게 구별하므로 오타 주의

📎java에서 사용하는 예약어(키워드)를 사용할 수 없음 (myname, my_name, userPassword 등)

📎클래스 이름의 명명 규칙도 변수 이름의 규칙과 동일

3-7. 값의 할당 방법

📌 boolean 은 true(참), false(거짓) 중 한 가지만 갖는다

	boolean isKorean = true;

📌 char는 홑따옴표(')로 감싸진 한 글자만 대입할 수 있다

	char first = '곽';

📌 long, float, double은 다른 데이터 형과의 구별을 위해 값 뒤에 데이터 형의 첫 글자를 접미사로 가질 수 있다. 접미사는 대/소문자를 가리지 않지만, 가급적 대문자로 사용하는 것이 좋다

 	long money = 5000000000L;
 	float PI = 3.14F;
	double lat = 128.32452D;

3-8. 값의 할당 방법 및 제약

📌 생성된 변수는 다른 변수에 대입될 수 있다

	int num1 = 100;
	int num2 = num1;

📌 반복하여 다른 값이 할당될 수 있지만, 선언은 중복 불가

	int num1 = 100;
	num1 = 200;
	int num1 = 300;		// 이미 선언된 변수이므로 에러

📌 선언되지 않은 변수는 사용할 수 없다

	int num1 = 100;
	num1 = 200;
	num2 = 300;			// 선언되지 않은 변수이므로 에러

📌 값이 대입되지 않은 변수는 다른 변수에 대입하거나 출력할 수 없다

	int num1;
	int num2 = num1;	// 할당되지 않은 변수를 대입하였으므로 에러
	System.out.println(num1); // 할당되지 않은 변수를 출력하였으므로 에러

3-9. 상수

📎상수 = 변하지 않는 수

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

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

	final int age = 20;
	final long money = 12000L;
	final float PI = 3.14F;

📎메모리상에 이름이 생성되므로 접근은 가능하지만, 할당된 값을 변경할 수는 없다 (읽기전용)

	final int age = 20;
	age = 21;	          // 에러 발생

🖥️ 4. 연산자

4-1. 연산자란

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

4-2. 연산자의 종류

📌 대입연산자 (=)

  • 변수에 숫자나 문자열 등의 자료를 입력하거나 연산결과를 다른 변수에 할당

📌 사칙(산술)연산자

  • 일반적으로 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/, %)을 수행
  • 사칙 연산의 결과는 대입연산자를 통해 다른 변수에 대입될 수 있다
  • 정수(byte, short, int, long)와 실수(float, double) 연산 시에는 정수가 실수 형태로 자동 변환되어 처리되기 때문에 결과는 실수가 된다

🔖나눗셈 주의사항

  • 10 나누기 3은 수학에서는 몫 3, 나머지 1 이라고 계산되지만, java에서는 나눗셈에 대해 두 개의 연산자로 구분
    → 10/3 : 나눗셈의 몫만을 취하여 결과값은 3
    → 10%3 : 나눗셈의 나머지만을 취하여 결과값은 1
  • 모든 수는 0으로 나눌 수 없다

📌 단항연산자

  • 어떤 변수의 값에 대한 계산 결과를 다시 자기 자신에게 대입하고자 하는 경우의 약식 표현
	int x = 100;
	x = x + 5;
	------------->
	int x = 100;
	x += 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 = 100 + 1
			// x = 2
	++x
	증감연산자가 앞에 표시되는 경우 먼저 현재 x의 값을 1증가 시킨 후,
    그 결과를 수식에 적용

	int a = 100;
	int x = 1;
	int y = a + ++x;   // y = 100 + 2
			 // x = 2

📌 비교연산자

  • 같다, 다르다, 크다(초과), 크거나 같다(이상), 작다(미만), 작거나 같다(이하)에 대한 비교를 수행하는 연산자
	같다		==             다르다		!=
	크다		>              크거나 같다	>=
	작다		<              작거나 같다	<=
  • 주어진 식이 참인지 거짓인지 판별 가능하므로, 연산 결과는 boolean 값으로 생성
	int x = 100;
	int y = 1;
	boolean r = x 비교연산자 y;

📌 논리연산자

  • 두 개 이상의 비교 연산자의 결과나 boolean 값에 대해 추가로 "AND"나 "OR" 연산을 수행하여 결과를 얻는다
  • AND의 의미를 갖는 '&&'
    → && 연산자는 두 개의 boolean 값을 비교하여 모두 true인 경우만 결과값이 true
  • OR의 의미를 갖는 '||'
    → || 연산자는 두 개의 boolean 값을 비교하여 둘 중 하나라도 true인 경우 결과값은 true
	int num1 = 10;
	int num2 = 20;

	num1 >= num2 || num1 == num2 		-> false
	num1 == 10 || num2 != 10 			-> true
	!(num1 >= num2)						-> true
	!true 								-> false

🖥️ 5. 형변환 (Casting)

5-1. 형변환이란

📎변수의 자료형이 변환되는 것을 의미

📎특정 자료형의 값을 다른 자료형의 변수에 대입할 수 있다

📎형변환의 종류 : 암묵적 형변환(upcasting)과 명시적 형변환(downcasting)

5-2. 암묵적 형변환

📎서로 다른 자료형을 연산 혹은 대입하는 경우, java 컴파일러가 자료형을 통일한다

📎이 과정에서 발생하는 형변환을 암묵적 형변환이라고 한다

 	long a = 100;	// 정수형
	float b = a;	// 정수형을 실수형에 대입
 	→ b에는 100.0 이라는 값이 할당
	→ 암묵적 형변환은 어떤 변수가 더 큰 범위의 변수로 대입 가능함을 의미 

📎암묵적 형변환은 데이터의 손실이 발생하지 않는 범위 내에서만 이루어 진다

5-3. 명시적 형변환

📎데이터의 손실을 감수하더라도, 강제로 형변환을 시키는 형태

	자료형 b = (변환할 자료형)a;

📎실수형을 정수형으로 변환하는 경우, 소수점 이하 자리는 버려진다

	double a = 3.14d;
	int b = (int)a;			// 결과는 3

0개의 댓글