본문 바로가기

programming/Gukbi

국비 교육 2일차

728x90
반응형

근데 뭐 2일차인게 중요한것도 아니고 다음부터는 배운 내용을 제목으로 해야겠다. 

 

일단 오늘은 배운 내용을 정리해보자면

데이터 형과 변수에 대해서 배웠다. 

 

당연히 다 아는 내용일거라 생각했지만 

내가 대충 알고 넘긴것보다 훨씬 자세하게 배워서 좋았다. 특히 데이터 타입별로 저장될 수 있는 크기가 다르기 때문에 

변수를 지정할 때 꼭 데이터 형을 써주는거란걸 알게 됐다. 

 

그냥 정수는 int, 실수는 double이라고 외우는 것 보다 훨씬 깊게 알게된 느낌. 

 

/*
 * 프로젝트 명칭 (문법 X) => 본인이 찾기 쉽게 설정 
 * 변수, 클래스명 명칭법
 * 1. 알파벳, 한글로 시작 (알파벳 사용시 => 대소문자 구분)
 * 	  웹프로그램에서는 한글 사용시 인식을 못할 수 있다 (권장사항 : 알파벳)
 * 2. 이름의 길이는 제안하지 않는다 (5~10)
 * 	  의미를 줘서 저장하기
 * 3. 숫자 사용 가능 (맨 앞에 오는 것은 불가능)
 * 	  2a, 3a (X)/ a1, a1b (O)
 * 4. 특수문자 : $, _만 사용가능
 * 5. 키워드 (자바에서 이미 사용중인 단어)는 사용할 수 없다 (색상이 빨간색)
 *  
 *   ~오늘의 목표~
 * 	1. 변수
 * 	2. 데이터형
 *  3. 연산자 일부 (단항, 이항, 삼항) : 보류
 *  
 *  책 page 20 
 *  1. 09시-13시 => 기본 문법 (책)
 *  2. 14시-17시 => 응용 
 *  3. 18시 (문제풀이)
 *  
 *   변수 : 변하는 수 (값을 변경해서 사용할 수 있다.)
 *    => 한개의 데이터 저장할 수 있는 공간
 *    => 저장 : 컴퓨터에 명령을 내린다
 *    	1. 데이터 저장 크기를 설정
 *    		(1byte, 2byte, 4byte, 8byte 중에서 어디에 저장할지 설정해야함)
 *    	2. 어디에 저장되는지 알 수 없음
 *    		-> 저장된 위치에 이름을 부여함 
 *    	3. 값을 첨부 (초기화)
 *    	4. 가공 
 *    => 메모리 크기(데이터형, 자료형)
 *    	 사용법 : 데이터형 (메모리 크기), 변수형 = 값
 *    			ex) int a = 100
 *     
 *     자바에서 제공하는 데이터형 (한 개의 데이터만 저장이 가능 -> 저장 메모리의 위치 : 변수)
 *     - 기본 데이터형
 *     	 정수형 
 *     		byte (1byte) : -128 ~ 127
 *     		short (2byte) : -32768 ~ 32767
 *     		int (4byte) : 24억까지 (default)
 *     		long (8byte) : 24억 이상의 숫자 / 데이터를 저장할떄 'L'자를 붙여야함
 *     					   long, int -> 숫자(l, L)
 *     	 실수형 
 *     		float (4byte) : 10.5F(f)
 *     		doulbe (8byte) : 10.5 / defualt 값 /10.5(d) (생략하고 씀)
 *     
 *       문자형
 *       	char (2byte) : 한 글자만 저장, 0~65535번까지 번호가 매겨질 수 있음
 *       				   외국어 전체, 영문, 한글, 특수문자 사용가능 
 *       논리형
 *       	boolean (1byte) : true, false만 저장이 가능
 *       
 *     - 참조형 데이터형 
 *       클래스 (원하는 데이터형이 없는 경우 : 20byte->사용자 정의) class
 *       배열
 *  
 * 
 * */
