본문 바로가기
Java

자바 #002_변수, 리터럴

by haheehee 2022. 12. 8.

2022.12.06 - [Java] - 자바 #001_자바 시작하기

 

자바 #001_자바 시작하기

자바 시작하기 Java는 임베디드, 웹, 안드로이드 소프트웨어(SW) 개발 분야에 주로 사용된다. 1995년 마이크로시스템즈에서 발표되었으며, 현재 웹사이트 및 다양한 Application 개발의 핵심적인 언어

hhahee.tistory.com

에서 예약어 부분에 대하여 좀 더 자세하게 공부해보겠다.

예약어


  • 기본 타입 : boolean, byte, char, short, int, long, float, double
  • 접근 제한자 : private, protected, public
  • 클래스 : class, abstract, interface, extends, implements, enum
  • 객체 : new, instanceof, this, super, null
  • 메소드 : void, return
  • 제어문 : if, else, switch, case, default, for, do, while, break, continue
  • 논리값 : true, false
  • 예외 처리 : try, catch, finally, throw, throws
  • 기타 : package, import, synchronized, final, static

 

기본타입(Primitive Type)

 

기본 타입에는 boolean, byte, char, short, int, long, float, double이 있다.

여기서 정수, 실수, 논리 타입으로 구분된다. 

  • 정수 타입 : byte, char, short, int, long
  • 실수 타입 : float, double
  • 논리 타입 : boolean

2022.12.05 - [Java] - Java 내가 보려고 작성한 기본 기초 문법, 용어 정리

 

Java 내가 보려고 작성한 기본 기초 문법, 용어 정리

정수타입 byte : 1byte : -128 ~ +127 short : 2byte : -2^15 ~ ((2^15)-1) char : 2byte : 0 ~ 65535(유니코드)​ int : 4byte : -2^31 ~ ((2^31)-1)​ long : 8byte : -2^63 ~ ((2^63)-1)​ 실수타입 float : 4byte (소수점 7자리 이하) 뒤에 f 붙

hhahee.tistory.com

이곳에 각 타입에 대하여 처음에 정리하여 놓았다. 

정수타입

  • byte : 1byte : -128 ~ +127
  • short : 2byte : -2^15 ~ ((2^15)-1)
  • char : 2byte : 0 ~ 65535(유니코드)​
  • int : 4byte : -2^31 ~ ((2^31)-1)​
  • long : 8byte : -2^63 ~ ((2^63)-1)​

실수타입

  • float : 4byte (소수점 7자리 이하) 뒤에 f 붙이기
  • double : 8byte (소수점 15자리 이하) 기본형

논리타입

  • boolean : true or false (기본 : false)

자바는 실수 리터럴의 기본을 double 타입으로 지정

float 타입으로 저장하려면 리터럴 뒤 f 혹은 F로 표시

double 타입이 float 타입보다 약 2배 정밀도가 높음


리터럴 (Literal)

프로그램 언어에서 문자열 그 자체가 값을 나타내는 것. 예를 들면 X="90"에서 문자열 90은 90이라는 값을 나타내는 리터럴이다. (출처 : 네이버 지식백과)

  • 2진수 : 0B 혹은 0b로 시작 (0과 1로 구성) 
  • 8진수 : 0으로 시작(0~7로 구성)
  • 10진수 : 일반적으로 사용하는 숫자(정수) (0~9로 구성)
  • 16진수 : 0X 혹은 0x로 시작 (0~9, A, B, C, D, E, F로 구성)

리터럴
실행결과


char 타입

 

하나의 문자를 저장할 수 있는 타입이다.

char a1 = 'A';	// 유니코드 65
char a2 = 'a';	// 유니코드 97

 

문자열

 

큰따옴표(" ")로 쌓인 문자들을 말한다.

문자열은 char타입에 저장 불가능하다.

String 타입에 저장 가능하다.

String var = "hahee_it";

 

이스케이프 문자 (Escape)

 

문자열 내부에 있는 \

특정 문자를 포함시키거나, 문자열의 출력을 제어할 수 있다.

이스케이프 문자 출력 용도
\t
\n 라인 피드
\r 캐리지리턴
\" "출력
\' '출력
\\ \출력
\u16진수 16진수 유니코드에 해당하는 문자 출력

자동타입변환 (Promotion)

 

값의 허용 범위가 작은 타입이 큰 타입으로 저장될 경우에 이루어지는 변환이다.

 

큰type = 작은type;

byte < short < int < long < float < double

 

char 타입의 경우 int 타입으로 자동변환되면 해당하는 유니코드 값이 저장된다.

 

강제 타입 변환 (Casting)

 

값의 허용 범위가 큰 타입을 작은 타입으로 강제로 나누어 저장하는 것을 말한다.

 

구현클래스 변수 = (구현클래스) 인터페이스변수;

작은type = (작은type) 큰type;

 

  • 연산 시 byte, char, short 타입 변수는 int 타입으로 자동 변환된다.
  • 피연산자 중 하나가 long 타입이면 다른 피연산자는 long으로 자동변환
  • 피연산자 중 하나가 double타입이면 다른 피연산자는 double으로 자동변환
  • 다른 타입 연산이 필요하면 강제 변환한 뒤 연산을 진행해아한다.

