자바의정석2(출력, 변수)

min seung moon·2021년 3월 1일
0

자바의정석

목록 보기
2/8

01. 화면의 글자 출력

  • System.out.print("Hello"); : 기본출력(출력 후 줄바꿈X)
  • System.out.println("Hello"); : 기본출력(출력 후 줄바꿈)
    - syso 입력 후 Ctrl + Space를 누르면 자동 완성
    • 실수의 자리수 조절 불가
    • 10진수로만 출력된다
  • System.out.printf("출력서식",출력할내용); : 형식출력(형식을 지정, 줄바꿈X)
    - 출력 서식 : %[-][0][n][.m]지시자
    • [] 는 생략 가능
    • n : 출력할 전체 자리수 지정(오른쪽 정렬), %3d (전체 자리수가 3인 정수)
    • 0 : 전체 자리수가 지정된 경우 왼쪽의 남는 자리에 0을 출력, %03d
    • - : 전체 자리수가 지정된 경우 왼쪽 정렬하고 빈칸에 공백 출력
    • .m : 소수점 아래 자리수 지정, 잘리는 소수점 자리수는 반올림 시켜서 표시, 3.2f
    • 지시자
      • %b : boolean 형식으로 출력
      • %d : 정수 형식으로 출력
      • %o : 8진수 정수의 형식으로 출력
      • % x or %X : 16진수 정수의 형식으로 출력
      • %f : 소수점 형식으로 출력
      • %c : 문자형식으로 출력
      • %s : 문자열 형식으로 출력
      • %n : 줄바꿈 가능
      • %e or %E : 지수 표현식의 형식으로 출력

02. 화면에 입력받기(Scanner)

1. Scanner란?

  • 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스

2. Scanner를 사용하려면...

  • import문 추가
    • import java.util.*;
  • Scanner 객체의 생성
    • Scanner scanner = new Scanner(System.in);
  • Scanner 객체를 사용
    • int num = scanner.nextInt(); // 화면에서 입력받은 정수를 num에 저장
    • String input = scanner.nextLine(); // 화면에서 입력받은 내용을 input에 저장
    • int num = Interger.parseInt(input); // 문자열 input을 숫자 num으로 변환

03. 변수(Variable)

1. 변수란?

  • 변하는 수? X
  • 하나의 값을 저장할 수 있는 메모리(RAM) 공간의 이름

2. 변수 선언

  • 변수의 선언 이유
    • 값(data)을 저장할 공간을 마련하기 위해서
  • 변수의 선언 방법
    • 변수타입 변수이름;
    • int age; // 정수형(int) 변수 age 선언

1. 명명 규칙(Naming convention)

  • 대소문자 구분되며 길이에 제한이 없다
    • True와 true는 서로 다른 것으로 간주
  • 예약어(Reseved word)를 사용해서는 안 된다
    • true는 예약어라 사용할 수 없지만, True는 가능
  • 숫자로 시작해서는 안된다
    • top10은 허용하지만, 7up은 허용되지 않는다
  • 특수문자는 '_', '$'만을 허용한다
    • $harp은 허용되지만 S#arp는 허용되지 않는다

2. 명명 규칙(권장사항)

  • 클래스 이름의 첫 글자는 항상 대문자로 한다
    • 변수와 메서드 이름이 첫 글자는 항상 소문자로 한다
  • 여러 단어 이름은 단어의 첫 글자를 대문자로 한다
    • lastIndexOf, StringBuffer
  • 상수의 이름은 대문자로 한다, 단어는 '_'로 구분한다
    • PI, MAX_NUMBER

3. 변수에 값 저장하기

  • 변수에 값 저장하기
    • int age; // 정수 (int)타입의 변수 age를 선언
    • age = 25; // 변수 age에 25를 저장
    • int age = 25; // 위의 두 줄을 한 줄로 가능
  • 변수의 초기화 - 변수에 처음으로 값을 저장하는 것(!주의, 지역 변수는 읽기전에 꼭 초기화해야 함)
    • int x = 0; // 변수 x를 선언 후, 0으로 초기화
    • int y = 5; // 변수 y를 선언 후, 5로 초기화
    • int x = 0, y = 5; // 변수 타입이 동일시에 이렇게 한줄로 작성 가능
자료형		기본값
boolean		false
char		'\u0000'
byte		0
short		0
int		0
long		0L
float		0.0f
double		0.0d or 0.0
참조형		null

4. 변수의 값 읽어오기

  • 변수의 ㄱ밧이 필요한 곳에 변수의 이름을 적는다
    • int year = 0, age = 14;
    • year = age + 2000;
      -> year = 14 + 2000;
      -> year = 2014;
    • age = age + 1;
      -> age = 14 + 1;
      -> age = 15;
    • System.out.println(age);
      -> 15 출력

3. 변수의 타입

  • 변수는 지정된 변수 타입에 맞는 값을 저장할 수 있다.
  • 변수의 타입은 저장할 값의 타입에 의해 결정
  • 저장할 값의 타입과 일치하는 타입으로 변수를 선언

1. 값의 타입

  • 값 (Immutable Type, 변하지 않는 값)
    • 문자 - char
    • 숫자
      • 정수 - byte, shor, int, long
      • 실수 - flat. double
    • 논리 - boolean (true, false)

