• Home
  • About
    • back
    • ming photo

      ming

      studying

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Archive
    • back
    • All Posts
    • All Tags
    • All categories
  • categories
    • back
    • HTML+CSS+JavaScript
    • JAVA
    • Algorithm
    • DB
    • JSP
    • 정보처리기사
    • Spring
    • Thymeleaf
    • 기술면접
  • Projects

JAVA-자료형,입출력

03 Feb 2021

- 변수와 자료형

** casting(형변환)

  • 신분이 바뀌는것
  • ( )연산자 사용
  • casging method => .parseInt(), .parseDouble()
Ex1)

package com.javatean.jse;

import java.math.BigDecimal;

public class JavaEx7 {

    public static void main(String[] args) {
		
        // int num1 = 1;
        int num1 = 200;
        // byte num2 = num1; // 큰 자료가 작은 자료에 들어갈수 없기 대문에 오류가 난다 : 타입우선
        byte num2 = (byte) num1; 
        // 큰 자료형 => 작은 자료형 : 형변환(castiong, down-casting) 
        System.out.println("num2 : " + num2);
        // 값의 범위를 초과하게 되면 값의 손실(결손) 발생된다
        
            num2 = 200; // short (X), int (O)
        // java에서는 모든 정수는 타입(자료형) 무언급시 값(리터럴)은 int 형으로 간주한다
        // 일반적인 정수 => int
        
        short num3 = 200;
            
        int num4 = num2;
        num4 = num3; // 작은자료형에서 큰자료형으로 들어갈때는 문제없다
        // 작은 자료형 => 큰 자료형 : 형변환(promoting, up-casting)
        
        num4 = 'c'; // ASCII 코드 : 'a' =97, 'A'=65, '0'=48
        // 자동 형변환
        System.out.println("num4 : " + num4);

        num4 = (int)1L; // long -> int		
        long num5 = 1L; // L(l) 을 꼭 붙혀서 사용해야한다
                
        System.out.println("long형의 최대 값 : " + Long.MAX_VALUE);
            
------------------------------------------------------------------------------------------------		
        BigDecimal big = new BigDecimal("9223372036854775808");
        System.out.println("합계 : " + big.add(new BigDecimal("1")));
        // long 형 범위를 넘어가는 정수 연산 - BigDecimal, BigInteger를 이용해 문자열로 간주시켜서 값을 계산한다

    }

}
  • 출력 화면 casting_출력

** 정리

  • 큰 자료형 => 작은 자료형 : 형변환(castiong, down-casting)
  • 작은 자료형 => 큰 자료형 : 형변환(promoting, up-casting)
  • 값의 범위를 초과하게 되면 값의 손실(결손) 발생된다
  • java에서는 모든 정수는 타입(자료형) 무언급시 값(리터럴)은 int 형으로 간주한다
  • ASCII 코드 : ‘a’ =97, ‘A’=65, ‘0’=48
  • long 형 범위를 넘어가는 정수 연산 - BigDecimal, BigInteger를 이용해 문자열로 간주시켜서 값을 계산한다
Ex2)
package com.javatean.jse;

public class JavaEx8 {

    public static void main(String[] args) {
		
        float num1 = 3.14F; // float 는 값 뒤에 F(f)를 기입해야한다 => 기입X : double타입
        int num2 = (int)num1; // float -> int 형변환

        System.out.println("num2 : " + num2);
        // 소숫점 뒤의 값은 생략된다 : 정수 부분만 나온다

        num1 = num2; // int -> float
        System.out.println("num1 : " + num1); // 실수 표시가 된다

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

        String str = "123";

        String str = "abcd" // (X)
        // =>  java.lang.NumberFormatException 예외(exception) 발생

        // int num3 = (int)str; (X) 형변환이 되지 않는다

        // * 형변환(casting) 메서드(함수)
        // String(정수 성분의 문자열에 국한(한정)한다) => 정수(int)로 변환
        int num3 = Integer.parseInt(str) + 1;
        // String => int (변환과정) - 가장 많이 사용한다 (변환과정이 짧다)
        System.out.println("num3 : " + num3);

        int num4 = Integer.valueOf(str) + 1; 
        // String => Integer => int (변환과정)
        System.out.println("num4 : " + num4);

        int num5 = new Integer(str) + 1; 
        // String => Integer => int (변환과정)
        System.out.println("num5 : " + num5);

        // int <=> Integer : 가본 자료형과 기본 자료형의 랩퍼 클래스간에는 자동 형병환이 된다
        // 오토-박싱(aut-boxing) : 기본 자료형 => 기본 자료형의 랩퍼 클래스로 변환 되는것
        // 언박싱(unboxing) : 기본 자료형의 랩퍼 클래스  => 기본 자료형 으로 변한 되는것
        // box => 클래스(class) 상징한다
-------------------------------------------------------

        int num6 = 4 / 3; // 정수(몫)
        System.out.println("num6 : " + num6);

        float num7 = 4 / 3; // 정수 부분만 있는 실수(몫)
        System.out.println("num7 : " + num7);

        float num8 = (float)4 / 3; // 정수  + 소수부 => 실수(몫)
        System.out.println("num8 : " + num8);

        float num9 = (float)4 / (float)3;// 정수  + 소수부 => 실수(몫)
        System.out.println("num9 : " + num9);

    }

}
  • 출력화면 casting_출력2

