[Day +2] 이클립스 기본 설정, 변수, 자료형, Scanner 사용법
210624 목
Chapter1. 이클립스 사용
1. 기본 설정
-open perspective => JAVA로 변경 -원래 Java EE가 디폴트 값이지만 여기서는 Java로 구동

2. 기본창
-package explorer과 navigator ⇒ 왼쪽
-console ⇒ 하단

3. 저장 위치
-src ⇒ .java 파일 생성
-bin ⇒ .class로 변환되어 나타남
src : 사람이 읽는 파일 .java 파일
bin : 컴퓨터가 읽는 파일 .class 파일
4. 수업 요약
1) 메소드 경로 → 클래스 → 메소드
package com.kh.first;
//경로를 적는다
//형식 : pakage 경로
public class A_MethodPrinter {
//class를 적는다
//형식 : public class 클래스명(지정해둔 폴더명을 의미)
public void methodA() {
//메소드를 적는다
//형식 : public void 메소드명(임의 지정)
System.out.println("Method A가 호출 되었어요!");
methodB();
}
//System.out.println(" ") => 이 값을 출력해주세요.
//println : 개행, 즉 들여쓰기가 포함된 문법
public void methodB() {
System.out.println("Method B가 호출 되었어요!");
methodC();
}
public void methodC() {
System.out.println("Method C가 호출 되었어요!");
}
}
package com.kh.run;
import com.kh.first.A_MethodPrinter;
public class RunA {
public static void main(String[] args) {
A_MethodPrinter a = new A_MethodPrinter();
//형식 : 클래스명 사용이름 = new 클래스명();
//But, 다른 경로에서 불러오는 경우 경로를 앞에 직접 입력하든지 or import처리를 해줘야 한다.
//예) com.kh.first.A_MethodPrinter a = new com.kh.first.A_MethodPrinter();
a.methodA();
//형식 : 사용이름.사용할메소드();
}
}
-자바 실행 class안에는 메인 메소드를 포함한 클래스가 반드시 하나 이상 있어야 함
-입력하는 공간, 구현하는 공간이 분리되어 있음
*명명규칙
1) package : 소문자로 시작
2) class : 대문자로 시작
3) method : 소문자로 시작
*카멜 표기법(camel : 낙타 울룩불룩)
: 여러 개의 단어가 있을 때는 각 단어의 앞자리는 대문자로 표기
-문자 : 한 개
-문자열 : 여러 개
Chapter2.
1. 변수 variable = 공간 : 메모리에 값을 기록하기 위한 공간
Q. 왜 변수에 값을 기록해야 하나?
A. 계산기 프로그램을 만듦. 5+5, 10-2를 실행하고 싶음. 이 값들을 어딘가에는 담아 놔야 결과값을 만들어낼 수 있기 때문에 변수(공간)이 필요하다
1) 컴퓨터 처리 과정
키보드 → 입력 버퍼 → 메모리에 기록(입력 값 기록) → CPU가 연산 처리 → 메모리에 기록(계산 결과 값 기록) → 출력 버퍼 → 출력 장치에 출력
2) 변수를 사용했을 경우 vs 안 했을 경우
(1) 가독성이 좋아짐
(2) 재사용성 증가로 인한 코드량 감소
(3) 유지보수 용이
3) 변수와 관련된 단어
(1) 변수를 선언한다 = 공간을 만든다
: 메모리 공간에 데이터를 저장할 수 있는 공간을 할당하는 것
형식) 자료형 변수명 ; 변수타입 지정 변수명 지정
(2) 값 대입
: 생성한 변수에 값을 대입하는 것
int age;
age = 10(0101010010 이진법으로 들어가는 것);
age = 20;(10이 20으로 고쳐짐)
*변수는 한 개의 데이터만 보관, 마지막에 대입한 값만 보관
(3) 리터럴 : 변수에 대입되는 값 자체
short s = 23767;
double d = 3.14;
char c= 'A';
String str = "ABC";
(4) 변수의 초기화 처음으로 값을 대입하는 행위
1> 선언 후 초기화
int age;
age = 100;
2> 선언과 동시에 초기화 int age = 100;
4) 변수의 명명 규칙
(1) 관례
-소문자로 시작, 카멜 표기법으로 뒷 단어는 대문자로 시작한다.(관례)
(2) 필수
1> 대소문자가 구분되며 길이 제한이 없다.
2> 예약어를 사용하면 안 된다. 예) double, long, byte, void
3> 숫자로 시작하면 안 된다. 예) age1 가능, 1age 불가능
4> 특수문자는 _와 $만 허용한다.
*자료형

1) 논리형
(1) boolean 부리언(불리언) : 트루, 펄스 값 표현 1byte
2) 문자형
(1) char 차(캐릭터의 줄임말) : 문자값 표현 2byte
(2) String 스트링 : 문자열값 표현
3) 숫자
(1) 정수형
1> byte : 1byte
2> short : 2byte
3> int : 4byte(기본값)
4> long : 8byte / 예) 1242423542351232112
*숫자가 커질 수록 표현할 수 있는 숫자가 많아진다. why? CPU가 데이터를 처리할 때 일정한 기준이 필요하기 때문
**하나의 비트 안에 숫자를 넣을 수 있음. 비트가 8개 모이면 바이트가 됨
(2) 실수형
1> float : 4byte
2> double : 8byte(기본값)
*float와 double의 차이는 정확도!

