반응형
*java SE
-Eidtplus툴
1.기본형 데이터형
2.자동형변환/강제 형변환
3.Constant(상수)
4.연산자
-Editplus
-
한달체험판으로 설치후 사용한다.
-
범용에디터라 compiler와 run 명령설정뒤에 작업함
*DataType
-
값을 저장하기위해 미리 예약해 놓은 공간의 이름들
-
변수를 선언할때 사용함다.
-
기본형 데이터형, 참조형 데이터형 2가지가있다.
-
=>저장공간에 값자체를 저장=>변수에 값 자체를 저장하는 데이터형
-
=>저장공간에 주소를 저장해 참조/있다는걸 알지만 내용은 모른다.=>주소를 저장하는 데이터형
-기본형 데이터형(Primitive type)
-
변수에 값이 저장되는 데이터형
-
ex) int i=10; 일때 4개의 byte가 있고 값이 들어간다.
-
뭐를 저장할 것이냐에 따라서 다른 데이터형을 선택하게 된다.
-
signed 한값 : 수의 범위가 음~양 => char,boolean 외의 것들
-
unsigned 한값 : 수의 범위가 '양수'만 => char,boolean
-
실수는 float일때, 소숫점 이하 6자리 까지만 정확하고 그뒤는 엉뚱한 값이 나올수 있고,
-
double일때, 14자리 까지 정확해서 범위가 이렇게 설정 되었다.
-형명시(literal크기변경)
-
long일때)
-
long 자체는 30억의 숫자를 저장할수 있으나, 값이 메모리에 저장되며, 그 저장공간의 크기가 한정( 정수일때 : 4byte / 실수일때 ; 8byte => 정수는 int/ 실수는 double까지 인것 )되어 그공간인 리터널의 크기를 늘려 주어야 한다.
-
이걸 '형명시'라고 하는데, 형명시의 대상은 상수이고, 변수의 뒤에는 불가능하다.
-
상수뒤에 L,l을 붙이면 이 라인, 이 줄에 한해서만 일시적으로 바꾸어 주는것이다.
-
float일때)
-
마찬가지로 float일때 4byte이고 실수일때의 리터널의 byte는 8byte 라서 들어가지 않는다. 이번엔 줄여주어야 하며
-
상수뒤에 F,f를 붙인다.
값 종류 |
데이터형 명 |
크기(byte) |
범위 |
사용 예 |
정수 |
byte |
1 |
-128 ~ +127 |
byte b = 12;
//=128넣으려면 안들어간다. Error 그래서 범위가 있는것 |
short |
2 |
-32768 ~ +32767 |
short s = 12; | |
int |
4 |
-2147483648 ~ +2147483647 |
int i = 12; | |
long |
8 |
-2^63 ~ 2^63-1 |
long l = 12;
long l = 3000000000l; | |
문자 |
char
(읽을땐 character) |
2 |
범위X
홀따옴표로 감싸진 영문자 1자, 숫자 1자, 한글 1자 저장
문자의 코드(code)값이 저장
2byte의 unicode값이 들어간다. |
char c='A';
이면 변수c에 A가 들어가는게 아니라 65가 들어간다.
char c = '0';
97이 들어간다.
--유니코드값이 들어간다. 영어,숫자에 대한 시작코드값은 알아야한다.
A=65, B=66,,,
a=97, b=98,,,
0=48, 1=49,,, |
실수 |
float |
4 |
유효연산 6자리 |
float f = 0.5;
일때 리터널이 크기 때문에 (8byte라서) 들어가지않는다.
float f = 0.5f;
해야 리터널이 줄어들어 값이 저장된다. |
double |
8 |
유효연산 14자리 |
double d = 3.25;
double d = 3.25[d];
리터널 붙여줄수 있지만 굳이 붙여주지않는다.
같은크기거나 작거나 생략. | |
불린 |
boolean |
1 |
범위X
but, 따지고 보면 0,1
true, false 저장 |
boolean b = ture;
boolean b = false;
<c언어처럼 0,1은 넣을수 없다. |
-자동형변환
-
byte b = 10; short s= 10;
-
일때 1이고 리터널은 4고, 2이고 리터널은 4라 안들어가야 정상인데 이때 자바가 해주는것을 자동형변환이라고 한다.
-
인지만 하고 있으면 되고 자바자체에 설정되어있어 막을수 없다.
-
int의 하위 데이터형 (byte수가 4보다 작은 애들-byte, short, char)이 연산 되면 결과가 int 로 발생되는것 또는
-
int의 하위 데이터형에 값이 할당되면 값이 하위데이터형의 크기에 맞게 변환되는것 을 칭하는 말이다.
-
인트의 하위데이터형이 연산시에 인트만큼 큰값이 나올 확률이 자기가담을 값보다 큰값이 많이 발생하더라 그래서 아예결과를 int로 할당하게 된다.
-
따라서 byte+byte일때 결과값을 int로 받지 않으면 Error
-
ex)
byte b1 = 10, b2 = 20, result = 0; //char c = 65; 2고 4byte
//result = b1 + b2; //이것도 자동형변환 byte나 short까지 형변환이 필요하다면 너무불편해 자동으로 되게끔 만들어져있다
//결과값이 byte가 아니라 int로 발생되어 할당되지 않는다. result를 int로
int result = b1 + b2;
short c1 = 20;
int result2 = b1+c1; //연산이 된다. 하지만 int 로 담아야한다.
//byte를 2byte로 연산=> 큰쪽으로 바꾸여 연산해줌=>연산이라 int에 담음
-강제형변환(Casting)
-
자바가상머신(JVM)이 실행할때 메모리를 바꾸어 주는데,
-
이때, 개발자가 변수의 데이터형을 원하는형으로 (일시적) 변환하는 것.
-
주 대상은 변수인데 변수앞, 상수앞에서 쓸수있다.
-
기본형->기본형, 참조형->상속관계에 있는 다른 참조형으로 변환가능하다. <기본형이 참조형이 될수 없다.
-
불린은 boolean의 동일데이터형으로만 강제형변환 가능 (안된다고 보면된다 다른데이터형 ㄴㄴ)
-
특징) 때에 따라서 값손실이 발생할 수 있다.
-
문법) 변수 : double d = 3.14;
-
float f = dL; =>byte수가 달라 들어가지 않는다 / L을 적어도 dL이라는 변수를 찾으려고 한다.
-
(변환할 데이터형) 변수명 float f = (float)d; <잘려서 들어가게 된다.
-
float f= 3.5; int i = (int)f; <int 가 실수형을 받아들이지않아 3만 들어가게 된다=값손실
-
상수 : <리터널자체가 바뀌진 않는다/내가 필요한 데이터형으로 바꾸어준다.
-
(변환할 데이터형)상수값
-
float f= 3.1415; <casting으로 (float)를 상수앞에 붙여주게 되면 4byte가 되어 저장된다.
*Constant(상수)
-
변수를 상수처럼 사용하기 (값할당이 되지 않는 변수)
-
프로그램내에서 사용하게될 기준값을 설정할 때 사용.
-
중간에 값변경을 못하게 한다 할때 constant API의 field항목에서 확인 가능.
-
class의 field부분(method바깥쪽)에서만 정의 가능 <지역 (method안쪽) 에서는 constant를 만들수 없다.
-
최초 선언시에만 값 할당이 가능하다. (중간에 값 넣을수 없다)
-
변수는 소문자로쓰는게 원칙인것에 비해 상수는 대문자로 많이 적는다. 변수와 상수의 식별을 위해
-
constant명은 모두 대문자로 작성_두단어가 붙는다면 언더바(_)로 식별
-
문법) public static final 데이터형 상수명(모두대문자) = 값; <필드부분에다가..!
-
class Test{
-
public static final int MAX=100;
-
public static void main(String[] args){
-
//상수사용
-
MAX
-
Test.MAX
-
<우리가 만들었던 지역변수는 메인메소드 안에서만 쓸수 있지만 상수로 선언된경우 어디에서나 사용가능하다.
-
-
사용) 정의한 클래스 안 사용 : 상수명 , 클래스명.상수명
-
다른클래스에 있는 상수 사용 : 클래스명.상수명
-
클래스명.상수명 <이때 닷문법 (점문법) 그 안을 이야기한다. 내안에 너있닼ㅋㅋㅋ내.넠ㅋㅋㅋㅋ
-접근지정자
-
public static final int MAX=100;
-
public : 외부패키지에서 사용가능해요 라는것
-
static : 모든 메모리 영역에서 사용가능해요 라는것
-
<자바에는 인스턴스영역에 올라가는 heap이 있고 stack, method area가 있는데 어디든지 다 접근가능해요 라는것
-
final : 값변경 불가해요
-
요앞에 이런것들이 없으면 지역변수만드는것과 똑같다
-wraper class
-
기본 데이터형과 같은 클래스명들을 래퍼클래스라고 하는데 기본형을 감싸 객체로 만드는 클래스이다.
-
constant(상수)가 있는게 있고 없는게 있어서 API페이지의 Field부분을 잘 보아야한다.
*연산자(Operator)
-
연산에 사용되는 예약된 부호들
-
우선순위를 갖고 있다.
-
연산자의 우선순위
논
최단산쉬관리 삼대 콤마
우 항술프계 항입 지
선 트 막
()괄호이다
<---------------먼저연산
--------------->나중연산
<자바도 자바스크립트도 C도 동일
반응형