데이터(Data)
컴퓨터 프로그램은 데이터와 명령어의 결합으로 구성된다.
출력문
데이터를 화면에 출력하는 방법은 아래와 같다.
System.out.print() : 괄호 안의 내용을 출력한다. (문자열로 인식)
System.out.println() : 괄호 안의 내용을 출력하고 행을 바꾼다. (문자열로 인식)
System.out.printf() : 문자열을 서식 문자를 이용해 형식화된 내용으로 출력한다
자주 사용하는 출력을 위한 서식 문자는 아래와 같다.
서식 문자 | 출력 형태 |
%d | 정수 (10진수) |
%o | 정수 (8진수) |
%x | 정수 (16진수) |
%f | 실수 |
%e | 지수 (e표기 기반) |
%g | 출력 대상에 따라 %e 또는 %f 형태로 출력 |
%s | 문자열 |
%c | 문자 |
변수(Variable)
변수란?
메모리에 값을 저장하기 위해 할당해 놓은 특정 공간을 변수라고 한다.
변수는 말 그대로 그 안에 담긴 수가 변한다고 하여 변수라고 부른다.
변수 선언하기
변수를 선언하려면 변수에 담을 데이터의 형태와 변수의 이름이 필요하다.
ex)
String(데이터의 형태) name(변수명);
변수 이름 정하기
변수명은 일반적으로 영어, 숫자, 특수문자를 사용하여 명명할 수 있다.
사용 용도를 명확하게 보여줄 수 있는 이름이라면 개발자 마음대로 지정할 수 있지만,
아래의 규칙을 따라야 한다.
▼규칙
제약 조건 | 예시 |
영어 대소문자 구분 | Name과 name은 서로 다른 변수 |
첫 글자는 숫자로 시작 불가, 일반적으로 영어 소문자로 시작 |
top10은 사용 가능 O 10top은 사용 불가 X |
특수문자는 '$', '_' 만 사용 가능 | $dallar는 사용 가능O #Sarp 는 사용 불가 X |
자바 예약어(키워드)는 사용 불가 | True는 사용할 수 있으나, true는 예약어라 사용 불가 |
▼예약어
분류 | 예약어 |
논리값 | ture, false |
접근 제한자 | public, protected, private |
클래스 관련 | class, abstract, interface, extends, implements, enum |
객체 관련 | new, instanceof, this, super, null |
기본 자료형 | boolean, byte, char, short, int, long, float, double, string |
메서드 관련 | void, return |
제어문 관련 | if, else, switch, case, default, for, do, while, break, continue |
예외 처리 관련 | try, catch, finally, throw, throws |
기타 | package, import, synchronized, final, static |
표기법의 종류
- 카멜 표기법 (camel case)
- 두 개 시앙의 단어를 조합하여 명명할 때, 두 번째 단어부터는 첫 글자 대문자료 표기하는 방법
- ex) userName, phoneNumber, ....
- 팟홀 표기법 (pothole case)
- 카멜표기법은 대문자를 통해 위로 올려서 구분했다면, 팟홀 표기법은 아래로 내려 표기하는 방법
- 아래로 내리는 방법은 underbar를 사용하고 모두 소문자로 표기한다.
- ex) user_name, phone_number
- 파스칼 표기법
- 단어의 첫 글자를 모두 대문자로 시작
- 헝가리언 표기법
- 변수명 앞에 자료형을 붙여 표기하는 방법
- 스네이크 표기법
- 모두 소문자로 작성하되 단어 간의 구분을 언더바(_)로 표기하는 방법
등이 있다.
변수에 데이터 입력하기
개발자가 데이터 값이 필요할 때 데이터의 값을 직접 사용하는 대신, 데이터를 변수에 저장해 두고 변수의 이름을 불러서 그 값을 사용할 수 있게 해준다.
예시.
package section02;
public class EX02_07 {
public static void main(String[] args) {
int studentAge; // 학생의 나이를 저장할 수 있는 변수 선언
studentAge = 20; // 변수에 값을 대입 (저장)
System.out.println(studentAge);
}
}
위 코드를 실행했을 때 결과는 20 이 나온다.
studentAge = 20; 처럼 변수를 선언하고 처음으로 값을 대입하는 것을 '초기화' 라고 한다.
변수 선언과 초기화를 한 줄로 코딩할 수 있다.
int studentAge = 20;
변수의 사용 범위
모든 변수는 선언되는 중괄호{} 안에서만 사용할 수 있다.
자료형 (Data Type)
자료형은 자바 언어가 처리할 수 있는 데이터의 종류를 의미한다.
모든 변수에는 자료형이 존재하며 자료형에 따라 저장할 수 있는 값의 형태와 크기가 정해진다.
- 기본 자료형 (primitive type) : 실제 데이터 값을 저장한다. 정수, 실수, 논리 타입으로 분류된 8개의 자료형이 있다. 각각 저장크기가 다르며 기본 값이 정해져 있다.
- 참조 자료형 (reference type) : 데이터가 저장되어 있는 메모리 번지를 저장한다. 기본 자료형을 제외한 나머지 사용자 정의 자료형을 말한다. 기본값이 정해져 있지 않기 때문에 null 값이 존재한다.
프로그램을 실행할 때 위 그림처럼 Stack과 Heap 공간으로 나뉘어 있다.
- 기본 자료형은 Stack이라는 공간에 자리를 할당받고 데이터를 저장한다.
- 참조 자료형은 Heap 공간에 데이터를 저장하고, 그 주소를 Stack에 저장한다.
자료형의 종류
자료형 | 분류 | 종류 |
기본 자료형 (Primitive type) |
정수형 | byte, short, int, long |
실수형 | float, double | |
문자형 | char | |
논리형 | boolean | |
참조 자료형 (reference type) |
배열형 | - |
열거형 | ||
클래스 | ||
인터페이스 |
형 변환
형 변환이란, 말 그대로 자료형을 다른 자료형으로 변환하는 것을 말한다.
모든 연산은 기본적으로 같은 자료형끼리만 수행할 수 있는데, 서로 다른 자료형의 연산을 수행하기 위해 같은 자료형으로 변환한다.
- 자동 형 변환 (묵시적 형 변환)
- 크기가 작은 자료형에서 큰 자료형으로 변환할 때
- 정수형이 실수형으로 변환될 때
위의 경우에는 자바의 컴파일러가 자동으로 형 변환을 해주기 때문에 생략할 수 있다.
- 강제 형 변환 (명시적 형 변환)
- 강제로 자료형을 변환하는 것을 말한다.
- 크기가 큰 자료형에서 작은 자료형으로 대입할 경우 변환할 수 있다.
[응용문제 풀기]
1번.
- 메모리에 값을 저장하기 위해 할당받아 사용하는 특정 공간을 변수 (이)라고 합니다.
- 변수를 선언하기 위해서는 자료형, 변수명 2가지 정보를 작성해야 합니다.
2번. 변수이름 가능한 것은?
답 : 4번 studentName
① 11a : 숫자로 시작하기 때문에 불가능
② +person+, ③name! : 특수문자는 $과 _만 사용가능함. 따라서 해당 이름은 불가능
3번. 컴파일 에러 발생하는 곳과 이유
7번 라인의 출력문이 메인함수의 중괄호 {} 범위를 벗어나 사용되고 있어서 발생한 에러이다.
해당 출력문을 String fruit = "Apple"; 아래쪽으로 옮겨 메인함수 안쪽으로 옮겨주면 된다.
4. 콘솔창에 출력되는 결과?
6번 라인 : 65
7번 라인 : B
--> 아스키코드를 확인해 보면 각 알파벳마다 정해진 숫자가 있다.
int 타입의 변수를 초기화하는 'A'라는 값은 65이고,
char 타입의 변수를 초기화하는 66이라는 값은 'B'이다
5. 컴파일 오류가 발생되지 않으려면?
3.1415 뒤에 f를 붙여 아래와 같이 작성한다
float pie = 3.1415f;
6.
(출력) 실행 결과 순서대로 7 / 7.0
int n1 = 7; 일 때 n1 출력
double n2 = __________ n1; 일때 빈칸을 채우고 n2 출력
- double 타입으로 변환할 수 있는 (double)을 입력하면 int → double로 형 변환 된다.
'JAVA > 멘토씨리즈_자바' 카테고리의 다른 글
[JAVA] 멘토씨리즈 자바_SECTION.06 (0) | 2024.07.17 |
---|---|
[JAVA] 멘토씨리즈 자바_SECTION.05 (0) | 2024.07.17 |
[JAVA] 멘토씨리즈 자바_SECTION.04 (2) | 2024.07.16 |
[JAVA] 멘토씨리즈 자바_SECTION.03 (2) | 2024.07.14 |
[JAVA] 멘토씨리즈 자바_SECTION.01 (1) | 2024.07.13 |