JAVA/변수

5172 단어 JavaJava

1. 변수(Variable) 기본

: 메모리에 값을 기록하기 위한 공간 (하나의 바구니, 박스라고 생각하자!)
=> 어떤 값을 담기 위해 하나의 공간을 마련해두는 것

1) 프로그램 처리과정(입력 -> 출력 까지의 과정)

★ 메모리(RAM)라는 공간에 입력할 때 입력 값을 기록하기 위한 변수라는 바구니 만들어주기!

2) 변수를 사용해야만 하는 이유??

  1. 가독성이 좋음(우선적으로 값에 의미를 부여해놓고자하는 목적)
  2. 계속 재사용하므로 코드량 감소
  3. 유지보수 용이

※ 패키지 만들때 권장사항 : 세 단계로 만들어주는 것을 권장 (com.회사명.프로젝트명 또는 팀명) => 두번째 레벨까지는 주로 도메인의 역순으로(도메인은 고유한 이름, 패키지만 봐도 어디서 제작한 프로젝트인지 알 수 있음)

변수 사용 예시

 package com.kh.variable;
	public class A_Variable {
		public void printVariable() {
           	
            	int point = 100;
		int bonus = 10;
		int fees = 10;
		int personCount = 10;
		
		System.out.println(point + bonus);
		System.out.println((point + bonus) * personCount);
		System.out.println((point + bonus) * personCount - fees);
		System.out.println((point + bonus) * personCount / fees);
		
	}
            

3) 변수의 선언(변수 만드는 과정)

[표현법] 자료형 변수명 = 값;(변수 선언과 동시에 값을 대입 - 초기화하겠다)
※ 변수를 선언한 메소드 외에는 다른 메소드 영역에서 사용할 수 없음 : 지역변수

자료형이란? 변수의 크기 및 모양(어떤 값, 어느 정도 크기..)

변수 사용 예시

		// 1. 논리형
		boolean isTrue = false;
		
		// 2_1. 숫자형(상수형)
		byte bNum = 1; 
		short sNum = 2;
		int iNum = 4;
		long lNum = 8L;
		
		// 2_2. 숫자형(실수형)
		float fNum = 4.0f;
		double dNum = 8.0;
		
		// 3. 문자(한글자)형
		char ch = 'c';
		
		// 참조자료형
		// 4. 문자열
		String str = "저에욥";

4) 변수 네이밍 규칙

1) 변수명 중복불가
2) 대소문자는 구분
3) 변수명은 기존 프로그래밍언어의 내용으로 해서는 안됨.
4) 숫자로 시작하면 안됨.
5) 특수문자는 _ $ 만 허용

2. 사용자에게 값 입력 받기

: 자바 자체에 있는 메소드 : java.util.Scanner 를 사용해야 함

1) Scanner 메소드를 불러오는 방법

(1) java.util이라는 패키지에 존재하는 클래스를 먼저 생성해주기 (Scanner sc = new Scanner();)
★ "객체 생성"(즉, Scanner 클래스에 있는 것을 사용하려면 Scanner 객체를 생성해주어야 함!)
(2) import 해주기 (다른 패키지에 있는 것 가져오기)
(3) Scanner sc = new Scanner(System.in) => System.in(사용자에게 입력 받는다는 매개변수 호출)
: 입력 받은 값을 바이트 단위로 받아들이겠다.

사용 예시

// (1) 사용자에게 값을 입력하라고 유도

System.out.print("당신의 이름은 무엇입니까 : ");
	
// (2) 사용자가 입력한 값을 문자열로 받아오고 동시에 변수 선언하기
(sc.next() -> 단어 하나만, sc.nextline()-> 한 줄 읽어옴)

String name = sc.nextLine();