public class 변수_1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//1byte 메모리 공간에 정수 100을 저장한다
		byte a = 100;
		//byte : 메모리 크기, a : 변수, =100 : 초기화 
		/*
		 *  변수를 설정
		 *  메모리 크기결정 (데이터형 중에 한 개 설정)
		 *  변수명 설정
		 *  초기값 부여
		 *  
		 *  왼쪽편에 있는 데이터형이 크거나 같으면 대입이 가능
		 *  long = int 값, byte 값, short 값, long 값
		 *  int = int, byte, short
		 *  short = short, byte
		 *  byte = byte
		 *  
		 *  int가 디폴트 (데이터형을 설정하지 않은 상태에서 정수를 사용하면 모든 숫자는 int로 인식한다)
		 *   
		 */
		
		/*실수 : 평균, 통계, 건축 등의 분야에서 사용됨 (float, double) -> 일반 실수는 double을 인식
		 * 100.5(double), 모든 실수는 double이 default 값
		 */
		
		// 실수(4byte) 메모리 공간을 만들고 10.5를 저장해라
		float floatValue=10.5f;
		
		//문자 저장 : 문자한개 저장, 문자 여러개 저장
		char charValue = 'A';
		String stringValue="ABCDEFG";
		
		//논리형 -> 조건문, 반복문
		//true/false 저장하는 방법
		boolean booleanValue = true;
		
		//선언하는 방식, 초기값을 설정 -> 변수 (변경해서 사용하는 방법)
		//변수 : 변경해서 다시 사용이 가능
		//상수 : 변경할 수 없는 값
		
		char c = 'B'; // 변수
		c = 'D';
		final char d = 'C'; // 상수
		
		
	}

}

수업들을땐 이렇게 정리했는데 정말 가독성이 떨어지는 관계로 그냥 다시 정리겸 타자를 쳐보겠다. 

 

변수 : 변하는 수 (값을 변경해서 사용할 수 있다.)

-> 한개의 데이터를 저장할 수 있는 공간

-> 저장 : 컴퓨터에 명령을 내리는 것

 

1. 데이터 저장 크기 설정

- 1byte, 2byte, 4byte, 8byte 중에서 어디에 저장할지 설정해야한다. 

 

2. 어디에 저장될 것인지 

- 저장된 위치에 이름을 부여한다. 

 

3. 값을 첨부한다. (초기화)

ex) int a = 100;  이라고 한다면 a 변수는 100이라는 초기값을 갖게 된다. 

 

4. 가공

메모리 크기 (데이터형, 자료형)

사용법 : 데이터형 (메모리 크기), 변수형 = 값

ex) int a = 100;

 

 

자바에서 제공하는 데이터형 (한 개의 데이터만 저장이 가능 -> 저장 메모리의 위치 : 변수)
      - 기본 데이터형


        정수형 
       byte (1byte) : -128 ~ 127
       short (2byte) : -32768 ~ 32767
       int (4byte) : 21억까지 (default)
       long (8byte) : 21억 이상의 숫자 / 데이터를 저장할떄 'L'자를 붙여야함
          long, int -> 숫자(l, L)


        실수형 
       float (4byte) : 10.5F(f)
       doulbe (8byte) : 10.5 / defualt 값 /10.5(d) (생략하고 씀)
       
        문자형
         char (2byte) : 한 글자만 저장, 0~65535번까지 번호가 매겨질 수 있음
            외국어 전체, 영문, 한글, 특수문자 사용가능 


        논리형
         boolean (1byte) : true, false만 저장이 가능
         
      - 참조형 데이터형 
        클래스 (원하는 데이터형이 없는 경우 : 20byte->사용자 정의) class
      

 

