| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- group study
- Spring
- MegabyteSchool
- spring boot
- MVC
- Entity
- 개발자취업부트캠프
- Sts
- 게시판 리뷰 만들기
- side project
- MVC 패턴
- Java
- 국비지원교육
- #javaStudy
- Interface
- AWS
- 클래스 class
- GIT
- 내일배움카드
- 게시판 만들기
- 패스트캠퍼스
- crud
- tomcat
- array
- 클래스 상속
- github
- #패스트캠퍼스 #국비지원교육 #메가바이트스쿨 #MegabyteSchool #개발자취업부트캠프 #내일배움카드
- Algorism study
- View
- 메가바이트스쿨
- Today
- Total
tuter77
2022.12.22 TIL 본문
<Java>
● 인스턴스와 힙 메모리
▷ 인스턴스
- 클래스는 객체의 속성을 정의, 기능을 구현하여 만들어놓은 상태
- 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수값들을 가지게 된다.(인스턴스들이 다른 힙메모리에 위치하기 때문이다.)
- new 키워드를 사용해서 인스턴스를 생성할 수 있다.
▷ 힙 메모리(Heap)
- 힙은 동적메모리로서 생성된 인스턴스가 이곳에 저장된다.
- c언어나 c++ 언어에서는 사용한 동적메모리를 프로그래머가 해제시켜야 한다.(free(), delete)
- 자바에서는 위와 달리 GC(Garbage Collector)가 주기적으로 사용하지 않는 메모리를 수거한다.
- 하나의 클래스로부터 여러개의 인스턴스가 생성되어 저장되고 각각 따른 메모리 주소를 갖게 된다.
*인스턴스가 저장된 주소는 system.out.print(인스턴스명) 으로 출력하면 나온다.
스택에 저장된 주소는 참조변수라고 하고 그 값은 참조값이라고 한다.(Reference Variable, Reference Value)
● 생성자(Constuctor)
- 생성자의 기본문법은 아래와 같다.
<class_name>([<argument_list]){[<statement]}
- 객체를 생성할 때 new키워드와 함께 사용한다. (new Student();)
- 생성자는 일반함수처럼 기능을 호출하지 않고 객체를 생성하기 위해, new와 함께 호출된다.
- 객체가 생성될 때 변수나 상수를 초기화하거나 다른 초기화 기능을 수행하는 메서드를 호출한다.
- 생성자는 반환값이 없고, 클래스의 이름과 동일하다.
- 대부분의 생성자는 외부에서 접근이 가능하지만, 필요에따라 private로 선언하기도 한다.
▷기본생성자(Default Constructor)
- 클래스에서는 반드시 적어도 하나 이상의 생성자가 존재한다.
- 클래스에 생성자를 구현하지 않아도, new키워드와 함께 생성자를 호출할 수 있다.
- 클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 자동으로 넣어준다.(예. public Student(){} -- 클래스명과 동일)
- 매개변수, 구현부가 없다.
이와 같은 생성자를 예시로 살펴보겠다.
아래는 Student클래스에서 선언된 속성들과 이를 구동하기위한 Test 클래스이다.
public class Student {
public int studentNumber;
public String studentName;
public int grade;
public Student() {} // 이 부분이 default 생성자에 해당한다.
public Student(int studentNumber, String studentName, int grade) {//매개변수로 정보를 생성해주는 경우
//studentNumber = studentNumber; //매개변수가 지역변수인 매개변수에 값을 대입하는 형태가됨. 이렇게 쓰면안된다. 하려는건 멤버변수에 대입하는것.
this.studentNumber = studentNumber;//매개변수와 이름이 같을때 this.을 사용해 멤버변수임을 선언할 수 있다.
this.studentName = studentName;
this.grade = grade;
}
public String showStudentInfo() {
return studentName + "학생의 학번은" + studentNumber + "이고, " + grade + "학년 입니다.";
}
}
아래는 테스트 클래스이다.
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student();//(중요)default 생성자인데 생성자를 직접 만든 경우엔 제공되지않아서 class에 디폴트 생성자를 만들면된다.
studentLee.grade = 1;
System.out.println(studentLee.showStudentInfo());
Student studentKim = new Student(123456, "Kim", 3);//매개변수로 값을 입력.
System.out.println(studentKim.showStudentInfo());
}//정보를 주지않고 출력하면 String은 null값으로 초기화, Int는 0으로 초기화된다.
}
매개변수로 값을 입력하였지만, 저렇게 값을 입력하지 않고 그대로 출력하는 경우, String은 null값으로 int는 0으로 초기화되어 출력된다.
위 처럼 new Student()로 기본 생성자를 사용했는데 이 생성자를 그대로 사용하기 위해서 앞 클래스에 public Student() {}과 같이 선언해주어야 한다. 이 내용은 아래 생성자 오버로딩에 나온다.
▷생성자 오버로딩.
- 생성자를 구현해서 사용할 수 있다.
- 클래스에 생성자를 따로 구현하면 default constructor는 제공되지 않는다.
- 생성자를 호출하느 코드(client)에서 여러 생성자 중 필요에 따라 호출해서 사용할 수 있다.
오늘은 스택, 힙 메모리, 생성자에 대해서 배웠다. 중요한건 손에 언어가 익는 실습이라고 해서 실습으로 반복해서 클래스를 만들어보느라 시간이 많이 걸렸다.
이 클래스 만들기, 값을 저장해서 출력하기 등의 실습에서는 클래스 내에 멤버변수들을 어떻게 선언했는지 많이 헷갈렸고, 생성된 메소드를 this 매개변수를 사용해서 값을 입력할 지 아니면, 인스턴스에 일일히 값을 선언해주어할지 익히는게 시간이 걸렸다.
다음 강의는 스프링 강의이다.
<Spring>
강의 초반부가 환경설정으로만 가득 차있는만큼, 나도 환경설정만 주구장창했다.
한 내용은 아래와 같다.
● IntelliJ 설치
- 강사님은 커뮤니티버전(무료)에서는 스프링 부트 밖에 지원이 되지 않는다고, 얼티메이트 30일 무료평가버전을 쓰라고 하셨다.
왜인지 누군가는 스프링을 사용할 수 있게 해놓은 것같아 찾아보다, 서블릿 컨테이너 제티 서버로 작동하는 spring 환경을 커뮤니티에 구축했다.
문제는 톰캣으로 서버를 바꿔주어야한다는 것인데, 톰캣을 서버에 설정하는 것 까지는 어찌어찌 했으나 정상작도이 되지않았다.
여전히 답을 찾지 못해 강사님께 메일을 드렸다.
아마 강의를 수월하게 따라가려면, 얼티메이트 버전을 써야할지도..
● git 설치
앞선 git 강의에서 다 설치했다.
● java11버전 설치
설치후 내pc > 속성 > 고급시스템설정 > 환경변수 > 시스템 path 등록까지 마친상태이다.
이 다음에 나올 tomcat이 JDK, JRE 위치를 인식할 수 있어야해서, JAVA_HOME이라고 따로 만들어서 지정해주었다.
*주의할 점은 위와 같이 모두 대문자로만 적어야 한다는 것이고, 경로는 JDK 11버전 bin폴더가 아닌 전체 폴더여야한다는것. JRE는 BIN폴더에 없다.
● tomcat 설치
톰캣은 특이하게도, 압축된 파일에서 사용할 폴더를 C드라이브로 가져오기만하면 자동으로 압축이 풀려 사용할 수 있다.앞서서 JDK경로설정을 다 해두었기 때문에 바로 사용할 수 있었다. cmd(윈도우키 + R)에서 c드라이브 내 tomcat폴더의 bin폴더로 이동한 후, startup이라고 명령하면 톰캣이 구동된다.이후 톰캣 정지는 shutdown으로 명령하면 된다.
● STS3 설치
STS는 Spring Tool인데, 4버전이 최신이다. 4버전에서는 spring boot 개발환경 밖에 지원되지 않아 STS3를 설치했다.
이 STS3도 톰캣과 같이, 압축 파일 내 폴더를 C드라이브로 옮겨주기만 하면되었다.
이외에도 VSCode 내에 open in browser같은것도 다운받았었다.
설치와 환경설정만 진행하느라 시간을 많이 뺐지만, 그래도 앞으로 스프링에 대해서 배울 생각에 자바를 더 열심히 해야겠다는 생각이 들었다.
남궁성 강사님 말씀처럼 기본은 자바기 때문에 자바를 열심히 실습해서 스프링 이해에 어려움이 없도록 하자.
'TIL' 카테고리의 다른 글
| 2022.12.26 TIL (0) | 2022.12.26 |
|---|---|
| 2022.12.23 TIL (0) | 2022.12.23 |
| 2022.12.21 TIL (0) | 2022.12.21 |
| 2022.12.20 TIL (1) | 2022.12.20 |
| 2022.12.19 TIL (0) | 2022.12.19 |