4/28 - 4/30

목표: Ch 03 객체 지향 핵심 05 ~ 09

완료: Ch 03 객체 지향 핵심 05 ~ 08

 

이번주 자바강의 소감

매서드 중요하면서도 아직도 막연하다. 설명을 들을때는 이해가 가지만 금방 까먹는다. 도대체 언제 제대로 내 것으로 만들 수 있을지.. 하지만 볼때마다 조금씩은 점점 이해가 더 잘 된다는 작은 보람이 있다.

다형성(polymorphism)은 클라스를 override를 사용하여 더 다양하게 사용할 수 있다. 이번 자바강의의 가장 큰 소득은 업캐스팅과 다운캐스팅 이었다. 이것도 볼 때마다 돌아서면 까먹는데 이번엔 좀 더더 확실히 이해가 됐다. 

 

 

 

Ch 03 객체지향 프로그래밍

 

5. 메서드 재정의와 가상 메서드 원리 

메서드는 어떻게 호출되고 실행 되는가?

  • 메서드(함수)의 이름은 주소값을 나타냄
  • 메서드는 명령어의 set 이고 프로그램이 로드되면 메서드 영역(코드 영역)에 명령어 set이 위치
  • 해당 메서드가 호출 되면 명령어 set 이 있는 주소를 찾아 명령어가 실행됨
  • 이때 메서드에서 사용하는 변수들은 스택 메모리에 위치 하게됨
  • 따라서 다른 인스턴스라도 같은 메서드의 코드는 같으므로 같은 메서드가 호출됨
  • 인스턴스가 생성되면 변수는 힙 메모리에 따로 생성되지만, 메서드 명령어 set은 처음 한번만 로드 됨

JAVA강의 중 - 컬러 필기는 내 것

 

 

가상 메서드의 원리

  • 가상 메서드 테이블(virtual method table)에서
    해당 메서드에 대한 address를 가지고 있음
  • 재정의 된 경우 재정의 된 메서드 주소를 가리킴

 

 

6. 다형성과 다형성의 사용 이유 

다형성(polymorphism) 

  • 하나의 코드가 여러 자료형으로 구현되어 실행
  • 같은 코드에서 여러 다른 실행 결과가 나옴
  • 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나임
  • 유연 / 확장성 / 유지보수가 편리

JAVA강의 중 - 필기는 내 것
JAVA강의 중 - 필기는 내 것

 

 

코드는 줄인데 어떤 data type / instance 형이 들어가느냐에 따라 move( ) implement 형이 달라진다 - 다형성

 

다형성을 사용하는 이유?

  • 다른 동물을 추가하는 경우
  • 상속과 메서드 재정의를 활용하여 확장성 있는 프로그램을 만들 수 있음
  • 그렇지 않는 경우 많은 if-else if문이 구현되고 코드의 유지보수가 어려워짐
  • 상위 클래스에서는 공통적인 부분을 제공하고 하위 클래스에서는 각 클래스에 맞는 기능 구현
  • 여러 클래스를 하나의 타입(상위 클래스)으로 핸들링 할 수 있음

 

if-else if 구문 사용시 메서드마다 넣어줘야 함.

가격 / 프로모션 / 쿠폰정책을 클라스마다 

if-else if 문으로 넣어줘야함. blacklist 같은 grade 추가시 또 새로 만들어 줘야 함.

 

 

다형성을 활용한 멤버십 프로그램 확장

  • 일반 고객과 VIP 고객 중간 멤버십 만들기GOLD 고객 등급을 만들고 혜택은 다음과 같다 
  • 고객이 늘어 일반고객보다는 많이 구매하고 VIP보다 적게 구매한 고객 해택
    1. 제품을 살때는 10프로를 할인해준다
    2. 보너스 포인트는 2%를 적립해준다

 

 

7. 상속은 언제 사용할까 

