본문 바로가기
IT/자바

자바 정리 - 변수, 출력

by 김보리 2021. 11. 30.
728x90
반응형

예제 1)

package chapter01;

public class VariableUseExample {

	public static void main(String[] args) {
		// 변수 선언과 동시에 초기화
		int hour = 3; // hour 변수에 값 3 저장
		int minute = 5; // minute 변수에 값 5 저장
	
		System.out.println(hour + "시간 " + minute + "분"); // hour, minute 값 출력
	
		// totalMinute 변수 선언과 동시에 초기화
		int totalMinute = (hour * 60) + minute; // totalMinute = (3 * 60) + 5; hour 값 : 3, minute 값 : 5
	
		System.out.println("총 " + totalMinute + "분"); // totalMinute 값 출력
	
	}
}

예제 2)

package chapter01;

public class VariableExchangeExample {
	public static void main(String[] args) {
		// 변수 선언과 동시에 초기화
		int x = 3; // x에 값 3 저장
		int y = 5; // y에 값 5 저장
	
		System.out.println("x : " + x + ", y : " + y); // x, y 값 출력
	
		int temp = x; // temp라는 변수에 x 값 3 저장
		x = y; // x에 y 값 5 저장
		y = temp; // y에 temp값 3 저장
	
		System.out.println("x : " + x + ", y : " + y); // x, y 값 출력
	}
}

변수 : 값을 저장하는 메모리 번지에 붙인 이름

변수 선언 : 변수에 어떤 타입의 데이터를 저장할지, 변수 이름이 무엇인지 결정

변수 사용 : 변수의 값을 읽거나 변경

변수 사용 범위 : 변수는 자신이 선언된 위치에서 자신이 속한 블록 내부까지 사용 가능

리터럴(Literal) : 소스 코드에서 프로그래머에 의해 직접 입력된 값

2진수 : 0b 또는 0B로 시작, 0과 1로 구성

8진수 : 0으로 시작, 0~7로 구성

10진수 : 소수점이 없는 0 ~ 9 숫자로 구성

16진수 : 0x 또는 0X로 시작, 0 ~ 9 숫자와 A, B, C, D, E, F, 또는 a, b, c, d, e, f로 구성

기본 타입 (Primitive Type)

  • 정수 타입(Integer) : 4byte
    • byte : 1byte = 8bit
    • short : 2byte = 16bit
    • int : 4byte = 32bit (기본)
    • long : 8byte = 64bit
    • char(문자형) : 2byte = 16bit / 작은 따옴표( ' )로 감싼 문자리터럴을 저장
  • 실수 타입 : 4byte
    • float : 4byte = 32bit / 소수점 7자리까지 가능
    • double : 8byte = 64bit / 소수점 15자리까지 가능
  • 논리 타입 : 1byte
    • boolean : true or false

참조타입(Reference Type) : 객체

  • String : 큰따옴표( " )로 감싼 문자열을 저장

ASCII Code = 1byte (128개)

이스케이프 문자 정리

\t : 탭만큼 띄움 \n : 줄 바꿈(라인피드) \r : 캐리지리턴 \" : " 출력 \' : ' 출력 \\ : \ 출력 \u16진수 : 16진수 유니코드에 해당하는 문자 출력

타입 변환 : 데이터 타입을 다른 데이터 타입으로 변환하는 것

byte 타입 → int 타입

int 타입 → byte 타입

double 타입 → int 타입

String 타입 → int 타입

자동 타입 변환(Promotion) : 값의 허용 범위가 작은 타입이 큰 타입으로 저장될 경우

큰 허용 범위 타입 =작은 허용 범위 타입

byte < short < int < long < float < double

float는 4byte, long는 8byte지만 float가 더 크게 출력 가능

package chapter02;

// 자동 타입 변환
public class Promotion자동타입변환 {

	public static void main(String[] args) {
		// 자동 타입 변환
		byte byteValue =10; // byte 타입의 byteValue 변수에 값 10 저장
		int intValue = byteValue; // int 타입의 intValue 변수에 byte를 int로 자동 타입 변환된 값 저장
		System.out.println("intValue : " + intValue); // int로 자동 타입 변환된 변수 출력
		
		char charValue = '가'; // char 타입의 charValue 변수에 값 '가' 저장
		intValue = charValue; // intValue 변수에 char를 int로 자동 타입 변환된 값 저장
		System.out.println("가의 유니코드 : " + intValue); // int로 자동 타입 변환된 변수 출력
		
		intValue = 50; // intValue에 값 50 저장
		long longValue = intValue; // long 타입의 longValue 변수에 int를 long로 자동 타입 변환된 값 저장
		System.out.println("longValue :" + longValue); // long로 자동 타입 변환된 변수 출력
		
		longValue = 100; // longValue 변수에 값 100 저장
		float floatValue = longValue; // float 타입의 floatValue 변수에 long을 float로 자동 타입 변환된 값 저장
		System.out.println("floatValue : " + floatValue); // float로 자동 타입 변환된 변수 출력
		
		floatValue = 100.5F; // floatValue 변수에 값 100.5F 저장
		double doubleValue = floatValue; // double 타입의 doubleValue 변수에 float를 double로 자동 타입 변환된 값 저장
		System.out.println("doubleValue : " + doubleValue); // double로 자동 타입 변환된 변수 출력
		

	}

}

강제 타입 변환(Casting) : 큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 나누어 저장

캐스팅 연산자 괄호 ( ) 사용 : 괄호 안이 나누는 단위

ex ) int intValue = 10;
		  byte byteValue = (byte) intValue; // int를 byte로 강제변환
package chapter02;

// 강제 타입 변환
public class Casting강제타입변환 {

	public static void main(String[] args) {
		// 허용 범위 타입
		// byte < short < int < long < float < double

		// 강제 타입 변환
		int intValue = 44032; // int 타입의 intValue 변수에 값 44032 저장
		char charValue = (char) intValue; // char 타입의 charValue 변수에 int를 char로 강제 타입 변환된 값 저장
		System.out.println(charValue); // 강제 변환된 값 출력
		
		long longValue = 500; // long 타입의 longValue 변수에 값 500 저장
		intValue = (int) longValue; // intValue 변수에 long을 int로 강제 타입 변환된 값 저장
		System.out.println(intValue); // 강제 변환된 값 출력
		
		double doubleValue = 3.14; // double 타입의 double 변수에 값 3.14 저장
		intValue = (int) doubleValue; // intValue 변수에 double를 int로 강제 타입 변환된 값 저장
		System.out.println(intValue); // 강제 변환된 값 출력

	}

}
  • 연산
  • 피연산자가 모두 숫자일 경우 덧셈 연산
  • 피연산자 중 하나가 문자열일 경우 나머지 피연산자도 문자열로 자동 변환, 문자열 결합 연산

ex )