+ 연산자

 

더하기

앞에서부터 순차적으로 수행되며, 문자열을 + 연산하면 문자열로 변경됨 (문자열은 결함 연산)

 

문자열을 기본 타입으로 강제변환

 

String->기본 타입

  • Byte.parseByte(문자열변수) 를 기본타입 변수에 넣는다.
  • Short.parseShort(문자열변수) 를 기본타입 변수에 넣는다.
  • Integer.parseInt(문자열변수) 를 기본타입 변수에 넣는다.
  • Long.parseLong(문자열변수) 를 기본타입 변수에 넣는다.
  • Float.parseFloat(문자열변수) 를 기본타입 변수에 넣는다.
  • Double.parseDouble(문자열변수) 를 기본타입 변수에 넣는다.
  • Boolean.parseBoolean(문자열변수) 를 기본타입 변수에 넣는다.

 

기본타입을 문자열로 강제 변환

 

기본타입->String

  • String.valueOf(기분타입변수) 를 String 변수에 넣는다.

System.out / System.in / println()

 

System.out : 시스템의 표준 출력 장치로 출력 (모니터)

System.in : 시스템의 표준 입력 장치에서 읽음 (키보드)

public class PrintExample {

	public static void main(String[] args) {
		// printf에서 f는 format의 약자
		// %6d : 여섯 자리를 유지 => _ _ _ 1 2 3
		// %-6d : 마찬가지로 여섯자리 유지 => 1 2 3 _ _ _
		
		int value = 123;
		System.out.printf("출력해보기: %d\n", value);
		System.out.printf("출력해보기: %6d\n", value);
		System.out.printf("출력해보기: %-6d\n", value);
		System.out.printf("출력해보기: %06d\n", value);
		System.out.printf("출력해보기: %10d\n", value);
		System.out.println("\n");
		
		double area = 3.14159 * 10 * 10;
		System.out.printf("반지름이 %d인 원의 넓이: %10.2f\n", 10, area);
		System.out.println("\n");
		
		String name = "하히";
		String website = "티스토리";
		System.out.printf("%6d | %-10s | %10s\n", 1, name, website);

	}

}

System.out / System.in / println() 예시 출력결과

 

println() 메소드

 

괄호 안에 리터럴을 넣으면, 그 값이 출력

변수를 넣으면 변수에 저장된 값이 출력

문자열은 쌍따옴표(" ")사용

Conversion : 제공되는 값에 타입에 따라 정수(%d), 실수(%f), 문자열(%s)을 입력

형식 문자열

 

 

키코드

 

키보드에서 값을 입력하면, 프로그램에서는 숫자로 된 키코드를 읽음(유니코드)

위에서 언급한 System.in의 read() 메소드를 사용

public class KeyCodeExample {

	public static void main(String[] args) throws Exception {
		int keyCode;
		
		keyCode = System.in.read();
		System.out.println("keyCode: " + keyCode);
		
		keyCode = System.in.read();
		System.out.println("keyCode: " + keyCode);
		
		keyCode = System.in.read();
		System.out.println("keyCode: " + keyCode);

	}

}

키코드 예시 출력화면

콘솔창에 'A'를 입력한 후 엔터를 눌렀다.

A에 해당하는 키코드(유니코드)가 출력된 것을 확인할 수 있다. 

13은 carriage return, 10은 line feed 이다. (밑에 아스키코드 표 참조)

아스키코드 (출처: 나무위키)

System.in.read()

 

2개 이상 키가 조합된 한글을 읽을 수 없는 단점이 있음

통문자열로 읽을 수 없음

 

Scanner 클래스

 

System.in.read()의 단점을 해결

통문자열을 읽을 수 있음

 

Scanner 변수선언 후, 시스템의 입력 장치로부터 읽는 Scanner를 new 예약어를 통해 해줌.

변수를 사용하여 문자열을 저장 후 출력

scanner를 사용하려면 꼭 import문을 호출해야함 (import java.util.Scanner;)

// Scanner사용할 때 꼭 import 해주어야함
import java.util.Scanner;

public class ScannerCode {
	
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String inData;
				
		while(true) {
			inData = scanner.nextLine();
			System.out.println("입력된 문자열: \"" + inData + "\"");
			if( inData.equals("q") ) {
				break;
			}
		}
		
		System.out.println("종료");
		
		scanner.close();
	}

}

Scanner클래스 예시 출력

 

기본타입과 문자열 비교

 

기본타입은 == 를 사용하여 값 비교

문자열은 equals() 메소드를 사용하여 비교

 

 

 

 

 

 

 

 

 

 

 

 

 

출처 : 혼자 공부하는 자바 (신용권)

'Java' 카테고리의 다른 글

자바 #005_참조  (0) 2022.12.12
자바 #004_조건문, 반복문  (0) 2022.12.12
자바 #003_연산자  (0) 2022.12.12
자바 #001_자바 시작하기  (0) 2022.12.06
Java 내가 보려고 작성한 기본 기초 문법, 용어 정리  (0) 2022.12.05

댓글