728x90
반응형
자료형과 변수
자바의 자료형은 크게 2종류
기본형은 소문자로 시작, 참조형은 대문자로 시작한다.
(1)기본형 자료형 (primitive) 프리미티브형
Data를 저장한다. 일반변수.
자료형 | 메모리 | ||
boolean | 논리값 T or F | 1 byte | 가장 작은 사이즈 |
byte | 정수형 | 1 byte | 용도 : 데이터 덩어리(이미지,오디오 등을 위해 ) |
char | 한문자 | 2 byte | 자바에서는 유니코드(2바이트씩) |
short | 정수형 | 2 byte | |
int | 정수형 | 4 byte | |
long | 정수형 | 8 byte | |
float | 실수형 | 4 byte | |
double | 실수형 | 8 byte |
- 양수로 0~127, 음수로 -1~-128까지 저장가능 2^8=256개
- 바이트는 이미지등 데이터 덩어리 때문에 만들어짐. 미디어용으로 ! int나 더블은 안 어울림
- 기본형은 포인터가 못된다. 포인터변수를 만들지 못함.
(2)참조형 자료형(Referance) 레퍼런스형
class로 만든 자료형
주소를 저장한다. 포인터 변수 - 주소를 저장하므로 모두다 8바이트이다.
자바에서는 포인터말고 레퍼런스라고 한다.
기본형이외는 다 포인터이다.Double, Float 등 기본형과 스펠이 같지만 대소문자로 구별해야한다.
new는 heap메모리에 쓴다는뜻이다.
String,Scanner,System,Ramdom, Double … 등 2천여개 (이 2천여개는 new와 쓴다)
객체는 변수와 함수를 같이 갖고있다.
※주의사항
public class Ex01Print {
public static void main(String[] args){
//변수를 만드는 문법 - 자료형 변수명;
int a=10;
//출력기능을 가진 객체에게 출력을 요청
System.out.println(a);
//c언어와 다른점! 값을 대입할때 주의점.
int b;
//자료형이 큰것을 작은변수에 대입불가능 b=3.14는 에러이다.
//반대로 작은변수는 큰것에 넣을수있다. 크기 순서를 참고하자!
//자료형별로 담을 수 있는 값의 크기가 제한된다. 메모리의 사이즈를 다르게 먹기때문에
byte c=127;// -128부터 ~127까지만 넣을수있다.
System.out.println(c);
//c=128; 에러! C에서는 에러가 나지 않는다. 범위를 넘어감 byte는 -128~127까지만 써야해
short d=32767; //양수 음수 합쳐서 65000개까지 각 32767개
System.out.println(d);
int e=2100000000; //인트는 양수/음수 각21억개까지 쓸수있다.
System.out.println(e);
long f; //양수와 음수 각 900경!
// f=2500000000; 대입이라는것 오른쪽에서 왼쪽으로 대입,
//25억은 하늘에서 떨어진게 아님 메모리에서 얻는다
// 메모리에서 상수로 불러옴 상수임! 4바이트가 25억을 담을수없으니까!
f=2500000000000L; //L은 대문자로 쓴다. 정수형 상수를 Long으로 만드는 L 키워드가 접미어로 있어야함.
System.out.println(f);
float g; //4바이트
//g=3.14; 실수형 상수는 기본적으로 double로 메모리에 불러온다.
g=3.14f; //실수형 상수를 float으로 만드는 f 키워드가 접미어로 있어야함.
System.out.println(g);
double h=2.74;
System.out.println(h);
char i='G';
System.out.println(i);
i=65;
System.out.println(i); //정수가 아니라 유니코드로 읽는다 A로 읽는다
boolean j=true;
System.out.println(j);
j=5<3;
System.out.println(j);
//작은 값은 큰 변수에 대입이 가능함. [자동 형변환]이 이뤄진다.
double k=10;
System.out.println(k);
//long m=3.14f; 더블은 롱보다 크다. 무조건 실수가 정수보다 큰 값이다.
//f를 붙인다고 해도 대입이 불가능!
//long+float 연산하면.. 정수를 실수에 대입!
//long을 float으로 변환한다 long(8바이트) float(4바이트) 실수 크기로 따지지마라
System.out.println(100L+3.14f); // 플롯으로 바뀜
//byte와 short은 별도의접미어 없이도 int형 상수값을 대입가능함.
byte n=10; //127까지만 된다.
short r=100;
//byte나 short변수끼리의 연산은 자동 int로 변환되어 계산된다.
short x=10;
short y=50;
short t;
//t=x+y; 에러!! 램에서 가져올때 연결선이 2바이트로 갖고오는걸 안좋아하느다 4바이트로 바꿔버림.
//System.out.println(t);
t=(short)(x+y);
System.out.println(t);
System.out.println();
System.out.println();
//변수의 반대 - 자바의 상수 총 2개의 종류
//1) literal 상수 - 값 자체를 의미 [10, 3.14, 'G', "aaa", true ]
//정수형상수, 실수형상수, 한문자상수(유니코드에서 2바이트 실제는4이다 한문자상수이므로) ,
//문자열상수 "aaa" 공간에서 6바이트이다 (끝문자는 c에서만) ,
//논리형상수(실제로1비트 나머지7비트는 유효공간) 1바이트
//2) final 상수 - 상수화된 변수
final int z=10; //파이널 상수라고함 [상수의 이름은 대문자로만 쓴다. snake표기법을 권장]
//z=20; 에러 - 상수는 값 변경이 불가해서! java는 쓰레기값을 넣지 않는다.
//허지만 그렇게 하지마. 처음부터 초기화 시켜!
final int USER_MAX=3; //상수는 언더바로 엮는 스네이크법
//상수는 ? 클래스는? 함수는?
//참조형에 대한 맛보기
String s; //자바에 존재하는 모든 메모리는 heap에 저장된다.
// new로 만든다 class person에서 person은 자료형이다.
s= new String("Hello");
System.out.println(s.toString()); //야 s야 너가 가르키는 s를 출력해
System.out.println(s); //원래 주소나와야하는데 워낙 자주쓰니까 투스트링으로 바뀜
s= new String("nicr");
s="android"; //자동 new String("android"); , 보기에는 그냥 문자열 넣은거같이 생김
System.out.println(s);
char u;
u='한'; //한글은 한글자이다. 유니코드에서는 한글이 인식된다.
}
}
728x90
반응형
'Java' 카테고리의 다른 글
Java_배열 (0) | 2023.01.26 |
---|---|
Java_String (2) | 2023.01.26 |
Java_키보드 입력 Scanner (0) | 2023.01.26 |
Java_화면 출력 객체 System.out (0) | 2023.01.24 |
Java의 시작 (0) | 2023.01.24 |