숫자 + 숫자 → 덧셈 연산 → 숫자

int value = 3 + 7; → int value = 10;

"문자열" + 숫자 → "문자열" + "숫자" → 결합연산 → "문자열숫자"

String str = "3" + 7; → String str = "3" + "7"; → String str = "37";

숫자 + "문자열" → "숫자" + "문자열" → 결합연산 → "숫자문자열"

String str = 3 + "7"; → String str = "3" + "7"; → String str = "37";

Scanner : 키보드에서 입력된 내용을 문자열로 읽음

Scanner scanner = new Scanner(System.in)
// Scanner scanner : Scanner 타입의 변수 scanner 선언
// new Scanner(System.in) : 시스템의 입력 장치로부터 읽는 Scanner를 생성하는 코드
scanner.nextLine(); // Enter키 이전까지 입력된 문자열 읽으며, Enter 키 입력 전까지 대기

예제 ) 키보드에서 입력된 내용을 문자열로 얻기

package chapter02;

import java.util.Scanner;

public class 키보드에서입력된내용을문자열로얻기Scanner {

	public static void main(String[] args) {
		//Scanner 변수 설정
		// new Sc 입력 후 ctrl + space -> 자동으로 import 생성
		Scanner scanner = new Scanner(System.in); // 생성된 Scanner를 변수 scanner에 저장
	//  ㄴ변수 선언       ㄴ시스템의 입력 장치로부터 읽는 Scanner 생성
		int inputNum = scanner.nextInt(); 
		System.out.println("입력된 내용은 : " + inputNum);
		
		String inputData;
		
		while(true) { // true 일 때 계속 진행
			inputData = scanner.nextLine(); // 읽은 문자열을 String 변수 inputData에 저장
	//					     ㄴenter 이전까지 입력된 문자열을 읽음 
			 System.out.println("입력된 문자열 : \\"" + inputData + "\\"");
			 if(inputData.equals("q")) { // q 입력시 종료
				 break;
			 } // if문
		} // while문
		
		System.out.println("종료");
		
	} // main 메소드
}
  • 형식화된 문자열 정리
  • 정수 %d : 정수 ex) 123 %6d : 6자리 정수, 왼쪽 빈자리 공백 ex) 123 %-6d : 6자리 정수, 오른쪽 빈자리 공백 ex) 123 %06d : 6자리 정수, 왼쪽 빈자리 0채움 ex) 000123
  • 실수 %10.2f : 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 공백 ex) 123.45 %-10.2f : 소수점 이상 7자리, 소수점 이하 2자리, 오른쪽 빈자리 공백 ex) 123.45 %010.2f : 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 0채움 ex) 0000123.45
  • 문자열 %s : 문자열 ex) abc %6s : 6자리 문자열, 왼쪽 빈자리 공백 ex) abc %-6s : 6자리 문자열, 오른쪽 빈자리 공백 ex) abc
  • 특수문자 \t : 탭(tab) \n : 줄 바꿈 %% : %