IS-A 관계(is a relationship : inheritance)

  • 일반적인(general) 개념과 구체적인(specific) 개념과의 관계 -> 기능의 확장 ( base class 와 derived class 관계)
  • 상위 클래스 : 하위 클래스보다 일반적인 개념 ( 예: Employee )
  • 하위 클래스 : 상위 클래스보다 구체적인 개념들이 더해짐 ( 예: Engineer, Manager...)
  • 상속은 클래스간의 결합도가 높은 설계
  • 상위 클래스의 수정이 많은 하위 클래스에 영향을 미칠 수 있음
  • 계층구조가 복잡하거나 hierarchy가 높으면 좋지 않음

HAS-A 관계(composition)

  • 클래스가 다른 클래스를 포함하는 관계 ( 변수로 선언 )
  • 코드 재사용의 가장 일반적인 방법
  • 좋은 클래스가 있다고 무조건 상속 x. 
  • Student가 Subject를 상속 x 또는 Library를 구현할 때 ArrayList 상속 x.

위의 경우 Subject 나 ArrayList경우 그 기능을 가져다 쓰는 것이 맞음. (=포함)

 

 

8. 다운캐스팅과 instanceof 

다운캐스팅

  • 원래 human class 였는데 animal class로 업캐스팅 되었을때 다운캐스팅 할 수 있다. (원래 클래스로 돌아오는 것)
  • Object class (all class의 최상위 클래스)에서 원래 클래스로 돌아올 때에도.

Animal tAnimal = new Tiger( );    // 업캐스팅 (묵시적)

Tiger tiger = (Tiger)tAnimal;     // 다운캐스팅 (명시적)

 

 

내가 수강한 강의 : http://abit.ly/java-spring

 

한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online. | 패스트캠퍼스

Java/Spring 웹 개발, 핵심 25가지 스킬부터 공부하세요. 대기업 출신 7인의 강사진이 모여 만든 Java/Spring 웹 개발 완전체 커리큘럼! 핵심 스킬 25가지 강의부터 250개의 예제, 7개의 프로젝트까지! 비

fastcampus.co.kr

강의 수강 후기: 나는 개인적으로 자바 기초 수업을 들은 적이 있다. 이번 수업은 내 수준에 딱 맞는 수업인것 같다. 아직 20프로 정도 강의를 들은 시점이기에 나중에 얼마나 어려워 질지는 모르겠지만 내 수준에서 이해할 수 있는 정도일것 같다. 왕초보자들은 기초강의를 듣고 오는 것이 좋을것 같다. 그만큼 실용성있는 부분에 중점을 둔 것 같다. 

4/28 - 4/30

목표: Ch 03 객체 지향 핵심 01 ~ 04

완료: Ch 03 객체 지향 핵심 01 ~ 04

 

이번주 자바강의 소감

3주차까지 포스팅이 너무 중구난방 이었다. 이번주부터 바로 티스토리에 적으니 좀 더 깔끔한 정리가 되는 것 같다. 자바의 핵심으로 들어갈 수록 더 어려워지고 복잡해 지는 것 같다. 함정은 아직도 기초 부분이라는 것... 하지만 목표는 무조건 끝까지 듣고 이해하기. 이런 과정을 몇 번 반복하다보면 점점 쉬워지지 않을까 싶다. 현재 자바강의는 13%정도 들었다. 하루에 적어도 1시간씩 자바강의를 듣고 있는데 이 속도라면 자바강의 완강하는데 5달은 걸리지 않을까 생각한다.

필기중에 클래스/클라스 이름을 번갈아 쓰는데, 원래는 클라스라고 써왔다가 사람들이 클래스/클라스 혼용해서 쓰다보니 나도 둘 다 쓰게 되었다. 별로 중요하진 않지만 만약 사람들이 내 글을 보고 이런 것 때문에 좀 불편해 할까봐 설명한다. 

 

 

Ch 03 객체지향 프로그래밍

 

 1. 객체 간의 상속 

클래스 상속

  • 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나
    기능을 확장하여 클래스를 구현함
  • 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를
    구현해야 할때 기존 클래스를 상속함

상속하는 클래스 : 상위 클래스, parent class, base class, super class