2. 기본형과 참조형

  • 기본형(Premitive type)
    • 8개 (boolean, char, byte, short, int, long, float, double)
    • 실제 값을 저장
  • 참조형(Reference type)
    • 기본형을 제외한 나머지(String, System 등)
    • 객체의 주소를 저장 (4byte, 0X00000000 ~ 0xffffffff)(!, 64bit JVM경우 8byte)

1. 기본형(Primitive type)

  • 논리형 : true & flase 중 하나를 값으로 갖으며, 조건식과 논리적 계산에 사용
  • 문자형 : 문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다
  • 정수형 : 정수 값을 저장하는데 사용된다, 주로 사용하는 것은 int와 long이며, byte는 이진데이터를 다루는데 사용되며, short는 c언어와 호환을 위해 추가되었다
  • 실수형 : 실수 값을 저장하는데 사용된다, float와 double이 있다
종류/크기	1byte		2byte		4byte		8byte
논리형		boolean
문자형				char
정수형		byte		short		int		long
실수형						float		double

2. 변수, 상수, 리터럴

  • 변수(variable) : 하나의 값을 저장하기 위한 공간, 변경 O
    • int score = 100;
    • score = 200;
  • 상수(contant) : 한 번만 값을 저장 가능한 변수, 변경 X (상수의 이름은 대문자로 작성)
    • final int MAX = 100;
    • MAX = 200; // Constant Error, 값 변경이 불가
  • 리터럴(literal) : 그 자체로 값을 의미하는 것, 기존의 상수

4. 리터럴의 접두사와 접미사

종류		리터럴				접미사(대소문자 구별안함)
논리형		false,true			X
정수형		123, 0b0101, 077, 0xFF, 100L	L(long type)
실수형		3.14, 3.0e8, 1.4f, 0X1.0p-1	f(float type), d(double type, 생략가능)
문자형		'A', '1', '\n'			X
문자열		"ABC", "123", "A", "true"	X
  • boolean power = true; // or false
  • char = ch = 'A'; // ' '홑 따옴표로 묶어줘야 한다
  • String str = "ABC"; // " " 곁 따옴표로 묶어준다
  • byte b = 127; // max value ~ 127
  • int i = 100; // 10진수
  • int bin 0b0101; // 2진수
  • int oct = 0100; // 8진수
  • int hex = 0x100; // 16진수
  • long l = 10_000_000_000L; // 100억, int의 max value는 20억
  • long l = 100; // OK, int 범위이면 L 생략 가능
  • flat f = 3.14f; // float일 경우 f를 접미사로 붙여줘야 한다
  • double d = 3.14; // java는 실수형을 기본적으로 double타입이기 때문에 d 생략 가능
      1. -> 10.0
    • .10 -> 0.10
    • 10f -> 10.0f
    • 1e3 -> 1000.0 // e는 10의 제곱

5. 변수와 리터럴의 타입 불일치

  • 범위가 '변수 > 리터럴'인 경우, OK
    • int i = 'A' ; // int > char
    • long l = 123; // long > int
    • double d = 3.14f ; // double > float
  • 범위가 '변수 < 리터럴'인 경우, 에러
    • int i = 30_0000_0000; // int의 범위 +- 20억 벗어남
    • long l = 3.14f; // long < float, 실수형은 표현 범위가 더 넓어서 에러가 남
    • float f = 3.14; // float < double
  • byte, short 변수에 int 리터럴 저장 가능(정수의 Overflow, 변수의 타입의 범위 이내어야 함)
    • byte b = 100; // OK, byte의 범위(-128 ~ 127)에 속함
    • byte b = 128; // ERROR, byte의 범위를 벗어남

6. 형변환(Casting)

  • 값의 타입을 다른 타입으로 변환하는 것
  • boolean을 제외한 7개의 기본형은 서로 형변환이 가능
  • float f = 1.6f;
  • int i = (int)f;
변환		수식		결과
int -> char	(char)65	'A'
char -> int	(int)'A'	65
float -> int	(int)1.6f	1
int -> float	(float)10	10.0f

04. 문자와 문자열

  • 문자
    • char ch = 'A';
    • char ch = 'AB'; // Error, 문자는 한개의 문자만 저장 가능
  • 문자열
    • String s = "ABC"; // 문자열은 " " 쌍따옴표 사용
    • String s1 = "AB";
    • String s2 = new String("AB"); // String 클래스를 사용하여 값 대입
  • 번외
    • String s = "A"; // 문자 하나만 저장도 가능
    • String s ""; // empty String
    • char ch = ''; // ERROR;
  • 문자열 결합(왼쪽에서부터 오른쪽으로 진행하기에 순서에 따라 결과가 달라진다)
    • String s1 = "A" + "B"; // "AB"
    • String s1 = "" + 7; //"7"
    • String s1 = "" + 7 + 7; -> "" + "7" + 7 -> "7" + "7" -> "77"
    • String s1 = 7 + 7 + ""; -> 14 + "" -> "14"
    • 문자열 + any type -> 문자열
    • any type + 문자열 -> 문자열

05. 두 변수의 값 교환하기

  • int x = 10, y = 20;
    • x = y; // y의 값을 x에 저장
    • y = x; // x의 값을 y에 저장
      -> x = 20, y = 20 // 값을 서로 교환하기 위해서는 y의 값 또는 x의 값을 보존할 변수가 필요하다
  • int x = 10, y = 20, tmp;
    • tmp = x;
    • x = y;
    • y = tmp;
      -> x = 20, y = 10
profile
아직까지는 코린이!

0개의 댓글