Integer.paraseInt( ) : 문자열을 정수 int 타입으로 변환

Double.parseDouble( ) : 문자열을 실수 double 타입으로 변환

System.out.println( ) : 괄호 안의 내용을 출력, 행을 바꿈(다음줄로 넘어감)

System.out.print( ) : 괄호 안의 내용을 출력

System.out.printf( ) : 괄호 안의 첫 번째 문자열 형식대로 내용 출력
	ex) System.out.printf("이름 : %s,  나이 : %d", "김보리", 1);

printf( ) 메소드 사용방법

package chapter02;

public class Printf메소드사용하기 {

	public static void main(String[] args) {
		/*
		 * 형식화된 문자열 정리 
		 정수
		 	%d : 정수 ex) 123
		 	%6d : 6자리 정수, 왼쪽 빈자리 공백 ex) ___123 
		 	%-6d : 6자리 정수, 오른쪽 빈자리 공백 ex) 123___
		 	%06d : 6자리 정수, 왼쪽 빈자리 0채움 ex) 000123
		 
		 실수
		 	%10.2f : 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 공백 ex) ____123.45
		 	%-10.2f : 소수점 이상 7자리, 소수점 이하 2자리, 오른쪽 빈자리 공백 ex) 123.45____
		 	%010.2f : 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 0채움 ex) 0000123.45
		 
		 문자열
		 	%s : 문자열 ex) abc
		 	%6s : 6자리 문자열, 왼쪽 빈자리 공백 ex) ___abc
		 	%-6s : 6자리 문자열, 오른쪽 빈자리 공백 ex) abc___
		 
		 특수문자
		 	\\t : 탭(tab)
		 	\\n : 줄 바꿈
		 	%% : %
		 */
		int value = 123;
		System.out.printf("상품의 가격 : %d원 \\n", value); // 정수 출력
		System.out.printf("상품의 가격 : %6d원 \\n", value); // 6자리 정수, 왼쪽 빈자리 공백 ex) ___123
		System.out.printf("상품의 가격 : %-6d원 \\n", value); // 6자리 정수, 오른쪽 빈자리 공백 ex) 123___
		System.out.printf("상품의 가격 : %06d원 \\n", value); // 6자리 정수, 왼쪽 빈자리 0채움 ex) 000123
		
		double area = 3.14159 * 10 * 10;
		System.out.printf("반지름이 %d인 원의 넓이 : %10.2f \\n", 10, area); // 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 공백 ex) ____123.45
		
		String name = "홍길동";
		String job = "도적";
		System.out.printf("%6d | %-10s | %10s\\n", 1, name, job);
		// %6d : 6자리 정수, 왼쪽 빈자리 공백 ex) ___123
		// %-10s : 10자리 문자열, 오른쪽 빈자리 공백 ex) 홍길동_______
		// %10s : 10자리 문자열, 왼쪽 빈자리 공백 ex) ________도적
	}

}

키보드에서 입력된 내용을 문자열로 얻기 (Scanner 이용).

package chapter02;

import java.util.Scanner;

public class 키보드에서입력된내용을문자열로얻기Scanner {

	public static void main(String[] args) {
		//Scanner 변수 설정
		// new Sc 입력 후 ctrl + space -> 자동으로 import 생성
		Scanner scanner = new Scanner(System.in); // 생성된 Scanner를 변수 scanner에 저장
	//  ㄴ변수 선언       ㄴ시스템의 입력 장치로부터 읽는 Scanner 생성
		int inputNum = scanner.nextInt(); 
		System.out.println("입력된 내용은 : " + inputNum);
		
		String inputData;
		
		while(true) { // true 일 때 계속 진행
			inputData = scanner.nextLine(); // 읽은 문자열을 String 변수 inputData에 저장
	//					ㄴenter 이전까지 입력된 문자열을 읽음 
			 System.out.println("입력된 문자열 : \\"" + inputData + "\\"");
			 if(inputData.equals("q")) { // equals : String 문자 비교할 때 사용 q 입력시 종료
				 break;
			 } // if문
		} // while문
		
		System.out.println("종료");
		
	} // main 메소드
}
728x90
반응형

'IT > 자바' 카테고리의 다른 글

자바 정리 - 연산자, 조건문  (0) 2021.11.30
자바 정리 - 연산자  (0) 2021.11.30
자바 정리 - 기초  (0) 2021.11.30
[이클립스] 단축키 정리  (0) 2021.11.30
[이클립스] exerd 설치방법  (0) 2021.11.25

댓글