상속받는클래스 : 하위클래스, child class, derived class, subclass

- 오른쪽 그림은 자바강의 중 - 

 

  • 상속의 문법

class B extends A{ }

extends 키워드 뒤에는 단 하나의 클래스만 올 수 있음
(implement는 여러 개의 클래스 올 수 있음)

- 오른쪽 그림은 JAVA강의 중 -
( C++은 여러개의 클래스가 올 수 있음)
(여러개 있을 때 문제 : 모호성 )

자바는 단일 상속(single inheritance)만을 지원함 ,
안정성(기존 C 나 C++보다 ), 심플

 

상속을 구현 하는 경우

  • 상위 클래스는 하위 클래스 보다 더 일반적인 개념과 기능을 가짐
  • 하위 클래스는 상위 클래스 보다 더 구체적인 개념과 기능을 가짐
  • 하위 클래스가 상위 클래스의 속성과 기능을 확장 (extends)한다는 의미

 2. 상속을 활용한 멤버십 클래스 구현하기 

 

멤버십 시나리오

일반고객

private String customerName;

private String customerGrade;
int bonusPoint;
double bonusRatio;

 

일반고객과 VIP고객의 중복되는 부분은 일반고객에 넣고 VIPCustomer 클래스에서 Customer 클래스를 extends로 상속한다.

VIPCustomer 에서 추가될 변수를 작성.

Customer에서 상속받은 customerGrade 상속받은 변수를 VIPCustomer 에서 사용시 오류가 남. private 변수 이므로. 그럴땐 protected로 상속받는 클래스도 private변수를 사용할 수 있게 한다.

 

 3. 상속에서 클래스 생성 과정과 형 변환 

하위 클래스가 생성 되는 과정

  • 하위 클래스를 생성하면 상위 클래스가 먼저 생성 됨
  • new VIPCustomer()를 호출하면 Customer()가 먼저 호출 됨
  • 클래스가 상속 받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출 함 ex: super( );

JAVA강의 중 - 필기는 내 것

형 변환(업캐스팅)

  • Customer상위클라스 customerLee = new VIPCustomer( )하위클라스; // 상위클라스 = new 하위클라스( ) .......문제없음 하위클라스는 이미 상위클라스를 포함하고 있으므로.
  • 상위클라스로 형변환 => 상위클라스 = new 하위클라스( )  
  • 상위 클래스 타입의 변수에 하위 클래스 변수가 대입;
  • implicit하게 일어남. custom이므로 특별한 선언 필요 없음. (묵시적 형변환) 

 

 

JAVA강의 중 - 필기는 내 것

 

다운 캐스팅된 vCustomer는 상위클래스 변수만 접근 가능하게 됨. VIPCustomer() 변수 사용 x

 

 

 4. 메서드 재정의하기(overring) 

하위 클래스에서 메서드 재정의 하기

  • 항상 상위클래스를 있는데로 쓰지 않음. 필요시 재정의할 수 있음.
  • VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않음
  • 재정의 하여 구현해야 함
  • 반환값/메서드 이름/ 매개변수 type 값이 같아야 함. (정의부분 = function signature)

VIPCustomer.java 

@Override

  • 애노테이션은 원래 주석이라는 의미
  • 컴파일러에게 특별한 정보를 제공해주는 역할

JAVA강의 중 - 초록색 필기는 내 것

이번주 java강의들의 키 포인트는 클라스 상속과 하위클라스를 상위클라스로 형변환해주는 업캐스팅, 그리고 상속받은 후 하위클라스에서 매서드를 재정의(override) 하는 것. 

 

내가 수강한 강의 : http://abit.ly/java-spring

 

한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online. | 패스트캠퍼스

Java/Spring 웹 개발, 핵심 25가지 스킬부터 공부하세요. 대기업 출신 7인의 강사진이 모여 만든 Java/Spring 웹 개발 완전체 커리큘럼! 핵심 스킬 25가지 강의부터 250개의 예제, 7개의 프로젝트까지! 비

fastcampus.co.kr

 

4/21 - 4/27