** 정리

  • 형변환(casting) 메서드(함수) 확인하기
  • int <=> Integer : 가본 자료형과 기본 자료형의 랩퍼 클래스간에는 자동 형병환이 된다
  • 오토-박싱(aut-boxing) : 기본 자료형 => 기본 자료형의 랩퍼 클래스로 변환 되는것
  • 언박싱(unboxing) : 기본 자료형의 랩퍼 클래스 => 기본 자료형 으로 변한 되는것
  • box => 클래스(class) 상징한다

* 메서드 오버로딩

  • 메서드(함수) 의 인자부를 다양하게 변화 => 같은 이름의 메서드를 다양하게 사용
    인자의 자료형 종류/갯수/순서

* 시스템 입출력

  • 프로그래밍 언어에는 시스템 표준 출력 장치와 표준 입력장치가 있다
    • 표준 출력 장치 : 모니터
    • 표준 입력 장치 : 키보드
    • 모니터로 변수값 출력

      1) println() 메소드 println()

      2) printf() 메소드 printf()_개념

    • 개발자가 원하는 형식화된 문자열(formal string) 출력(전체 출력 자리수 및 소수 자릿수 제한)
    • 형식 문자열에서 %와 conversion 외에는 모두 생략가능
    • 형식 문자열에 포함될 값 2개 이상인 경우 값의 순번(argument_index$)표시해야한다.
    • 후 처리된다
    • conversion 에서는 제공되는 값의 타입에 따라 d(정수),f(실수),s(문자열) 입력

        ![printf()](https://user-images.githubusercontent.com/65608960/106701376-e4029980-6629-11eb-8ac0-95e997508f68.JPG)
      
    • 키보드로 입력된 내용을 변수에 저장
      1) 키코드 : 키보드에서 키를 입력할 때 프로그램에서 숫자로 된 키코드를 읽음
      System.in의 read()사용 => 얻은 키코드는 대입 연사자 사용하여 int 변수에 저장

      keyCode 2) Scanner scanner

package com.javatean.jse;

import java.util.Calendar;

public class JavaEx9 {

    public static void main(String[] args) {
		
        // formatter : 줄바꿈 기능이 없다 => \n OR %n 사용
        System.out.printf("자바를 시작한 날은 %d월 %d일 입니다.\n",2,1); // %d : 정수 형태의 숫자
        System.out.printf("자바를 시작한 날은 %s월 %c일 입니다.\n","2",'1'); // %s : 문자열,%c : 문자
        System.out.printf("자바를 시작한 날은 %1$s월 %2$c일 입니다\n","2",'1'); // %1$s : 순서지정
        System.out.printf("자바를 시작한 날은 %2$s월 %1c일 입니다.%n",'1',"2"); // %1c : 순서지정
        System.out.printf("자바를 시작한 날은 %f월 %f일 입니다.%n",2.0,1.0); // %f :  실수 형태의 숫자
        System.out.printf("자바를 시작한 날은 %d월 %d일 입니다.%n",(int)2.0,(int)1.0); // 실수 값=>정수값 변환
        System.out.printf("자바를 시작한 날은 %.2f월 %.1f일 입니다.\n",2.0,1.0); 
        System.out.printf("자바를 시작한 날은 %e월 %g일 입니다.%n",2.0,1.0); 

        Calendar cal = Calendar.getInstance();
        String str = String.format("오늘은 %1$tY년 %1$tb %1$te일입니다%n", cal);
        System.out.println(str);


    }

}
  • 출력화면 formatter_출력
package sec04.exam04;

    public class QStopExample {
            public static void main(String[] args) throws Exception {
            int keyCode;

            while(true) {
            keyCode = System.in.read();
            System.out.println("keyCode: " + keyCode);
            if(keyCode == 113) {  				       
                break;		//keyCode가 113과 동일할 경우 실행
        }
      }

        System.out.println("종료");
    }
}
package sec04.exam05;

import java.util.Scanner;

    public class ScannerExample {
            public static void main(String[] args) throws Exception {
            Scanner scanner = new Scanner(System.in);
            String inputData;

            while(true) {
                inputData = scanner.nextLine();
                System.out.println("입력된 문자열: \"" + inputData + "\"");
                if(inputData.equals("q")) {
                    break;
            }
        }

        System.out.println("종료");
    }
}


Share Tweet +1