웹개발 수업/JAVA

[Day +2] 이클립스 기본 설정, 변수, 자료형, Scanner 사용법

Chole Woo 2021. 7. 11. 19:53
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로 저장하기 문법 정리

댓글수3