목표: 2. 객체지향 프로그래밍 - 챕터 16 ~ 23

 

이번주 자바교육 소감

1강을 맨몸으로 100미터 뛰기의 속도로 갔다면 2강부터는 타이어를 허리에 매고 마라톤을 뛰는 느낌이다. 

갈수록 어려워지는데 가끔 숨고르기 구간이 나와서 너무 다행이 아닌 수 없다.

그리고 챕터 중간마다 풀어보기문제가 있는데 이것을 스스로 풀었을때 가장 보람된 순간인 듯 싶다.

현재 16% 완료했다. 

 

13. 객체 간의 협력(collaboration)

JAVA인강 중

너무 중요한 부분인데 저번주에 빼먹어서 포함했다. 

3개 객체의 협력으로 데이터도 줄이고 간략한 프로그램을 구현할 수 있다.

 

16. 여러 인스턴스에서 공통으로 사용하는 변수 : static

  • 기준 값이 있고 값으로부터 순차적으로 증감하는 경우
  • : 학번, 카드번호, 사원번호
  • static int serialNum;
  • static변수는 프로그램이 시작되는 순간 메모리영역에 프로세스되면서 data영역에 잡힌다.
  • 소멸되는 시점: 프로그램이 끝나고 메모리에서 unload되는 순간.

JAVA인강 중 - 필기는 내 것

 

 

JAVA인강 중 - 필기는 내 것

 

static 메서드(클래스 메서드)에서는 인스턴스 변수를 사용할 없다.

  • employeeLee.*같은 인스턴스 없이 Employee.* 처럼 클래스이름으로 호출가능.

employeeLee.*같은 인스턴스 변수 사용불가 - 인스턴스 생선 전에 호출될 있으므로.

JAVA인강 중 - 필기는 내 것

  • 멤버변수 많으면 메모리 많이 차지/ 적당히 - 클래스 속성이 있는 변수로. 클래스 내부에서 많이 사용되는 .
  • 멤버변수가 너무 적으면 필요시마다 함수사이 매개변수가 계속 전달하는 역할해야함. 외부에서 클래스 사용할때도 많이 귀찮음.
  • static 프로그램 시작과 동시에 메모리에 잡히고 종료때까지 잡고 있으므로 많이 쓰면 메모리소모가 . - 배열 지양
  • static instance 공유할 필요가 있는 변수 위주

 18. static응용 - 싱글톤 패턴(singleton pattern)

  • 회사를 클래스로 만들경우 사원은 여러명이나 회사는 하나여야만 .
  • public class Company{ } 경우 디폴트 생성자는 public. 외부에서 여러 생성 가능.
  • 그러므로 예제를 보자.

JAVA인강 중 - 필기는 내 것

 

20. 배열(array)

  • 순차적, 빠르다, 물리적/논리적위치 동일, 속도는 N개의 디펜던트( 0(n))
  • 기본자료형 (primitive data type): int, double… int 10개의 배열은 40byte
  • 객체배열 (Student, Employee….. 객체)

JAVA 인강 중 - 필기는 내 것

21.객체 배열

얕은 복사하기: System.arrayCopy(src, srcPos, dest, destPos, length)

src - 원본

srcPos - sorce position, 복사시작할 위치

dest - destination

destPos - 복사시작될 위치

length - 복사될 길이 (소스길이보다 dest길이 짧으면 오류)

 

JAVA 인강 중 - 필기는 내 것

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://abit.ly/java-spring

4/13 - 4/20

목표: 2. 객체지향 프로그래밍 - 챕터 01 ~ 16

 

이번주 자바교육 소감

저번주는 기본적인 것들을 다뤄서 진도가 쑥쑥 나갔다. 조금 지루한 느낌도 들었다.

속도는 1.5배로 해놓고 휘리릭한 느낌이었다. 

그런데 이번주 객체지향을 들어가면서 갑자기 너무 어려워 진 것이 아닌가?

자바교육을 다른곳에서 들었을때 내가 왜 자바를 어려워 했었는지 이제야 기억이 났다. 

