변수, 진수, 데이터 타입 - 0726

안씅👩🏻‍💻·2022년 7월 27일
0
post-thumbnail

📎 복습하기 - 220725

  • 컴파일러란, 고급어로 프로그래밍된 소스파일을 기계어로 변환해주는 SW.
    • 고급어를 기계어로 변환하는 과정을 "컴파일" 이라고 함.
  • 운영체제(OS)란, 사용자가 하드웨어를 쉽게 다루도록 도와주는 SW.
    • Window, Mac, Linux ...
  • 자바(Java)의 특징
    • 독립성, 이식성, 객체지향성, 비교적 쉬운 문법 ...


👩🏻‍💻 변수(Variable)

🔍 변수(Variable)란? 4p

  • 하나의 값을 저장할 수 있는 메모리 공간임.

  • 선언된 변수에 할당된 메모리 값 변경 읽어올 때 사용.

  • 변수 선언은 변수타입 + 변수이름 형식으로 선언함.

    • 메모리 크기와 데이터 성격에 따라 변수타입을 다르게 작성함.



1️⃣ 변수 작명 규칙(variable naming convention)

변수 작명(variable naming) 방법 정리

  • 영문, _, $ 포함 가능.
    • %, _ 로 변수 작명 경우는 주로 SW 제품안의 프로그램에서 사용함.
int variable; 
int _variable; 
int $variable; 
int %variable; 

  • 변수 작명 시 첫글자 숫자 작명 시 에러(error) 발생.
    • 변수 이름 중간이나 마지막은 가능함.
int 00variable; // 변수명 첫 글자는 숫자로 작성 X.
int vari00able; // 중간이나 
int variable00;		// 마지막에 숫자 작성 가능.

- 변수 이름은 *camel notation(낙타 표기법)으로 작성하는 것이 관행 ```java int variableNaming; // 변수의 첫 단어는 소문자 시작, 다음 단어부터 대문자 시작 ```

*camel notation(낙타 표기법) : 영문 표기시 두번째 단어부터는 첫 글자는 대문자.

결론, 변수이름은 영어로만. 여러단어 작명은 camel notation사용

2️⃣ 클래스 작명 규칙(class naming convention)

1️⃣ 내용의 변수 작명(variable naming) 방법과 동일함

  • 변수 작명법과 모두 동일함. but, 첫 글자 대문자.
    ex) ClassNamingConvention.class

3️⃣ 변수 사용법

  • 변수 선언 시 초기값을 줄 수 있음.
int a;			// 그냥 변수 선언
int a = 10;		// 변수 선언 후 초기값 설정

💡
👨🏻‍🏫 : "실무에서 변수 선언할 때, 초기값을 설정할 수 있다면 최대한 설정하는 것을 추천합니다."


✍ 원의 면적 계산하기(실습예제)

⌨️ coding⤵️

package p01.basic;
// 원의 면적 계산하기 
public class ComputersArea {
//	변수이름 작명의 최신 트렌드 : 원래 데이터 또는 사용 목적에 맞게 긴 단어 사용
	public static void main(String[] args) {
		double radius; 	// r- 변수 이름을 갖는 데이터 저장소 정의 
		double area; 	// a- 변수 이름을 갖는 데이터 저장소 정의
		
//		1. 입력데이터 읽기(반지름 읽기)
		radius =30;
		
//		2. 원의 면적 계산하기 : 입력데이터를 출력 데이터로 가공
		area = radius * radius * 3.14;
		
		
//		3. 원의 면적을 출력하기 (콘솔창에 보여주기)
		System.out.println("원의 반지름이" + radius + "인" + "원의 면적은 " + area + "입니다.");
		
	}

}

🖥 print ⤵️


<에러노트 link>
Scanner input = new Scanner(System.in);

💡 콘솔(console)에 input 값이 여러개인 경우

  • 스페이스로 값을 구분함.
  • 엔터로 값을 실행함.

4️⃣ 식별자(identifier) 용어