/*
 * 정리 
 * 	기본형 데이터
 * 		1byte 	2byte 	4byte 	8byte
 * =======================================
 * 정수	byte	short	int 	long
 * 						default
 * 						System.out.println(100) 
 * 								   컴퓨터에서는 int로 인식
 * 						-> int와 long구분 l(L) 붙이기
 *============================================
 * 실수 					float  	double
 * 								default
 * 								System.out.println(10.5)
 * 										   컴퓨터에서는 double로 인식
 * 								->float와 double구분 f(F) 붙이기
 * ===========================================
 * 문자			char
 * ===========================================
 * 논리 boolean
 * ===========================================
 * 
 * */
public class 변수_2 {

	public static void main(String[] args) {
		/* 변수 설정
		 * 정수 (4byte)를 저장한 100으로 저장 */
		int x = 100; // 초기값
		//왼쪽으로 5만큼 이동
		x=95; //값이 변경됨
		x=90; //값이 또 변경됨 
		System.out.println("x="+x);
		 
		 /* 변수의 값을 변경 (가공-> character가 이동 ->x,y)
		 * 변경된 값을 출력
		 * */
		
		char c = 'A';
		// 'A'를 저장 -> 'A'를 'B'로 바꾼다
		c='B'; // c라는 메모리 공간에는 최종값이 저장된다. 
		System.out.println("c="+c);
		
		//변수는 반드시 초기값을 대입한다. 
		//4byte 정수를 3개 만들고 100, 200, 300을 저장
		int a = 100;
		int b = 200;
		int d = 300;
		
		//이렇게 한 번에 선언도 가능함
		int e=100, f=200, g=300;
		
		/*
		 * 1. 선언(변수설정)
		 * 	- 선언과 동시에 초기값을 대입
		 * 		int a = 100; // default
		 *  - 선언을 하고 나중에 초기값을 대입
		 *  	int a; //입력값을 받거나 외부에서 데이터를 가지고 올때. 난수발생
		 *  	a=100;
		 * */
		
		int k;
		k=500;
		//설정된 데이터를 출력
		System.out.println("a="+a+"b="+b+"d="+d+"k="+k);
		
		//실수
		float F = 10.9F; // float f = (float) 10.9; -> 형변환
		// UP Casting (데이터형 커짐), Down Casting (데이터형 작아진다)
		// 프로그램이 어려워짐 , 결과는 같지만 개발자마다 소스코딩이 다르기 때문에
		
		//기억
		double w = 100;
		// 100 -> 자동으로 100.0
		int u ='A'; // u = 'A' (X) u=65 (정수로 변경한 결과)
		System.out.println("u="+u);
		System.out.println("w="+w);
		
		/* 데이터형의 크기
		 * ==========
		 * byte < short, chat < int < long < float < double
		 * 정수보다는 실수가 크다
		 * = 메모리 크기로 설정하는 것이 아니라 숫자를 표현할 수 있는 갯수
		 * 1
		 * 1.000000
		 * 1.0000000000000
		 * */
		
		System.out.println("byte의 최소값 : "+Byte.MIN_VALUE);
		System.out.println("byte의 최대값 : "+Byte.MAX_VALUE);
		
		System.out.println("int의 최소값 : "+Integer.MIN_VALUE);
		System.out.println("int의 최대값 : "+Integer.MAX_VALUE);
		
		System.out.println("long의 최소값 : "+Long.MIN_VALUE);
		System.out.println("long의 최대값 : "+Long.MAX_VALUE);

귀찮은 관계로... 그냥 이렇게 첨부하겠다. 

 

결국 핵심은 변수에 지정해줄 데이터의 크기에 따라 데이터 형이 달라지고 (byte, short, int long/ float, double)

정수와 실수의 default 값은 각각 int/double 이라는거. 

 

이게 내가 int 와 double만 알고 있었던 이유라는걸 오늘에서야 알게 됐다. 

 

 

public class 변수_3 {

	public static void main(String[] args) {
		
		//두개의 변수 x=10, y=20
		int x = 10;
		int y = 20;
		x=y; // y가 가지고 있는 정수값을 x에 대입 , x=20
		System.out.println(x); // 20
		System.out.println(y); // 20
		
		y=x; 
		System.out.println(y); // 20
		
		
		
		//국어점수, 수학점수, 영어점수 -> 점수를 저장한 후에 출력
				// 국어, 영어, 수학, 총점, 평균 출력한다.
			int kor = 90;
			int eng = 99;
			int math = 100;
			
			System.out.println("총점 : "+(kor+eng+math)); // 괄호를 쓰면 먼저 계산됨
			System.out.println("평균 : " + (kor+eng+math)/3);
	
			// 정수/정수 = 정수 -> 5/2 -> 2  
			System.out.println(5/2);
			
			char c = 'A'; //65
			char d = 'B'; //66
			System.out.println(c+d); //131
			
			String s = "A";
			String s1 ="B";
			System.out.println(s+s1); // "AB"
			
			
			/*
			 *  any타입+문자열 = 문자열 -> 10+"a" === "10a"
			 *  					  "a"+10.0 === "a10.0"
			 *  : 어떤 데이터형이든 상관 없이
			 */
			
			System.out.println((float)(10/3.0));
			System.out.printf("%.2f", 10/3.0); // 소수점 2자리 수만 출력됨
			System.out.printf("%.1f\n", 10/3.0); // JDK 1.5 이상에서 새로 등장한 기능, C언어에서 가져옴
			//exe파일 -> 배포
			/*
			 *  서식이 있는 출력 
			 *  사용기호
			 *  %d : 정수
			 *  %c : 문자
			 *  %s : 문자열
			 *  %f : 실수 
			 * 
			 * 
			 *  특수기호
			 *  \n : new Line (다음줄에 출력) 
			 *  \t : tab (일정 간격 띄움)
			 * 
			 */
			
			System.out.printf("%d\n", 100);
			System.out.printf("%s\n", "Hello");
			System.out.printf("%c\n", 'C');
			
			System.out.printf("%5d%5d%5d", 100,80,70);
			/*
			 *  %5d (오른쪽부터)
			 *  다섯 칸을 가져오고, 오른쪽에서부터 입력된 숫자가 채워지게 해줌
			 *  000000000000000
			 *    100   80   70
			 *  %-5d (왼쪽부터)
			 *  
			 */
			
			
			
	}
		
	
}

 

역시 이미 알고 있었던 부분도 있었고, 새로 알게된 부분도 있었다. 

sysout + ctrl + space 를 치면 자동으로 뜨던 System.out.println 도 사실은 많은 출력 메소드 중에 default 였다는것

 

ln - > new line 이라는 뜻이라서 이렇게 쓰면 결과값이 한간 띄우고 떴던것. 

 

System.out.printf 도 있다. 

 

printf 는 서식이 있는 출력으로, (    ) 안에 ("서식", 값)을 써줘야 한다. 

ex) System.out.printf("%..2f", 10/3.0); // 3.33

라고 써주면 소수점 두자리 까지만 출력된다 

 

* 줄바꿈 하고 싶으면 역슬래쉬+n 붙여 줘야함

 

 

사용기호
   %d : 정수
   %c : 문자
   %s : 문자열
   %f : 실수 

 

특수기호
   \n : new Line (다음줄에 출력) 
   \t : tab (일정 간격 띄움)
  

 

 

특히나 숫자를 써줄때 %6, %5 와 같은 표시는 

만약 %5라면은 다섯 칸을 가져오고, 오른쪽에서부터 입력된 숫자가 채워지게끔 지정하게 한다. 

%-5는 왼쪽부터 지정된다. 

5칸을 가져온다는걸 세련된 언어로 바꾸면 '5개의 출력공간을 확보한다' 라고도 쓸 수 있다. 

 

 

다음은 Scanner 기능

// Scanner : 키보드 입력값을 받아서 메모리에 저장
//BufferedReader : 예외처리
// Scanner를 사용하기 위해서는 반드시 클래스를 불러 온다
// 이미 만들어진 클래스를 읽어올때 사용 : import

import java.util.Scanner;
/*
 *  import : 자바 
 *  include : C
 *  using : C#
 *  Kotlin : import (자바)
 */
public class 변수_4 {