아직 10프로 정도밖에 안했는데... 

자바교육 강의를 들을때마다 잊고 또 하고 잊고 또하고. 앞으로 이렇게 되면 어떻하지?

그래도 아직 이해를 못하고 넘어간건 없으니까 앞으로의 자바교육 열심히 들어보자!

내 자신을 뽀개자! 

 

  • Switch문의 새로운 스타일

Switch 자바버전이 되면서 간편한 스타일이 나왔다.

JAVA 인터넷강의 중

위의 코드가 우리에게 익숙한 스위치문이라면 아래는 JavaSE-14 부터 적용 가능한 코드       

더 간단해 졌지만 나에게는 공부할 게 늘어 그닥 달갑지만은 않다.

case 반복적으로  필요없이 , 나누고 yield 리턴.


                                                  

그런데 해봤는데 안된다. 문제는 java버전 설정을 잘못함.

위에 버전은 [jdk-15.0.2]

그래서 다시 새폴더'chapter2' 생성하고 설정란에 [JavaSE-14] 선택만하면 . 이제 제대로 된다.

 

 

 

Sum 에서 오류가 나는 이유.

sum 지역변수. 자동으로 초기화 안됨.

그래서 int sum = 0; 이라고 초기화 해야함.

 

패키지 이름은 소문자

클라스 이름은 대문자로 시작 추천.

Int string 변수/메서드 이름은 camel notation 추천/ convention.

 

Java 파일 하나에 Public class 하나, class 여러 가능. 이름은 public class 동일.

패키지 이름 바꾸기 - F2

 

함수 = 어디에 소속x

메서드 = 클라스 안에 소속. C++에서는 멤버function(멤버함수)이라고도 . getStudentName()

클래스

참조변수 = 클래스를 참조하는 변수. Class Student이면 Student studentLee = new Student();

인스턴스 = 참조변수로 만들어진 . studnetLee 인스턴스. 힙메모리에 저장.

지역변수 = 스택메모리에 저장, 자동으로 초기화 되지 않음. int i=0; 초기화 필요.

멤버변수 = 객체가 만들어 자동초기화됨. Public int grade; 자동으로 0 초기화. 이클립스에서는 멤버변수를 기본적으로 파란색으로 표시.

 

studentNumber = studentNumber; 에서 왼쪽애는 가장 가까운 변수를 찾으려는 속성이 있다.

결국 자기 자신이 제일 가까우므로 스스로 복사하는 (넘어온 매개변수가 매개변수에다 값을 대입하는 꼴임). 그래서 this.(멤버변수를 가르킴) 필요 -> 왼쪽은 멤버변수 = 오른쪽은 매개변수

 

This. 붙여주면 this.studentNumber 오른쪽의 studentNumber 같지 않게됨.

 

서비스 모듈: 서비스를 제공해 주는 모듈(서버). 기본생성자가 있는 클라스.

클라이언트 모듈: 서비스를 사용하는 모듈. 객체를 생성하는 클라스. 오브젝트를 가져다주는 코드

 

오버로딩(overloading)

  • 메서드 이름은 같고, 매개변수만 다름.
  • 사용자의 편의성을 위해. 어떤 생성자(constructor) 매개변수 3 모두 필요. 어떤 생성자는 1개만 필요. 모든걸 제공해 주면 이걸 사용하는 클라이언트 코드는 골라서 수가 있다. Jdk에서 제공되는 여러가지 클래스들 보면 이런것들을 제공해주는 클래스들을 있음. 
  • Default constructor 같은 경우 제공되어 문제가 생길 , 제공안 하는것이 맞음.
  • 생성자를 하나도 만들지 않으면 default constructor 항상 제공이 된다.

JAVA 인터넷강의 중 - 필기는 내것.

 

클라스: 오브젝트의 블루프린트. 추상화/제너럴한 이름으로.

 

 

  • 참조 자료형 변수

변수의 자료형- 기본자료형(primitive data type)