// (3) 입력한 값을 출력해보기
System.out.pritln(name);
 - 정수 : sc.nextInt();
 - 실수 : sc.nextFloat(); sc.nextDouble();
 - 문자열 : sc.next();-> 띄어쓰기 불가,  sc.nextLine(); -> 띄어쓰기 가능, 줄 구분까지 저장
 - 문자하나 : sc.nextLine().charAt(문자 순번 = 인덱스); : 문자 하나만 가져옴
  • sc.nextLine(); 특징
    : 입력 -> 입력버퍼(대기장소) -> 메모리 이렇게 보내는 것이 원리임 (버퍼는 임시저장소)
    버퍼에서 값을 가져온 후 "엔터"를 비워주는 역할 수행

<->
그 외의 next~~ : 버퍼에서 값을 가져오고 끝냄("엔터"를 비워주지 않으므로 "엔터"가 여전히 남아있어서 이후 sc.nextLine을 다시 실행하면 그 엔터 값을 가져와버림.

해결 법 : next메소드와 nextLine 사이에 nextLine 하나 추가해주는 방법(키와 주소 사이에 nextLine 하나 추가해주기)

3. 상수(Constant)

: 변하지 않는 값을 담아두어 ★변경 불가(고정인 값)

[표현법] final 자료형 변수명(대문자) = 값;

4. 형변환(Casting)

: 값의 자료형을 바꾸는 것 (Boolean 제외)

컴퓨터에서 값 처리 원칙

1) 같은 종류 자료형만 대입 가능
2) 같은 종류 자료형만 계산 가능
3) 계산의 결과도 같은 종류의 값이여야 함
-> 이런 원칙 3가지가 지켜지지 않을 경우 형변환 필요!

1) 자동 형변환

: 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 반환!

단, byte와 short 자료형 값의 계산결과는 무조건 int로 처리

  • 아스키코드(0~127, 영문/숫자/특수문자), 유니코드(0~65xxx, 영문/숫자/특수문자/한글)로 문자마다의 고유 숫자가 있음!
  • char ch = 65; 라면 65코드에 맞는 문자가 출력
  • int num = 'A';라면 A코드에 맞는 숫자가 출력

2) 강제 형변환(명시적 형변환)

: 큰 크기의 자료형을 작은 크기의 자료형으로 바꾸는 것
-> 강제 형변환 시 '데이터손실'이 발생할 수 있음(손실 감수하고 강제변환)
(실수형정수형으로 강제형변환 시 데이터 손실 발생할 수 있음)

[표현법 예시] double num1;
int num2 = (int) num1;

강제형변환 응용
  int iNum = 10;
  double dNum = 5.89;
		
		
	// (int를 자동형변환 doubel로)10.0 + 5.89 => 15.89 iSum을 int 형이 아닌 double형으로
	// 해결방법 1. 수행 결과를 int형으로 강제형변환
	int iSum2 = (int)(iNum + dNum);
	System.out.println(iSum2);
    		
	// 해결방법 2. dNum값만 int 형으로 강제형변환
	int iSum3 = iNum + (int)dNum;
	System.out.println(iSum3);
		
	// 해결방법 3. 그냥 연산결과를 double로 담기(강제형변환 안됨)
	double iSum1 = iNum + dNum; 
	System.out.println(iSum1);

기타 내용

※ 출력메소드 printf문

[표현법] System.out.printf(%형식, 변수);

<형식>

  • %d: 정수형, %o: 8진수, %x: 16진수
  • %c: 문자, %s: 문자열
  • %f: 실수(소수점 아래 6자리), %e: 지수형태표현, %g: 대입 값 그대로
  • %A: 16진수 실수
  • %b: 논리형

<정렬방법>

  • %5d: 5칸을 확보하고 오른쪽 정렬
  • %-5d: 5칸을 확보하고 왼쪽 정렬
  • %.2f: 소수점 아래 2자리까지만 표시

※ 변수와 메모리 구조

※ escape 문자(빠져 나가는 문자)

좋은 웹페이지 즐겨찾기