🔍 identifier(식별자)란?

  • 프로그램 코드 안에서 미리 정의된 element(원소)들을 구분하기 위한 이름.
  • 프로그램 코드가 실행되어 메모리에 올라갈 때 원소의 이름들을 별도의 테이블에서 관리함.

ex) VariableEX(class name), main(method), age(variable name), radius(variable name)

식별자 코드 예시 넣기

🔍 keyword(reserved word :예약어)란?

  • public, class , static, void, int, double...

5️⃣ 변수(variable) 용어

변수(variable)용어

  • age, radius...

✍️ 식별자(identifier), 변수(variable) 실습

⌨️ coding⤵️

코드를 입력하세요

🖥 print ⤵️
[출력이미지]



👩🏻‍💻 리터럴(literal)

🔍 리터널(literal)이란?

  • 소스 코드 내에서 직접 입력된 변수의 초기값.
    • 변수선언 시에 초기값 또는 변수 사용 시에 새로 할당된 값들을 의미함.

1️⃣ 리터럴(literal)의 종류

정수 리터럴, 실수 리터럴, 문자 리터럴, 문자열 리터럴, 논리문자 리터럴로 나뉜다.

ex) 15, 5, 0.5, 0.1, 30 중에서
정수형 리터럴 : 15, 5
실수형 리터럴 : 5.0, 0.1

💡 literal 값들이 프로그램이 메모리에서 실행될 때, 같이 별도 테이블로 관리되고 있다.

2️⃣ 이스케이프 시퀀스(escape sequence)

이스케이프(escape)문자란?

  • \가 포함된 문자 리터럴(literal)로 특수한 용도로 사용됨.

  • \n, \t, \\, \", \', \u16진수

💡 보드에서 엔터키 누르면 두개의 escape 문자(\n \r) 발생함.

\n : new line
\r : carrage return


✍ 이스케이프 시퀀스(escape sequence) 실습

⌨️ coding ⤵️

package p01.eascape_esQuence;

public class EscapeSquenceEx {

	public static void main(String[] args) {
			
		System.out.println("n줄 바꿈 n연습" ); 
		System.out.println("\n줄 바꿈 \n연습" );
		
		System.out.println("t탭키 t연습" );
		System.out.println("\t탭키 \t연습" );
		
		System.out.println("\\ backslash 1개 출력" );
		System.out.println("\\\\\\ backslash 3개 출력" );
		
		System.out.println( "큰 따옴표 \" 출력");
		System.out.println( "작은 따옴표 \' 출력");
 
 // 실상 거의 쓸 일 없음.		
	}
}

🖥 print ⤵️
[이스케이프 실행이미지]

💡
👨🏻‍🏫 : "실무 수행시 아래 방법으로 소스코드의 정보를 작성해야합니다."

/******************************************/
/*Class 이름 : VariableEx3				*/
/*Class 용도 : 청소년과 성인을 구분하는 class	*/
/*최초 생성일자 : 2022.07.26				*/
/*최초 작성자 : 안성연						*/
/*최종 수정일 : 2022.07.26					*/
/****************************************/


👩🏻‍💻 진수와 보수

1️⃣ 최상위비트(MSB)

🔍 최상위비트(MSB)란?

  • Most Significant Bit의 약자로 비트 단위의 연산에 있어서그 숫자 값의 크기에 가장 크게 영향을 미치는 유효 숫자를 말함.
  • 숫자를 나타내는 비트 열 중에서 가장 왼쪽의 비트가 MSB임.

최상위비트(MSB)를 *부호비트로 사용함.

  • 부호비트가 1이면 음수, 0이면 양수입니다
    • 양수(+) : 0
    • 음수(-) : -1
      ex) 0111,1111: 양수 127 ,
      1111,1111: 음수 -128

*부호비트 : 부호 있는 자료형의 첫 번째 비트 (0111,1111)

2️⃣ n의 보수 변환 방법

1의 보수로 변환하는 방법

  • 0 ➡️ 1, 1 ➡️ 0으로 변환
    ex) 00000011 → 1의 보수로 변환 : 11111100