참조자료형(오브젝트형의 객체타입 data type) - String(예외적.변수생성필요x. new라는 키워드 없이 바로 사용 가능), Date, Student …

참조자료형 - 변수 선언 그냥 쓸수 없다. 객체이므로. 생성해서 써야함.

JAVA 인터넷강의 중

이제부터 고비다. 술술 넘어가던 진도가 막히기 시작했다. 6분짜리 영상 이해하는데 30 넘게 걸린다..

 

JAVA 인터넷강의 중
JAVA 인터넷강의 중
JAVA 인터넷강의 중

 

  • 접근제어 지시자(access modifier) 정보은닉(information hiding)

Access modifier

JAVA 인터넷강의 중

 

 

프로그램의 포인트는

 

변수들은 private이어서 다른 클라스에서 접근불가. main에서 데이터 수정 불가.

접근은 get/set 메소드를 통해서만 가능(why? Public으로 정의되어 있으므로)

 

캡슐화 (encapsulation)

  • Private/protected 이용.
  • 외부에서 사용할 메서드 1-2개만 오픈해서 사용/나머지는 자동으로 생성되서 사용될 있도록
  • 대부분 멤버 변수/메서드 private -> 클라이언트가 사용하기 쉽게/사용API 한정적/객체작동이 일관성있다.

디버깅/기능추가에 유연.

 

사용자가 public으로 프로그램 제어가 가능한 전화번호부를 순서대로 쓰거나 위에 라인 각을 맞추는 들은 불필요하므로 private으로 놓는 것이 편리.

 

StringBuffer/StringBuilder

StringBuffer buffer = new StringBuffer(); //스트링클래스를 이어 붙일 있지만 메모리 오버헤드가 . 내부적으로 늘어날수 있는 버퍼를 가지고 있는 클래스에 스트링을 연결하고 나중에 스트링값으로 리턴하는 방법.

 

객체 자신을 가리키는 this

  •  객체를 new하면 heap 메모리에 객체가 생성 <- 주소값 갖는 애를 참조변수라 . = 참조값(reference value)
  • 변수는 외부에 위치해서 인스턴스 값을 가르키게 .
  • 인스턴스 내부에서 자기 자신의 주소값을 갖는 것이 this.
  • 생성자: 원한다고 아무때나 호출할 있는 메서드와 다르다. 객체가 생성될 때만 호출이 .(new 사용할 )
  • 생성자 안에서 다른 생성자를 호출할 (상속: 하위클래스에서 상위클래스 생성자 호출)
  • 여러개의 클래스중에 하나의 클래스에서 다른 클래스 호출시 this사용.
  • 자신의 주소(참조값) 반환할 this사용.
  •  생성자 역할: instance 초기화.

 

JAVA 인터넷강의 중 - 필기는 내 것

 

휴... 어렵긴 했지만 그래도 새로운 것을 이해하고 배우는게 나름 보람이 있었다.

자바교육 설명을 들을땐 이해가 잘 되는데 막상 코드를 짜 보려고 하면 무념무상이 된다.

코딩 잘 하는 사람들이 너무 대단하게 느껴진다.

 

 

 

자바/스프링 자바인터넷 강의 링크

http://abit.ly/java-spring

1강. 자바 프로그래밍 

목표. 4/5 - 4/12 1강 완료

 

대학을 졸업하고 취업을 준비하며 많이 모자란 나의 실력을 깨닫고 자바인터넷강의를 들으려고 찾아다녔다.

검색의 검색 끝에 패스트캠퍼스에서 마음에드는 자바인터넷강의를 발견했다.

 

자바인강은 1강 기초부터 시작하여 점점 실무에 필요한 기술을 익히는 커리큘럼으로 구성이 되어 있는것 같다.

이미 대학에서 자바 기초는 배웠기에 자바인강 1강은 어렵지 않았다. 

1강은 복습의 개념으로 듣고 2강부터 빡세게 들을 준비를 해야겠다.

자바인터넷강의라 집중을 못할까봐 걱정했는데 가끔 뜨는 카톡에 집중력이 잠시 흐뜨러졌던것 빼고는 괜찮았다.

