1.1 변수란?
단 하나의 값을 저장할 수 있는 메모리상의 공간.
1.2 변수의 선언
변수를 사용하기 위해 먼저 변수를 선언. 변수가 선언되면 메모리에 변수의 타입에 알맞은 크기의 저장공간이 확보되어 값을 저장할 준비가 되는 것.
변수 선언시 변수의 타입과 이름을 함께 써주어야 한다.
*변수의 초기화
변수를 선언한 후 부터는 변수를 사용할 수 있고, 변수를 사용하기에 앞서 적절한 값을 저장해주는 것
int number; //정수형 변수 number를 선언한다.
//정수형 변수 number를 선언하고 변수의 값을 10으로 초기화 한다.
int number = 10;
// 위 문장은 아래의 두 문장과 동일.
int number; //정수형 변수 number를 선언.
number = 10; //변수 number에 10을 저장.
서로 같은 의미의 다른코드.
int a;
int b;
int a, b;
int x=0;
int y=0;
int x=0, y=0;
1.3 명명규칙 naming convention
1) 대소문자가 구분되며 길이에 제한이 없다.
*True 와 true는 서로 다른 것으로 간주
2) 예약어를 사용하면 안된다.
*true는 예약어라 사용할 수 없지만 True는 가능.
3) 숫자로 시작해서는 안된다.
-Top10은 가능하나, 7up은 불가능.
4)특수문자는 '_'와 '$'만을 허용.
*$harp는 허용되지만 S#arp은 불가능.
그 외의 명명규칙
1) 클래스 이름의 첫 글자는 항상 대문자.
*변수와 메서드의 이름의 첫 글자는 항상 소문자로 함.
2) 여러 단어로 이루어진 이름은 단어의 첫글자를 대문자로.
*lastIndexOf, StringBuffer ...
3) 상수의 이름은 모두 대문자. 여러 단어로 이루어진 경우 '_'로 구분.
* PI, MAX_NUMBER
2. 변수의 타입
기본형과 참조형 2가지,
기본형 Primitive Type : 계산을 위한 실제 값(data)를 저장
- boolean, char, byte, short, int , long, float, double
참조형 Reference type: 8개의 기본형을 제외한 나머지 타입, 어떤 값이 저장되어 있는 주소를 값으로 갖는다.
참조형 변수를 선언할 때는 변수의 타입으로 클래스의 이름을 사용하므로, 클래스의 이름이 변수의 타입이 된다.
= 새로운 클래스를 작성한 다는 것은 새로운 참조형을 추가하는 셈이다.
클래스이름 변수명; // 타입이 클래스이름인 것들은 모두 참조변수이다.
Date today; //Date클래스 타입의 참조변수 today를 선언한 것.
참조변수는 null 또는 객체의 주소를 값으로 갖으며 참조변수의 초기화는 다음과 같이 함.
Date today = null;
Date today = new Date();
객체를 생성하는 연산자 new의 연산결과는 생성된 객체의 주소이다.
이 주소가 대입연산자 '='에 의해서 참조변수 today에 저장되는 것.
참조변수 today를 통해서 생성된 객체를 사용할 수 있게 된다.
2.1 기본형 Primitive type
논리형 : true와 false 중 하나를 값으로 갖으며 , 조건식과 논리적 계산에 사용.
문자형 : 문자를 저장하는데 사용, 변수 당 하나의 문자만을 저장.
정수형 : 정수 값을 저장하는 데 사용. int / long /byte / short
실수형 : 실수 값을 저장하는데 사용 . float / double
논리형을 제외한 나머지 7개의 타입은 서로 변환이 가능. 연산도 가능.
- 기본형 타입의 크기
1) boolean : true와 false 두 가지 값만 표현 가능하므로 가장 작은 크기인 1 byte.
2) char: 자바에서 유니코드(2byte 문자체계)를 사용하므로, 2 byte.
3) byte : 크기가 1byte라서 byte.
4) int (4 byte)를 기준으로 짧아서 short (2 byte), 길어서 long (8 byte)
5) float는 실수값을 부동소수점 방식으로 저장하므로 float
6) double 은 float보다 2 배의 크기 (8 byte)와 두 배의 정밀도를 갖는다.
2.1.1 논리형 boolean
true와 false만 갖고. 기본값 default은 false.
2.1.2 문자형 char
16진수로 0000부터 ffff까지, 문자를 표현하는ㄷ 65536(2^16)개의 코드를 사용할 수 있다.
char firstLetter = 'A';
char firstLetter= '|u0041';
char형 변수firstLeter를 선언하고, 문자 'A'를 저장. 문자를 저장할 때는 작은 따옴표로 문자를 둘렀나다.
두 번째는 문자의 코드를 이용해 문자형 변수에 값을 저장.
- 특수문자를 표현하는 방법
- tab : \t
- backspace : \b
- form feed : \f
- new line : \n
- carriage return : \r
- 역슬래쉬 : \\
- 작은따옴표 : \'
- 큰따옴표 : \"
- 유니코드(16진수)문자 : \u유니코드
char형 변수는 단 하나의 문자 밖에 저장할 수 없기 때문에 여러 문자를 저장하기 위해서는 String 클래스를 사용.
자바에서는 덧셈 연산자를 이용하여 문자열을 결합 가능.
덧셈연산은 왼쪽에서 오른쪽 방향으로 연산을 수행하기 때문에 결합순서에 따라 결과가 달라짐.
int와 같은 기본형 타입의 값을 문자열로 변환할 때는 아무런 내용도 없는 빈 문자열("")을 더해주면 된다.
기본형과 참조형의 구분없이 어떤 타입의 변수도 문자열의 덧셈연산을 수행하면 그 결과는 문자열이 된다.
anytype + 문자열 -> 문자열 + 문자열 -> 문자열
문자열 + anytype -> 문자열 + 문자열 -> 문자열
2.1.3 정수형 - byte, short, int, long
정수형의 변수의 선언과 초기화는 아래와 같다.
byte b = 1;
short s = 2;
int finger = 10;
long big = 1000000000000L; //long타입의 리터럴에는 접미사 L을 붙여야 한다.
10진수 이외에도 16진수 , 8진수로 표현된 정수를 변수에 저장할 수 있다.
int octNumber = 010; //8진수의 경우 접두사에 '0'을 붙인다. 8진수 10, 10진수로는 8
int hexNumber = 0x10; //16진수 접두사 '0x' 또는 '0X'를 붙인다. 16진수 10, 10진수로는 16
변수의 범위를 넘는 값으로 초기화 되는 것은 허용하지 않는다.
byte b = 128; //컴파일 에러 발생. byte의 범위 밖의 값으로 초기화 할 수 없다.
2.1.4 실수형 -float, double
실수는 정수와 달리 부동소수점 방식으로 저장.
a는 가수(mentissa), 0<=a<1범위
n은 지수(exponent)
예를 들어, 실수 3.1415를 부동소수점 방식으로 표현하면 0.31415x10^1이며 가수는 0.31415, 지수는 1이된다.
float과 double 중 어느 자료형을 사용할 것인 가를 결정하는데 있어서 값의 범위만이 아닌 정밀도도 중요한 요소가 된다.
보다 높은 정밀도를 요구하는 계산에서는 double을 사용.
float형 리터럴에는 접미사 f가 사용되고, double형 리터럴에는 d가 사용된다.
정수형에서는 int가 기본 자료형인것처럼, 실수형에서는 double이 기본 자료형.
접미사를 생략하면 double형 리터럴로 간주됨.
3.1 형변환Casting이란
모든 연산은 기본적으로 같은 타입의 피연산자 간에만 수행.
서로 다른 타입의 피연산자간의 연산을 수행해야 하는 경우, 연산을 수행하기 전에 형변환을 통해 같은 타입으로 변환해주어야 한다.
변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것.
3.2 형변환 방법
기본형은 기본형으로만, 참조형은 참조형으로만 형변환이 가능.
형변환 하고자 하는 변수나 리터럴 앞에 변환하고자 하는 타입을 괄호와 함께 붙여주기만 하면 된다.
여기에 사용되는 괄호는 '캐스트 연산자' '형변환 연산자'라고 하며 형변환을 캐스팅casting이라고 한다.
3.3 기본형의 형변환
boolean을 제외한 나머지 7개의 기본형 간에는 서로 형변환이 가능함.
원칙적으로 모든 형변환에 캐스트 연산자를 이용한 형변환이 이루어져야 함.
값의 표현범위가 작은 자료형에서 큰 자료형의 변환은 값의 손실이 없으므로 캐스트 연산자를 생략하는 것을 허용함.
값의 표현범위가 큰 자료형에서 작은 자료형으로서의 형변환에 캐스트 연산자를 사용하지 않으면 컴파일시 에러가 발생.
'P-Language > JAVA' 카테고리의 다른 글
배열 Array (0) | 2020.05.25 |
---|---|
조건문 / 반복문 (0) | 2020.05.22 |
Operator (0) | 2020.05.14 |