2의 보수로 변환하는 방법

  • 1의 보수 + 1 = 2의 보수

<보수변환 예시>
00000011 → 2의 보수로 변환하려면
1의 보수 + 1
= 11111100 + 1
= 11111101

01101100 → 2의 보수로 변환하려면
1의 보수 + 1
= 10010011 + 1
= 10010100

56 → 10의 보수로 변환하려면
9의 보수 + 1
= 43 + 1
= 44

3️⃣ 2진수 ➡️ 10진수 변환 방법

"10101100을 10진수로 변환하기."

MSB를 이용한 방법
1. MSB가 1이므로 음수(-)이다.
2. 10진수로 변환한다.


보수를 이용한 방법
1. 10101100 → 2의 보수로 변환한다.
2. 2의 보수10진수로 변환한다.
3. -부호를 붙인다.

<보수로 10진법 변환 예시>
01010100
= 02^7 + 12^6 +02^5 + 12^4 + 02^3 + 12^2 + 02^1 + 02^0
= 0 + 64 + 0 + 16 + 0 + 4 + 0 + 0
=84
=-84


👩🏻‍💻 데이터 타입

1️⃣ 기본(primitive) 타입

🔍 기본(primitive)타입이란?

  • 정수 리터럴, 실수 리터럴, 문자 리터럴, 문자열 리터럴, 논리문자 리터럴을 직접 저장하는 타입임.
  • 메모리의 최소 기억단위인 bit8개가 모여 byte 1개를 형성함.
    • byte : 1byte에 데이터 값만 저장 가능함.(-128 ~ 127범위)


💡byte타입은 실무에서 거의 사용하지 않는다. ➡️ 크기가 너무 작기 때문에 이후에 수정해야할 가능성이 있다. 대부분 int 타입을 사용한다.

2️⃣ char(character) 타입

🔍 char type이란?

  • 문자형 리터럴''안에 문자를 관리하기 위한 타입임.
    ex) 'A', '1', '가' ...
  • 문자를 *유니코드(UNICODE)와 *아스키(ASCII)코드로 저장함.

*유니코드(UNICODE) : 세계각국의 문자를 2byte로 표현할 수 있는 숫자로 매핑한 국제 표준 규약
*아스키(ASCII)코드 : 영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 가장 기본적인 부호 체계 (American Standard Code for Information Interchange)


✍ char 실습

⌨️ coding ⤵️


package p02.datapython_basic;

public class CharEx {

	public static void main(String[] args) {
		char c1 ='A'; //문자
		char c2 = 65; // 정수값, 10진수
		char c3 = '\u0041'; // 정수값, 16진수 ,(u : unicode를 의미)
		
		char c4 ='가';
		char c5 =44032;
		char c6 ='\uac00';
		
		System.out.println("c1 =  " + c1);
		System.out.println("c2 =  " + c2);
		System.out.println("c3 =  " + c3);
		System.out.println("c4 =  " + c4);
		System.out.println("c5 =  " + c5);
		System.out.println("c6 =  " + c6);
		
	}

}

🖥 print ⤵️
[char출력 이미지]

3️⃣ 아스키(ASCII)코드

🔍 아스키(ASCII)코드란?

  • American Standard Code for Information Interchange
  • 영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 가장 기본적인 부호 체계
  • ASCII code는 영어만 코드화 가능 (UNICODE에 ASCII code 포함)


4️⃣유니코드(UNICODE)

🔍 유니코드(UNICODE)란?

  • 세계각국의 문자를 2byte로 표현할 수 있는 숫자(0 ~ 65535)로 매핑한 국제 표준 규약임.
    • 유니코드(UNICODE)의 한글코드 범위 : AC00-D7AF
    • 유니코드(UNICODE)에 아스키(ASCII)코드 포함됨.


✍️ (실습)

⌨️ coding ⤵️

//

🖥 print ⤵️
[출력 이미지]

profile
그냥 은근슬쩍 살다 가긴 싫어

0개의 댓글