국비 교육 내용 정리

2023년 05월 24일 공부 내용 정리 ( java~)

jinpark1992 2023. 5. 24. 16:53

=> 개인 노트북으로 복습!!!

* 수업 내용 백업 파일 업로드 하는방법

기존 파일 마우스 우클릭 COPY -> 바탕화면 붙여넣기 

-> 이클립스 실행 후 import project -> general -> 경로 선택 

위의 네모 체크해야함!

-> 우클릭 properties 을 해준후 resource 들어가서 경로 제대로 들어갔는지 확인

 

 

* 수업 요점

1. 언어이해 

2. 웹 이해 

3. 프로젝트 

 

* 설치 ( ~Spring 까지 갈 예정)

1. 이클립스 17  ( 최신꺼 다운받으면 스프링 가서 문제 생김)

- 2022-12월  윈도우 버전 다운로드

https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2022-12/R/eclipse-jee-2022-12-R-win32-x86_64.zip&mirror_id=1273

create a project 클릭-> java project 생성 -> project name 작성! -> create module 해제 -> 실행! 

-> 밑에 작업표시줄에 아이콘 고정 하기~

 

 

 

2.  jdk

 

 

★ 기억하랏

- 자바 저장 하는 공간은 워크 스페이스라고 함

- 자바는 시스템에 독립적이다.

인스턴스(주소) 에가면 클래스가 있다.

★인스턴스는 변수에 저장한다.

클래스 안에는 변수메소드가 있다.

1.클래스는 첫문자 항상 대문자 

2.변수와 메소드는 첫문자 항상 소문자

★자바의 자료형 

1. 기본자료형 (boolean,char,byte,short,int,long,float,double)// 배열전

: Value O

 

2. 참조자료형  // string 들어가면 사용~ 

: instance O

 

★ 소스의 위치

1. 기본적으로 자바는 src 밑에 있음

2. package 생성

3. class 생성 

4. main 은 main +  ctrl + space)임

 

★ 기본적으로  자바는 정수를(소수점x) 넣으면 기본적(리터럴)로 넣으면 int type 이 됨.

< - > 소수점o double

ex)1.float f1 =1.0 쓰면 안됨.. double 써야함 

해결책은   float f1 = 1.0f;

       2.        double d1 = 1.0; 

        3.       doubl3 d12 = 1;

 

 

ex) 어떤 플랫폼 썻어요? 

: open jdk 에서 17버전을 썼습니다~ 이클립스 00 versison을 썼고 웹은 톰캣(자바)을 썼습니다. 

  또한 파이썬의 웹 애플리케이션의 장고를 사용했습니다. 

 

- casting ? 형변환이라 한다.

 

* 코딩 실습 1

package ch02_var;

public class VarEx1 {

public static void main(String[] args) {

//변수의 선언 및 초기화

byte b1 = -22;

byte b2; // 변수의 선언. b2 저장공간 메모리 1바이트(8bit) 할당.

// 바이트로 저장할 수 있는 값의 범위. -128 ~ 127 저장가능

b2= -128; //변수의 초기화

b1=127;

short s1 = -220;

int il = 100;

long ll = 1000; //auto cating

 

 

System.out.println(b1);

 

 

 

 

}

}

 

출력값 : 127

 

 

package ch02_var;

public class VarEx1 {

public static void main(String[] args) {

//변수의 선언 및 초기화

byte b1 = -22;

byte b2; // 변수의 선언. b2 저장공간 메모리 1바이트(8bit) 할당.

// 바이트로 저장할 수 있는 값의 범위. -128 ~ 127 저장가능

b2= -128; //변수의 초기화

b1=127;

short s1 = -220;

int il = 100;

long ll = 1000; //auto cating

 

 

//System.out.println: 화면에 값을 출력.

System.out.println("b1=" + b1); // b1=-22

System.out.println("s1="+s1);

System.out.println("il="+il);

System.out.println("ll="+ll);

 

 

 

}

}

출력값: 

b1=127

s1=-220

il=100

ll=1000

 

 

package ch02_var;

