Java/Basic

[Java] 초보 가이드 -4

Jeong Jeon
반응형

기본타입 이어서~!01/28 데이터 참조!!!

Wrapper Class

 => char -> Character로 변경된다. Boxing

 => char('2') -> Character[]

 

17). 기본타입의 형변환

  • 형태의 형변환 / 크기의 형변환

  • Promotion, Casting

  • (type) : 캐스팅 연산자

 

Promotion : 1byte -> 4byte : 작은 타입에서 큰타입으로 변경

ex). byte b =10;

int c =b; // 그냥 사용

Casting : 4byte -> 1byte : 큰타입에서 작은타입으로 변경

ex). int c =100;

byte e = (byte)c; //형변환 필요

 

ex). TypeProcess Class 참조

값을 리터럴 입력하느냐 아니면 변수에 담겨있는 값을 입력하느냐 차이를 알아보자

//byte b = 128; //크기가 정수 127까지만 입력받을수 있기 때문에 오류

byte b1 = 120;

byte b2 = 100;

byte bSum = (byte)(b1+b2); //연산의 결과가 int 이기 때문에 발생하는 코드오류

System.out.println(bSum); // 예상 결과는?

//정수의 연산을 담는 변수의 타입이 실수라도 결과를 담는 것

float f1 = 10/3; //예상결과는 3 -> float 에 담기면서 3.0

System.out.println(f1);

int i =10;

float f = i;// 형태가 변화했지만 Casting 하지 않았다.

System.out.println(f);

double d = f; //크기에 대한 형변환 / 큰거->작은  Promotion

System.out.println(d);

//실수의 기본 리터럴 크기는 double이다. 따라서 0.0f로 작성하여 리터럴의 크기가 float의 리터럴 임을 지칭해야한다.

float ff = 0.0f;

//크기 형변환 double->float

float floatCasting = (float)d;

//실수의 연산

//연산자를 제외하고 하나의 실수 타입을 가지고 있는 리터럴이 있다면 실수 연산이 발생된다.

int ic = 10; //10

float fc = 20; //20.0

//문제 : Casting연산자를 안붙인게 정수가 Promotion이 발생해서 입력된건가? 오답~~!

//아니면 타입이 실수인 변수가 있기 때문일까? : 정답~~~!

//int intCal = fc/ic;

float floatCal = fc/ic;

double dd = 1/2; //연산의 결과가 실수이기 때문에 결과는 자동으로 Promotion이 발생하여 double로 변경됨

//double dCal = 1.0/2.0; //둘다 실수로 표시되거나 둘중 하나라도 실수로 표기되면 가능

//double dCal = 1.0/2;

//float dCal = 1.0/2; // 리터럴이 실수(double)이라면 결과는 실수 연산의 결과인 double로 나온다.그래서 오류가 뜸(기준은 double이니)

//double dCal = 1/2.0;

//double dCal = (float)1/2;

//double dCal = 1/(double)2;

//double dCal = (double)1/2;



float fg1 = 1.6f;

float fg2 = 0.8f;

float fCal = fg1/fg2;

double dg1 = 1.6;

double dg2 = 0.8;

// float dgCal = dg1/dg2;  //변수의 크기가 double

double dgCal2 = dg1/dg2;

//실수의 연산은 큰 크기의 타입의 결과가 나온다.

double tg1 = 1.6;

float tg2 = 0.8f;

// float tgCal1 = tg1/tg2;

double tgCal2 = tg1/tg2;

//----------------------------------------------------

byte bLimit = (byte)128; // 결과값 : -128



[Type의 크기 확인]

public static void type크기() {

//기본 타입은 같은 값을 저장할 수 있는 공간을 제공 1:1로 대응한다(boxing unboxing)

System.out.println(Byte.MAX_VALUE+":"+ Byte.MIN_VALUE);

System.out.println(Long.MAX_VALUE+":"+ Long.MIN_VALUE);

System.out.println(Double.MAX_VALUE+":"+ Double.MIN_VALUE);

 

18).형변환 예시문제

ex).Example+Type

Boxing unboxing

 

19).String 1탄

  • 객체

  • new를 하지 않아도 객체가 됨, 하지만 new를 한 객체와 그냥 선언한 객체는 다르다.

  • 특징은 참조타입이지만 성질은 기본타입이다.

  • ""로 생성하며 문자열의 값은 문자형이 조합되어있는 형태

  • String과 연산(+)을 처리하면 모두 보이는 그대로 문자열로 변경이된다. = String concatenate

** 많이 사용하는 메소드

  • String.valueOf(); //입력된 아규먼트 값을 문자열로 변경한다.

=3.14+""; ->"3.14" 많이 쓰면 메모리가 많이 차지한다.

=String.valueOf(3.14); -> "3.14"

 

출력 (Print)

  • System.out.print(); : 출력을 하고 가로로 이어진다.(argument가 필수다)

  • System.out.println(); : 출력하고 한줄 내림 (argument 필수아니다.)

  • System.out.printf(); : 출력시 binding을 통한 문자열 생성

=> ex). %s : 문자열 , %d : 숫자 , %f : 실수 , %n : 한줄 내림

System.out.printf("문자 %s, 숫자 %d, 실수 %f","한글",1,3.14);

 

20). Escape 문자

  • 문법에 의해서 Compile되지 않고 사용하는 문자

  • html 에서 Entity Tag와 유사하다 <는 -> &lt; 로 사용한다.

  • \t : tab , \n : 한줄 내림nextLine , \" : 값을 String으로 처리

-> System.out.print("한글"); -> 한글

-> "한""글"로 바꾸고 싶다면? -> System.out.print("\"한\"\"글\"")

 

**문제 : Hello 문자열을 -> HELLO로 변경하는 메소드를 작성하세요

ex). for문 , *charAt(), concatenate , char연산, 대문자 A는 65, B는66이다.소문자 a는 97 b는 98

 

21).for문   <-> 무한반복문(while)

 

  • 초기값, 조건, 증감이 있는 선택 반복문

for         (int i=0;     i<3;       i++)        {연산}

예약어    1.초기값   2.조건    3.증감    4.연산

  5.하고 마지막 2.조건에서 끝난다.{}밖으로 나감.

<debug표>------------------------------------

초기값        판단       연산        증감

.....

i=0              true       연산1        0

i=1              true       연산2        1

i=2              true       연산3        2

i=3끝!!!       false

(최종 i값은 3임으로 조심해야된다!!)

-------------------------------------------------

**Test

  • debug :

  • JUnit : 메서드 만들어놓고 값하나 던져서결과가 잘돌아가는지 (단위테스트)

 

22). 증감연산자

 

  • int i =0;

  • System.out.println(i++);  //0 선처리 후증가

  • System.out.println(i++);  //1

  • System.out.println(++i);  //3 선증가 후처리

  • System.out.println(++i)  //4

  • System.out.println(i--);;  //4 선처리 후감소

 

*별찍기 for문

  5.하고 마지막 2.조건에서 끝난다.{}밖으로 나감.

<debug표>------------------------------------

초기값        판단       연산                            증감

i=0;               t             t    0+1    모양    증감

i=1              true       연산2                            1

i=2              true       연산3                            2

i=3끝!!!       false

(최종 i값은 3임으로 조심해야된다!!)

-------------------------------------------------

반응형