□ 변수(variable)
* 프로그래밍 언어
- 프로그래밍이란 컴퓨터와 개발자 혹은 사용자 사이의 커뮤니케이션입니다.
- 컴퓨터와 커뮤니케이션을 하는 언어를 프로그래밍 언어라 합니다.
- 저급 언어 -> 고급 언어
- 저급일수록 컴퓨터의 세밀한 처리가 가능. C언어, Java는 고급언어에 속합니다.
* 프로그래밍의 첫 단계
- 프로그램으로 다루려는 정확한 데이터를 구분해주는 작업이 필요합니다.
- 내가 인식하는 데이터를 컴퓨터는 인식하지 못합니다.
- 그래서 변수가 필요!
* 컴퓨터와 데이터
- 컴퓨터가 인간이 이해하는 데이터 자체를 이해하지 못하므로 별도의 언어를 통해 지시합니다.
- 컴퓨터 상의 모든 데이터가 처리되기 위해서는 메모리를 사용합니다.
- 메모리 상에 얼마의 크기에 어떤 데이터를 담는지를 표시하는 작업이 필요합니다.
* 변수? 상수?
- 아직 결정되지 않거나 나중에 변경될 것 같은 데이터는 변수로 선언
- 고정된 불변의 값은 항상 값은 값을 유지한다는 의미에서 상수라고 표현
- 변수로 해 두면 나중에 재사용이 가능
* 무엇을 변수로 정하는가?
- 동일한 데이터가 여러 번 나오면 변수나 상수로 선언
- 프로그램이 실행되면서 결정되는 데이터는 변수로 선언
- 외부에서 "사용자가 입력하는 데이터들"은 변수로 생각
* Strong Typed : 어떤 데이터를 변수로 사용할 때 엄격하게 타입을 구분해 주어야 하는 언어, C, C++, Java
* Weak Typed : 변수의 타입 선언 시에 간단하거나 아예 없는 방식의 언어, JavaScript, Python, Ruby
* 변수선언, 초기화...
- 변수의 선언 : 컴퓨터 상에 공간만 만드는 것. 변수의 선언만으로는 어떤 일이 일어나지는 않습니다.
- 변수의 선언 및 초기화(assign연산자 '=') : 공간을 만들고 데이터도 채우는 것
- 변수의 타입 + 변수의 이름(변수명) => 변수선언!, 변수선언은 최초에만 1번 하면 됩니다.
- 변수타입 : 메모리 공간의 크기, 어떤 종류의 데이터를 다룰지 결정
- 변수이름 : 호출을 위한 이름
* 컴퓨터에 변수를 선언한다는 것
- 컴퓨터 상에 보관해줄 데이터를 태그와 함께 표시
- "int v1 = 100;"
- 필요한것 : 선언할 데이터의 종류, 데이터 값, 태그와의 연결 =
* 변수의 assign
- "int v1 = 100;", "int v2=v1;"
- 100 데이터 생성 -> v1 변수 생성 -> v1에 assign / v1 변수 loading -> v2 변수 생성 -> v2에 assign
※ 상자 개념으로 꺼내고 담는다로 이해해봅시다.
* 만약 데이터가 매우매우 크다면? -> 포인터 개념
- 메모리 공간을 아끼고 좀 더 빠르게 변수 개념을 사용할 수 있습니다.
* 데이터의 크기와 종류
- 숫자(정수)를 나타낼 때에는 int (4byte)
- 문자를 나타낼 때에는 String (대문자 유의)
- 숫자(소수)를 나타낼 때에는 double
- 참, 거짓을 나타낼 때에는 boolean
※ C언어의 포인터는 java에선 레퍼런스(참조)
□ 변수 문제 실습
* 예제
- 키보드에서 사용자가 입력하는 두 값을 더하는 프로그램을 만들어봅니다.
- 태어난 년도를 입력하면 자동으로 나이가 계산되는 프로그램을 만들어봅니다.
* 변수 선언 가이드
- 로직을 짜기 전에 변수를 검토합니다.
- 변수명은 심각하게 고민해서 선언합니다.
* 입력 받는 변수는 일단 처리
- 프로그램에서 입력 받아서 실행되어야 할 때 일단 입력을 받지 말고, 변수를 선언해 두고 처리합시다.
* 더하기 프로그램 작성 요령
- 입력 받을 숫자를 미리 변수로 선언
- 결과가 나온 후에 모르는 것을 찾습니다.
- 사용자가 입력하는 부분은 무조건 변수로!
=== 코드 ===
import java.util.Scanner;
public class AddTest {
public static void main(String[] args) {
//키보드에서 입력 받는 방법
Scanner keyboard = new Scanner(System.in);
System.out.println("enter an integer");
//숫자 두개
int input_1=keyboard.nextInt();
int input_2=keyboard.nextInt();
//변수와 변수의 계산
int result=input_1+input_2;
System.out.println("결과는 "+result);
}
}
==========
* 간단한 연산작업
- 몇 년 생인지 입력하면 나이를 계산해서 출력
* 작업 내용
- 키보드 입력 받기
Scanner keyboard = new Scanner(System.in);
System.out.println("enter an integer");
=== 코드 ===
import java.util.Calendar;
import java.util.Scanner;
public class Show {
public static void main(String[] args) {
//키보드에서 입력받기
Scanner keyboard = new Scanner(System.in);
System.out.println("Your birth year?");
//입력 : 사용자의 생년을 입력 받는다. 변수명:birthYear
int birthYear = keyboard.nextInt();
//현재의 년도를 알아야 한다. currentYear
int currentYear = Calendar.getInstance().get(Calendar.YEAR);
//나이 age = currentYear - birthYear + 1
int age = currentYear - birthYear + 1;
System.out.println("당신의 나이는 " + age +"살입니다.");
}
}
==========
□ 캐스팅
* 캐스팅(casting)
- Down casting
- int는 4byte 크기, byte는 1byte 크기
- 형변환 : 큰 상자의 내용물을 작은 상자에 넣는 작업
int intValue = 128;
byte value = (byte) intValue;
System.out.println(value);
=> 결과 : "-128"
- 반대의 경우 : 작은 상자의 내용물을 큰 상자에 넣으면?
byte value = 13;
int intValue = value;
System.out.println(intValue);
=> 결과 : 아무 문제 없이 "13" 출력
- 형변환 : 타입 자체를 바꾸는 경우
byte value = 65;
char ch = (char) value;
System.out.println(ch);
=> 결과 : "A"
(65라는 숫자는 아스키코드 상에서 A와 매칭됨)
- byte(8bit) 대신 int(32bit)를 쓰는 이유는 CPU와 관련이 있습니다.
- CPU가 처리하는 데이터 단위는 32bit 혹은 64bit를 쓰기 때문에 int를 쓰는 것이 더 효율적입니다.
'학습 > IT' 카테고리의 다른 글
[IT] Java기초(6) - 함수(Function), 주사위 함수 정의하기 (0) | 2021.11.23 |
---|---|
[IT] Java기초(5) - 연산자 제어문, 반복문 실습 (0) | 2021.11.19 |
[IT] Java기초(2) - Eclipse에서 Hello, World 코드 실행해보기 (0) | 2021.11.03 |
[IT] Java기초(1) - 자바란 무엇인가? 공부계획 세우기 (0) | 2021.10.31 |
[IT] C언어 입문(14, 끝) C 전처리기(C preprocessor), 함수 포인터(function pointer) (0) | 2021.09.18 |
댓글