JAVA(Sol)(정리대기중..언젠가)

210414_2~4 (Data형, 작명법, 객체변수, 연산방향/순위, 형변환)

너굴셉 2021. 4. 14. 12:55

데이타형 data type : 미리 약속한 메모리 크기

 

1bit                                                           unsigned                          

8bit ==> 1 byte 2^8 ==> 256 ===> 0~ 255  X => -128~0 ~ 127

 

boolean 블리언  True/False  1byte
char  유니코드 문자 지원 2byte
byte  정수 1byte
short  정수 2byte
int  정수 4byte
long  정수 8byte
float  실수(소수점) 4byte
double  실수 8byte

할당 받은 메모리 영역보다 더 큰 데이타가 입력되면 안된다.


(무엇을 의미하는거였지..)

println ( "문자열" + var )

 

111 <== 10진수

011 <== 8진수

0x11 <== 16진수


지수 : 수가 너무길어서 표현 자릿수가 부족할때 사용한다.

 

      10E34 <- 0이 34개 붙어있다는 뜻의

데이타형 data type : 미리 약속한 메모리 크기

package chapter3;

public class ByteTest {
	/**
	 * byte는 8bit
	 * -128 ~ +127
	 */
	// 8가지 기본형 변수 : boolean char byte short int long float double

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		byte b = 127;
//		byte b1 = 128; ERROR
		byte b2 = -128;
//		byte b3 = -129 ERROR
				
		System.out.println(b);
		System.out.println(b2);

	}

}
package chapter3;

public class Silsu {

	public static void main(String[] args) {
		// 실수는 기본적으로 double로 인식됩니다.
	//	float f = 10.5;
		float f = 10.5f;
				System.out.println("실수출력:"+f);
		
		double d = 10.5;
		System.out.println("더블형 실수 출력: " + d);

	}

}
package chapter3;

public class Integer_Test {

	public static void main(String[] args) {
		System.out.println("정수형 상수 예제");
		System.out.println("10진수 26 10진수로:" +26);
		System.out.println("8진수 26 10진수로:"+-26); //숫자0은 8진수
		System.out.println("16진수 AB는 10진수로"+0xAB); // 0x 16진수

	}

}
package chapter3;

public class Float_Test {

	public static void main(String[] args) {
		System.out.println("실수형 상수 예제");
		System.out.println("양 실수 12.345:" + 12.345);
System.out.println("음 실수 - 12.345 :" + -12.345);

//12.34E3 == 12.34E+3 == 12.34 * 1000
System.out.println("지수 표현 12.34E:" + 12.34E3);

// 12.34E-3 == 12.34E-3 == 12.34 / 1000
System.out.println("지수표현 12.34E-3 : " + 12.34E-3);
	}

}

 


자바부수적 설명

 

미리 작명된 이름 : 예약어 if while for ... 즉 예약어는 변수로 사용불가

 

작명법 : 이름(클래스, 메서드, 변수 ...) 짓는법

   이름에 길이 제약이 없다. 가능하면 충분하게 의미 전달되도록 길게 이름을 짓는 경향이 있다. <=== 추상 개념

 -클래스 : 첫자는 대문자로 시작  HelloWorld (o) helloworld (X)

             마디마디 대문자, 아니면 _로 연결 (파스칼기법, 카멜기법)

 -메서드 : 첫자는 소문자로 시작 

              마디마디 대문자, 아니면 _로 연결 

 -변수명 : 이름에 길이 제약이 없다 / 숫자로 시작 불가 / 이름에 의미를 담는다 / 예약어 사용 불가

              특수문자는 _ $ 만 사용가능

 

데이터형 변수명 ;                     기본형으로 만든 변수

     int         a;

    char        n ; 문자

 

클래스 객체변수                       클래스로 만든 변수

String       str1 = "My name is";

 

"My name is"의 값은 정체가 뭘까요?

"My name is" <=== 문자열 상수

  1234 <====== 정수 상수

 

int a = 99; a (4byte 메모리영역) 에 99를 대입한다

 

 String srt1 = "My name is";

암기 : 객체변수는 크기가 언제나 4 Byte이다.

===>"My name is"를 str1에 직접 대입한것이 아니다

 

상수 영역에 "My name is"이 있는 곳의 주소(address)를 가공(hashcode화)해서 레퍼런스값(4byte 정수)으로 전환한 후 그 페러런스값(hashcode값)을 대입한 것이다.

 

 즉, 값을 직접 대입하는 것이 아니라, 레퍼런스값을 대입하여 간접적으로 값을 가리키게 된다.

package chapter3;

public class String_Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	 String srt1 = " My name is";
	 String srt2 = " 강남";
	 String srt3 = " 멋장이";
	 String srt4 = " 정말";
	 
	 System.out.println("문자열형 상수 예제");
	 System.out.println("--------------");
	 System.out.println(srt1 + srt2 + srt3 +srt4 +100 + 200);
	 
	 System.out.println(100+ 200 + "종로" + 100 + 200);
	}

}

 

System.out.println(100 + 200 +"종로" +100 + 200)  ->300종로100200

 문자열 뒤로 따라오는 정수는 문자열화되어있다.

System.out.println( 100+200 +"종로" +(100 + 200))  ->300종로300

 

연산방향

    a + b ---->

    c = k  <----

( ) <==최우선연산자

 

우선순위

 연산(+)>대입(=)

 

package chapter3;

public class Variable_Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i = 1234;
		int j = 5678;
		int hap = 0;
		
		hap = i + j;
		
//		200 = i + j;
		
		System.out.println("변수를 이용한 예제");
		System.out.println("i = " + i);
		System.out.println("j =" + j);
		System.out.println("hap = :" + hap);
		
		i= i+j;
		System.out.println("i = i +j =>" + i);

	}

}

 


형변환

 

큰변수 <====== 작은값 // 오토캐스팅

작은변수 <===== 큰값 //ERROR 

 억지로 담으려면 형변환이 필요하다 -> 캐스팅(casting)한다.

  이때는 ( ) 가 형변환 연산자

        변수 = (형) 값

주의 : 캐스팅하여 값이 손실이 일어나면 캐스팅하여 사용하면 안된다.

package chapter3;

public class Cast_Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int i = 1234; // 4Byte 정수
		int k; // 4Byte 정수
		float f = 10.5f; // 4Byte 실수 , 정수
		double d = 100.55; // 8Byte 실수, 정수

		// k= f; // k는 정수만 저장함으로 ERROR
		k = (int) f; // 작은타입 = (작은타입)큰타입
		System.out.println(k); // 정수화되서 0.5가 잘림=10

		f = i; // 실수형 = 정수형 f = 1234 / int는 float에 담길수있다
		System.out.println(f); // 1234.0

		f = (float) d; // double이 더 큰타입
		System.out.println(f); // 100.55
	}

}