🚀 Programming/JAVA+Spring

JAVA 변수 기본 정리(데이터타입, 상수, 참조형 변수, 형변환)

jishushu 2022. 8. 29. 03:36
728x90
반응형

변수의 종류

변수=단 하나의 값을 저장할 수 있는 메모리 공간

1. 기본 자료형(Primitive) : 변수의 위치에 값이 저장
      예) 논리형(Boolean), 문자형(char), 정수형(short, byte, int, long), 실수형(float, double)

2. 참조형(Reference Type) : 참조하는 곳의 주소값을 가지고 있다=실제 값이 있는 위치의 주소가 저장.
      예) 클래스, 배열, 인터페이스, 열거형


1. 정수형 변수

byte b =10; //1바이트
short s =100; //2바이트
int i =1000; //4바이트
		  
		  //8바이트(ㅣ(소문자엘) 또는 L을 숫자 뒤에 붙입니다)
		  long l =10000L;
		  System.out.println("b=" + b); // b=10
		  //문자열+변수의 경우 문자열 내용이 출력되고 b의 값이 출력됩니다.
		  System.out.println("s=" +s); //s=100
		  System.out.println("i="+i + "l="+l); //i=1000l=10000
		  System.out.println(b+s+i+l); //더해짐 11110
		  System.out.println(""+b+s+i+l); //문자열에 이어서 연결 10100100010000
		 //정수형 변수 age에 자신의 나이를 저장합니다.
		  byte age =20;
		  //출력문)
		  //내 나이는 20입니다.
		  System.out.println("내 나이는"+" "+age + "입니다");
		  //일년이 지나 내 나이는 한 살이 증가했습니다.
		  age=(byte)(age+1); //age=byte, 1=int 그래서 강제 형변환(앞에 괄호하고 byte붙여주기)을 해준다. but 첨부터 age를 int로 했으면 편할일...
		  //출력문)
		  //내 나이는 21입니다.
		  System.out.println("내 나이는"+" "+age + "입니다"); //프로그램은 위에서부터 차례로 바뀜(87번줄은 여전히 20)
		  
		  //참조형 변수의 값을 출력해 봅시다
		  // 참조형 -s1,s2는 메모리 주소, new는 연산자,
		  //new String("자바"); 에서 String()은 생성자
		  String s1 = "자바"; //String은 JRE에 들어있는 클래스
		  String s2 =new String("자바"); //String은 라이브러리로 제공되는 클래스
		  System.out.println("s1="+s1+"s2="+s2); //s1=자바s2=자바
		  //주소같은지 비교 >> 다른주소
		  if (s1==s2) {
		   System.out.println("같은주소");
		  } else {
		   System.out.println("다른주소");
		  }
		  //내용값 같은지 비교 >> 같은 값
		  if (s1.contentEquals(s2)) {
		   System.out.println("같은 값");
		  }else {
		   System.out.println("다른 값");
		  }

2. 실수형 변수

		  //f나 F를 숫자뒤에 붙입니다.
		  float ft = 3.14f;
		  //d나 D를 숫자 뒤에 붙이거나 생략할 수 있습니다.
		  double d = 42.195d;
		  System.out.println("f="+ft+" "+"d="+d);
		  /*컴퓨터가 숫자밖에 모르기 때문에 문자가 숫자로 변환되어 저장되는데 어떤기준으로 저장? 문자에 해당하는 유니코드
		   * 'A' -> 65
		   * :문자를 코드로 변환하는 것을 문자 인코딩(encoding)이라고 합니다
		   * 65 -> 'A'
		   * : 코드를 문자로 변환하는 것을 디코딩(decoding)이라고 합니다.
		   */


3. 문자형 변수

		  //문자형 변수 - 하나의 문자를 나타낼 수 있는 자료형으로 16비트의 유니코드 사용
		  char c1 = 'A'; //2byte
		  char c2 = '@';
		  char c3 = '가';
		  System.out.println("c1="+c1+" c2="+c2+" c3="+c3); //c1=A c2=@ c3=가
		  //문자형에 정수를 배정하면 정수에 해당하는 유니코드를 찾아서 변수에 저장합니다.
		  char c4 =65; //영문 'A'를 의미
		  
		  //System.out.printf("%c", 65); 를 쳐도 영문 'A' 가 나온다. 왜냐하면 %c가 문자서식인데 뒤에 정수가 나왔기 때문에
		  //정수에 해당하는, 즉 65=A 가 저장됨.
		  
		  char c5 ='\uAC00'; //한글 유니코드 '가' 의미
		  System.out.println("c4="+c4+" c5="+c5);//c4=A c5=가
		  char c6 =0101; //0으로 시작하면 8진수를 의미
		  char c7 =0x41; //0x로 시작하면 16진수를 의미
		  char c8 =0b00001000001; //0b로 시작하면 2진수를 의미
		  
System.out.println("8진수 0101="+c6+"\n" + "16진수 0x41="+c7+"\n2진수 0b00001000001="+c8);
출력: 8진수 0101=A
16진수 0x41=A
2진수 0b00001000001=A

4. 논리형 변수

		  //논리형 변수
		  boolean b1 =true;
		  boolean b2 = false;
		  System.out.println("b1은 참인"+b1); //b1은 참인true
		  System.out.println("b2는 거짓인"+b2); //b2는 거짓인false

5. 상수: 같은 값을 한 번만 저장 할 수 있는 공간

-상수 만드는 법: 변수 타입 앞에 키워드 final 붙여주기만 하면 됩니다. 일반적으로 상수의 이름은 대문자로 사용

          final double PI =3.141592;
		  System.out.println(PI); //3.141592
		  PI=3.14; // 값을 변경하는 문장을 사용하면 에러가 발생

6. 형변환

		  //정수형 변수 i1에 10을 대입합니다.
		  int i1=10;
		  double d1=i1; //실수형 변수에 정수형 값을 저장할 수 있습니다.
		  System.out.println("d1데이타는"+d1+"입니다"); //d1데이타는10.0입니다
		  
		  //에러발생
		  double d2=10.12345;
		  //int i2=d2; //정수형 변수에 실수형 값을 저장할 수 없습니다.
		  int i2 = (int) d2;
		  System.out.println("i2데이타는"+i2+"입니다"); //i2데이타는10입니다
		  
		  //int -> char (명시적 변환)
		  int i3 =97;
		  char c11 = (char) i3;
		  System.out.println("i3데이타는 "+i3+"입니다"); //i3데이타는 97입니다
		  System.out.println("c11데이타는" +c11 +"입니다"); //c11데이타는a입니다
		  
		  i3=65;
		  c11= (char)i3;
		  System.out.println("i3데이타는"+i3+"입니다"); //i3데이타는65입니다
		  System.out.println("c11데이타는"+c11+"입니다"); //c11데이타는A입니다
		  //char -> int (자동형변환)
		  i3='A'; //유니코드 'A'에 해당하는 값을 정수형 변수 i3에 대입해라
		  System.out.println("i3데이타는"+i3+"입니다"); //i3데이타는65입니다
		  
		  i3='가'; //유니코드 '가'에 해당하는 값을 정수형 변수 i3에 대입하라
		  System.out.println("i3데이타는"+i3+"입니다"); //i3데이타는44032입니다
반응형