1) 변수 선언
입력
package com.kh.variable;
public class A_variable {
public void declareVariable() {
//1. 변수를 선언한다 => 메모리에 공간을 할당한다
// 형태 : 자료형 변수명;
//변수명은 항상 소문자로 시작하며 여러 단어로 되어 있는 경우 첫 문자 대문자로 한다 => 카멜 표기법
boolean isTrue;
byte bNum;
short sNum;
int iNum;
long lNum;
float fNum;
double dNum;
char ch;
String str;
isTrue = true;
bNum = 1;
sNum = 2;
iNum = 4;
lNum = 8l;
fNum = 4.0f;
dNum = 8.0;
ch = 'A';
str = "ABC";
System.out.println("isTrue의 값 : " + isTrue);
System.out.println("bNum의 값 : " + bNum);
System.out.println("sNum의 값 : " + sNum);
System.out.println("iNum의 값 : " + iNum);
System.out.println("lNum의 값 : " + lNum);
System.out.println("fNum의 값 : " + fNum);
System.out.println("dNum의 값 : " + dNum);
System.out.println("ch의 값 : " + ch);
System.out.println("str의 값 : " + str);
}
실행
package com.kh.run;
import com.kh.variable.A_variable;
import com.kh.variable.B_KeyboardInput;
public class Run {
public static void main(String[] args) {
A_variable var = new A_variable();
var.declareVariable();
//var.initVariable();
B_KeyboardInput kbi = new B_KeyboardInput();
kbi.inputScanner1();
}
}
2) 변수 선언2
위에 문법에 이어서 시작
public void userVariable() {
int number;
int Number; //위의 변수와 아래의 변수는 대소문자가 다르기 때문에 다른 변수 취급
//int true; => 예약어 사용 불 가 넝
//int false;
int age1;
//int 1age; => 시작을 숫자로 하는 것 불가능
int number_1;
int number$2;
//int number#3; => _, $ 이외의 특수문자 사용 불가넝
String username; //관례상 틀림
String userName; //관례상 맞는 표현(카멜 표기법)
String 이름;
//한글로 변수명 작성 가능하나 한글을 사용하지 않는 환경에서는 오류를 발생시킬 가능성이 있어서 잘 사용하지 않음
//String str = "기차" + 123 + 45 + "출발";기차12345출발
//String str = 123 + 45 + "기차" + "출발"; => 168기차출발
3) Scanner
*실습 문제에 나올 수 있음.
**작업명은 한글말고 영어 값으로 지정하는 습관 들이기
*java.util.Scanner ⇒ 유용한 메소드가 많이 포함되어 있음
입력
package com.kh.variable;
import java.util.Scanner;
//메소드 = 기능이라는 뜻
public class B_KeyboardInput {
public void inputScanner1() {
//java.util.scanner라는 클래스를 이용
//Scanner 클래스가 가진 메소드를 통해 사용자로부터 키보드 입력 하기
Scanner sc = new Scanner(System.in);
//java.util.Scanner에 만들어져있음.
System.out.print("당신의 이름은 무엇입니까 : ");//println으로 하지 않았다..
//String name = sc.next(); // 사용자의 문자열을 읽어 온다, but 공백 이전의 값만 읽는다
String name = sc.nextLine();
//공백까지도 읽어올 수 있다. 사용자가 입력한 한 줄에 대한 모든 정보를 읽어올 수 있음.
//입력 값에 공백이 포함될 여지가 있다면 nextLine 메소드를 사용해야함.
System.out.print("당신의 나이는 몇 살입니까 : ");
int age = sc.nextInt();
System.out.print("당신의 키는 몇입니까(소수점 첫째 자리까지 입력) : ");
double height = sc.nextDouble(); // => 사용자가 입력한 실수에 대한 값 읽어옴
System.out.println(name + "님은 " + age + "세이며 키는 " + height + "cm입니다.");
}
}
실행
package com.kh.run;
import com.kh.variable.A_variable;
import com.kh.variable.B_KeyboardInput;
public class Run {
public static void main(String[] args) {
A_variable var = new A_variable();
//var.declareVariable();
var.initVariable();
B_KeyboardInput kbi = new B_KeyboardInput();
kbi.inputScanner1();
}
}
<명령어 정리>
-ctrl +- : 확대, 축소
-ctrl + f11 : 재생
-// 주석 : 코드에 대한 설명이나 그 외 다른 정보를 넣을 때 사용 ⇒ 컴파일 시 컴파일러가 주석 부분은 건너 뜀
-/**/ 여러줄 주석 방법
-이름 앞에 * : 수정사항이 생겼다는 뜻 ⇒ ctrl + s로 저장하기 문법 정리