	public static void main(String[] args) {
		//Scanner를 사용하는 방법
		Scanner scan = new Scanner(System.in);
		// new : 메모리 할당, System.in - 키보드 입력값
		// System.out.print("정수 입력 : ");
		// 키보드로 입력한 정수를 저장 
		// int input = scan.nextInt();
		// System.out.println("키보드 입력값 : "+input);
		// 뭔가 엑스형 명대사 기능에 쓸 수 있을 듯한?
		
		int kor, eng, math; 
		System.out.print("국어 점수 입력 : ");
		kor=scan.nextInt();
		System.out.print("영어 점수 입력 : ");
		eng=scan.nextInt();
		System.out.print("수학 점수 입력 : ");
		math=scan.nextInt();
		
		//결과값을 출력
		System.out.println("총점 : " + (kor+eng+math));
		System.out.printf("평균 : %.2f", + (kor+eng+math)/3.0);
		// 사용자로부터 입력값을 받아서 처리 Scanner
		// 초기값 -> 임의로 지정 int kor = 80, 입력값을 받아서 사용 Scanner, 난수 
		
		/*
		 * System.out.println : \n 포함 (기본)
		 * System.out.print : \n 미포함 
		 * System.out.printf : 소수점 출력이 필요할때 
		 */
		
		/*
		 *  2.입력
		 *  Scanner - 키보드 입력값을 받는 경우에 주로 사용
		 *  //Scanner - 클래스
		 *  =import java.util.Scanner
		 *  : Scanner 를 저장
		 *  	*** 클래스를 저장할 시에는 반드시 new를 사용해서 저장
		 *   Scanner scan = new Scanner(System.in)
		 *   - 입력후
		 *   **scan.nextInt() -> 정수를 입력 했을때
		 *   **scan.next() -> 문자열을 입력했을 경우
		 *   scan.nextDouble() -> 실수를 입력했을 때
		 *   scan.nextBoolean() -> true/false 
		 */
	}

}

 

Scanner는 화면으로 부터 값을 입력받는 기능이다. 정말 처음봤다. 

그래서 배울때 신기했는데, 다 배우고나니 처음본 이유가 있었다. 

별로 필요가 없는 기능이었다....!!

 

****아니다 내가 java 프로젝트에서 수익금 계산기를 만들려고 애를 썼을때 값을 직접 입력해주고 싶었었는데, 이 Scanner를 이용하면 괜찮은 계산기를 완성할 수 있을 것 같다. 

=> 반드시 오늘 안에 수정하겠다. 

 

여튼 Scanner를 사용하기 위해서는 

import java.util.Scanner 를 써줘야한다.

 

그 다음엔 Scanner 클래스의 객체를 생성한다. 

Scanner scan = new Scanner (System.in)

// new : 메모리 할당, System.in 은 키보드 입력값을 받겠다는 뜻이다. 

 

값은 scan.nextInt() - 정수, scan.next() - 문자열 , scan.nextDouble() - 실수, scan.nextBoolean() - 논리연산자 

의 형태로 입력해 주면 된다. 

 

***내 수익금 정산기의 경우에는

달러와 원화를 동시에 입력 받아야 하기 때문에 int, double의 값을 둘다 사용해야한다. 

 

지정후에는 println 이나 printf를 사용해서 값을 출력하면 끝이다. 

 

 

오늘의 복습 끝

 

 

 

 

 

 

728x90
반응형

'programming > Gukbi' 카테고리의 다른 글

국비 교육 5일차 - 조건문  (0) 2020.12.31
국비 교육 4일차 - 연산자, 제어문  (0) 2020.12.28
국비 교육 3일차 - 연산자  (0) 2020.12.26
국비 교육 3일차 - 형 변환  (0) 2020.12.26
국비 교육 1일차  (0) 2020.12.22