public class VarEx1 {

public static void main(String[] args) {

//변수의 선언 및 초기화

byte b1 = -22;

byte b2; // 변수의 선언. b2 저장공간 메모리 1바이트(8bit) 할당.

// 바이트로 저장할 수 있는 값의 범위. -128 ~ 127 저장가능

b2= -128; //변수의 초기화

b1=127;

short s1 = -220;

int il = 100;

long ll = 1000; //auto cating

 

 

//System.out.println: 화면에 값을 출력.

System.out.println("b1=" + b1); // b1=-22

System.out.println("s1="+s1);

System.out.println("il="+il);

System.out.println("ll="+ll);

 

 

float f1 =1.0f;

 

double d1 = 1.0;

double d12 = 1d;

 

System.out.println("f1=" +f1);

System.out.println("d1=" +d1);

System.out.println("d12=" +d12);

/*

* 실수형 리터럴의 기본자료형은 double 임

* float 리터럴로 표시하기 위해서는 접미사를 붙여야 한다.

* F,f : float 리터럴

* D,d : double 리터럴

* L,l : long 리터럴

*/

 

 

}

}

출력값:

b1=127

s1=-220

il=100

ll=1000

f1=1.0

d1=1.0

d12=1.0

 

* 코딩 실습 2

 

용량 참고

 정수형 : byte, short, int, long
    
   정수형 datatype의 표현 가능한 범위
   - byte 변수명;  // -128 ~ 127
   - short 변수명;  // -32768 ~ 32767
   - int  변수명; // -2,147,483,648 ~ 2,147,483,647
   - long 변수명; // -9223372036854775808 ~ 9,223,372,036,854,775,807

  (long에는 대입하려는 데이터옆에 l혹은 L을 붙여도되고 생략 가능)
    
   실수형 : float, double


   실수형 datatype의 표현 가능한 범위
   - float 변수명; // 1.40129846432481707e-45 ~ 3.40282346638528860e+38

    (float에는 대입하려는 데이터옆에 f또는 F 붙여야하고 생략불가능
   - double 변수명; //4.94065645841246544e-324d ~ 1.79769313486231570e+308d

    (double에는 대입하려는 데이터옆에 d또는 D를 붙여도 되고 생략 가능)

 

-> 주의! double, long형은 데이터 뒤에 l,L,f,F를  생략가능함 

float형을 쓸 때는 반드시 데이터를 대입할 때 데이터 끝에 f또는 F를 붙여줘야 한다. 

 

 

 

 

<코드값> : 캐스팅은 마우스를 갖다대면 오토캐스팅 진행이됨!

 

 

 

package ch02_var;

public class VarEx2 {

/*

* 형변환 예제

* 큰자료형<=작은 자료형: 자동형변환

* 작은자료형 <= 큰자료형: 명시적 형변환

* byte(1) < short(2) < int(4) < long(8) < float(4) < double(8) char(2)

* A=B : 같다 의 의미가 아니고, 대입의 의미임.

* B의 값을 A에 입력함.

* left value(A) : 대입연산자의 왼쪽의 값. 반드시 변수여야함.

* right value(B) : 대입연산자의 오른쪽의 값, 변수, 리터럴, 수식 가능

*/

 

 

 

 

 

 

public static void main(String[] args) {

 

int a = 10;

char aa = 'a';

//1. 참조형과 기본형은 형변환 불가

String s = "a"; // " ":문자열,String, ' ':문자, char

// s = 'a'; // 참조형인 String 기본형인 char 형이 변환 불가.

// 2. 기본형 사이에 boolean을 제외한 7개는 서로 형변환이 가능함

byte b1 =(byte) 255; //byte가 255보다 용량이 작기때문에 (byte) 선언함, 마우스 대면 자동 변환됨!

int i1 = b1;

byte b2 =(byte) i1;

System.out.println("b1:"+b1+", i1="+i1);

 

byte b3 = 100;

System.out.println("b3=" + b3);

 

출력값:

 
 

b1:-1, i1=-1

b3=100

c2=￿

s1=65

charint=charint

 

 

<코드값>

package ch02_var;

public class VarEx3 {

public static void main(String[] args) {

// 정수(10) 리터럴은 int

// 실수(10.0) 리터럴은 double

byte b1 = 10;

short s1 = 20;

int i1 = 100;

long l1 = 1000;

i1 = b1; //int(4byte) <= byte(1byte) auto casting type

s1 =(short) l1; //auto casting type

float f = l1;

l1 = (long) f;

 

}

}

 

* 코딩 실습 3

 

<코드값>

package ch02_var;

public class VarEx4 {

public static void main(String[] args) {

System.out.println("합:"+1+2+3);          // 스트링은 기본형을 만나면 스트링값으로 바뀐다

System.out.println(1+2+3 + "합");        // 반대로 생각해보면 되겠지요?

String aaa = 111+""; //aaa가 기본형이고 111은 스트링값이다. 근데 111도 기본형이고 싶다 하면 뒤에 +"" 를 붙여 주면 된다!

 

}

}

 

<결과값>

합:123

6:합

 

 

 

* 코딩 실습4  ( 마이너스값 처리 방법)

<코드값>

package ch02_var;

public class VarEx6 {

public static void main(String[] args) {

 

byte b1 = -1;

byte b2 = -10;

byte b3 = -128;

System.out.println(b1+": "+Integer.toBinaryString(b1));

System.out.println(b2+": "+Integer.toBinaryString(b2));

System.out.println("9="+Integer.toBinaryString(9));

System.out.println(b3+":"+Integer.toBinaryString(b3));

System.out.println("127:"+Integer.toBinaryString(127));

}

}

 

 

<결과값>

 

-1: 11111111111111111111111111111111

-10: 11111111111111111111111111110110

9=1001

-128:11111111111111111111111110000000

127:1111111

 

 

<코드값>

public class VarEx77 {

 

public static void main(String[] args) {

        byte b1 =   (byte) 255;

int i1 = b1; //-1 

System.out.println("b1:"+b1+", i1="+i1);

char c1 = 'A';

short s1 =  (short) c1;

char c2 =  (char) b1;  //-1

System.out.println("b1="+b1);  //-1

System.out.println("c2="+c2);  //대입문자 없음

/*

*  1111111111111111  char : 2byte

* - 111111111111111

* =================

*                 0 

*                 보수 + 1 값은 1 이고 sign bit 1이여서 -1이 된다

*/

 

System.out.println("s1="+s1);  // A의 문자의 int 값

int charint = c2; // 1111111111111111 

System.out.println("charint="+charint+" , c2="+c2);

System.out.println("65535:"+Integer.toBinaryString(c2));

 

 

 

 

}

 

}

 

<결과값>

b1:-1, i1=-1

b1=-1

c2=￿

s1=65

charint=65535 , c2=￿

65535:1111111111111111

 

 

* 오늘의 퀴즈  

 

//1. 잘못된 문장을 골라내고 그 이유를 설명하시오.

package ch02_var;

public class ExVar01 {

public static void main(String[] args) {

char a='a';

char b="a";

String c="a";

String d='a';

char e='ab';

String f="ab";

char g = '';

String h = "";

 

 

 

}

}

 

 

<정답>

package ch02_var;

public class ExVar01 {

public static void main(String[] args) {

char a='a';

char b='a';

String c="a";

String d="a";

char e='a'; // 문자 한개만 가능함

String f="ab";

char g = 'a'; // 문자 한개만 가능함

String h = "";

 

 

 

}

}

 

 

//2. 잘못된 문장을 골라내고 그 이유를 설명하시오.

public class DataEx02 {

public static void main(String[] args) {

 

byte var1 = 128; 

short var2 = 128; 

int var3 = 128L; 

long var4 = 128L; 

float var5 = 123456.789123; 

double var6 = 123456.789123; 

 

}

}



<정답>

 

 

//3. 잘못된 문장을 고쳐서 에러가 발생하지 않도록 수정하시오.

public class DataEx03 {

public static void main(String[] args) {

byte var1 = 127;

short var2 = 128;

int var3 = 128;

long var4 = 128;

var4 = var1;

var1 =  var3;  

float var5 = 1.0;

double var6 = 1.0;

var5 =var6;

var6 = var5;



}

}

 

<정답>