하다보니 자바인터넷강의도 들을만한 것 같다. 벌써부터 이것을 끝내고 무슨 자바인터넷강의를 더 들어야 하나 고민하고 있다. 

 

공부를 하다보니 자바인강 1강도 다 알거라 생각했는데 모르는 부분이 종종 있었다.

알고는 있었으나 이해를 못하고 그냥 넘어갔던 부분도 해소가 되었다.

 

-----------------------------------------------------------------------------------------------------------------------------------

하지만 항상 자바를 새로 시작할 때마다 겪는 고충. 이번 자바인강을 시작할때도 순조롭지 않았던 그것. 

이클립스 설치하기.

 

fastcampus 'Java/Spring' 인강중

이미 깔려 있었던 구 버전 이클립스가 문제였다. 새로운 이클립스를 설치하고 실행하려고 하니 내 것은 JRE 버전이 맞지 않는 것이었다. 다행히도 자바인강에서 그 내용을 해결해 주었다. 

간단히 설명하자면...

 

Project -> Properties -> Java Bulid Path -> Order and Export 에서 Library 이동

Modulepath JRE System Library [JavaSE-14]선택

 

Edit

 

Alternate JRE: jre 보면 설치된 것들 있음.  원하는게 없으면

Installed JREs 클릭 -> Add -> Standard VM -> JRE home 경로에 jdk 설치된 폴더 넣는다.

 

C:\Program Files\Java\jdk-15.0.2

 

Finish

 

원하는 JDK버전 선택하고 나옴. 이제 자바인터넷강의 수업을 제대로 들을 준비가 됐다.

 

 

--------------------------------------------------------------------------------------------------------

  •  예를 들어 상수를 왜 써야 하고 상수의 값을 변환할 때는 어떻게 하는 것인가?

ans. 학급의 학생수, 구의 원주율 같이 자주 변하지 않거나 절대 변하지 않는 것을 정의할 때.

      값을 변환 할 때는 상수의 값을 직접 바꿔주면 된다.

      쓰는 법: final int MAX_NUM = 100; // 앞에 final 을 붙여 주어야 한다.

     

fastcampus 'Java/Spring' 인강중

 

-----------------------------------------------------------------------------------------------------------------------------------

 

  • 리터럴은 무엇인가?

fastcampus 'Java/Spring' 인강중

 

  • 왜 float의 경우에 리터럴에 'F,f' 식별자를 넣어줘야 하는가? (long도 마찬가지로 'L,l' 식별자 필요) 

ans. 이유는 선언과 동시에 리터럴의 공간확보가 필요하기 때문이다. float 의 경우에 필요한 공간이 확보되어야하기 때문에 미리 'f'를 넣어줌으로 그 공간을 확보할 수 있다.

 

-----------------------------------------------------------------------------------------------------------------------------------

 

  • 형변환

작은상자(byte)를 큰상자(int)에 담는건 문제없으나 반대의 경우는 문제가 된다.

그래서 필요한 것이 형변환(type conversion)이다.

 

fastcampus 'Java/Spring' 인강중
fastcampus 'Java/Spring' 인강중

int형인 iNum을 억지로 byte형인 (byte)iNum 으로 변경하였다. 

bNum의 결과값은 -1이 된다. 

 

이렇게 하면 큰상자를 작은 상자에 억지로 담을 수 있으나 넘치는 부분은 잃어버리게 된다.

 

-----------------------------------------------------------------------------------------------------------------------------------

 

fastcampus 'Java/Spring' 인강중

자바인터넷강는 github에 업로드된 자료를 가지고 공부한다. 강의의 내용과 github의 내용이 일치하기에 

자바강의를 듣는데는 문제가 전혀 없었다.

 

자바강의 1강을 끝낸 소감은 아직 목마르다. 빨리 스프링을 배우고 싶다.

 

 

이것은 자바/스프링 자바인터넷강의 링크

http://abit.ly/java-spring

 

 

 

+ Recent posts