java
-
[Spring] 스프링 부트 + 리액트 환경 구축 및 연동WEB/Spring 2021. 1. 24. 15:50
오늘 진행할 실습 스프링 부트 환경 구축 리액트 환경 구축 스프링부트와 리액트 연동하기 스프링 부트 환경 구축 먼저 스프링 부트 환경을 구축하도록 하겠습니다. 스프링 부트 환경을 구축하기 위해 필요한 준비물은 다음과 같습니다. JDK 1.8 이상 STS or IntelliJ (스프링 부트를 돌릴 수 있는 IDE 아무거나) 해당 글에서는 이미 준비물이 설치되어 있으므로, 실습에 앞서 두 가지를 먼저 준비하셔야합니다. 이전 블로그 글에 JDK 설치법을 올려두었으니 참고하시면 좋을 것 같습니다. (IDE는 사람마다 다른 것을 사용하므로 본인이 사용하는 IDE 설치법을 찾아보시길 바랍니다.) 필요한 것들을 모두 준비하셨다면, 이제 실습에 진행할 스프링 부트 프로젝트를 만들어보도록 하겠습니다. 저는 아래와 같이 ..
-
[JAVA] 문자열 클래스프로그래밍/JAVA 2020. 9. 7. 21:54
String 클래스 java.lang 패키지에 포함된 클래스로 문자열을 나타냄 String을 선언하는 방법은 크게 다음과 같이 두가지가 존재 // 리터털 String str2 = "JAVA"; // new 연산자 char data[] = {'J', 'A', 'V', 'A'}; String str2 = new String(data); String str3 = new String("JAVA"); // str2, str3 모두 "JAVA" 문자열 여기서 String을 리터럴로 선언하는 것과 new 연산자를 이용해 선언하는 것과 굉장히 중요한 차이점이 존재! String str1 = "JAVA"; String str2 = "JAVA"; if(str==str2) { // 두 객체의 메모리 주소를 비교 System..
-
[JAVA] 추상 클래스와 인터페이스프로그래밍/JAVA 2020. 9. 7. 17:49
추상클래스 추상 클래스는 상속에서 슈퍼클래스로 사용 (계층 구조를 만들기에 좋음) 추상 클래스는 추상 메소드를 포함하는 경우, 포함하지 않는 경우가 있음 /* 추상 메소드를 포함하는 클래스 */ abstract class Shape { public Shape() { } public void paint() { draw(); } abstract public void draw(); // 추상 메소드 선언 } /* 추상 메소드가 없는 클래스 */ abstract class MyComponent { String name; public void load(String name) { this.name = name; } } 추상 메소드란 선언은 되어 있으나 코드 구현은 되어 있지 않은 메소드를 의미 추상 메소드의 구현은..
-
[JAVA] final프로그래밍/JAVA 2020. 8. 10. 00:48
final 클래스 final이 클래스 앞에서 사용되면 클래스를 상속받을 수 없음을 지정 final class FinalClass { // 이 클래스는 상속 불가 .... } class SubClass extends FinalClass { // 컴파일 오류 발생, FinalClass 상속 불가 .... } final 메소드 final로 메소드를 선언하면 오버라이딩할 수 없는 메소드임을 선언 자식 클래스가 부모 클래스의 특정 메소드를 오버라이딩하지 못하게 하고 무조건 상속받아 사용하게끔 함 public class SuperClass { protected final int finalMethod() { .... } // finalMethod()는 자식이 오버라이딩 불가 } class SubClass extend..
-
[JAVA] static 멤버, static 메소드프로그래밍/JAVA 2020. 8. 5. 01:14
static 멤버의 선언 class StaticSample { int n;// non-static 필드 void g() {....} // non-static 메소드 static int m;// static 필드 static void f() {....}// static 메소드 } non-static 멤버와 static 멤버의 차이점 non-static 멤버 static 멤버 공간적 특성 멤버는 객체마다 별도 존재 - 인스턴스 멤버라고 부름 멤버는 클래스 당 하나 생성 - 멤버는 객체 내부가 아닌 별도의 공간(클래스 코드가 적재되는 메모리)에 생성 - 클래스 멤버라고 부름 시간적 특성 객체 생성시에 멤버 생성됨 - 객체가 생길 때 멤버도 생성 - 객체 생성 후 멤버 사용 가능 - 객체가 사라지면 멤버도 사라..
-
[JAVA] 자바 리플렉션(Java Reflection)프로그래밍/JAVA 2020. 7. 31. 19:05
리플렉션(Reflection)이란? 구체적인 클래스 타입을 알지 못해도 해당 클래스의 생성자, 메소드, 타입, 변수들에 접근할 수 있도록 도와주는 기본적으로 Java에서 제공하는 API 리플렉션의 필요성? 동적으로 클래스를 사용해야할 때 필요. 작성 시점에는 어떤 클래스를 사용해야할 지 모르는 경우, 런타임 시점에서 클래스를 가져와서 실행해야 하는 경우에 사용 ex) IntelliJ의 자동완성, 스프링 프레임워크의 어노테이션 등 ※ 런타임 : 프로그래밍 언어가 구동되는 환경 리플렉션의 원리 Java에서는 모든 .class 파일 하나당 java.lang.Class 객체를 하나씩 생성된다. Class는 모든 .class들의 정보를 가지고 있으며 .class 파일에 같이 저장된다. 모든 .class들은 이 클..
-
[JAVA] 접근지정자(Access Specfier)프로그래밍/JAVA 2020. 7. 26. 02:08
자바의 4가지 접근 지정자 접근 지정자(Access Specifier)는 클래스나 멤버들을 다른 클래스에서 접근해도 되는지의 여부를 선언하는 지시어 자바에는 private, protected, public, default 4가지 접근 지정자가 존재 클래스 접근 지정 다른 클래스에서 이 클래스를 활용할 수 있는지 허용 여부를 지정하는 것 public 클래스 클래스 이름 앞에 public으로 선언된 클래스 패키지에 상관없이 다른 어떤 클래스에게도 사용이 허용 // public 클래스 public class Public { .......... } default 클래스 접근 지정자 없이 클래스를 선언한 경우 default로 접근 지정됨 같은 패키지 내의 클래스들에게만 사용이 허용 // default 클래스 cl..
-
[JAVA] 가비지 컬렉터(Garbage Collector)프로그래밍/JAVA 2020. 7. 26. 02:06
객체의 소멸과 가비지 자바는 객체를 생성하는 new 연산자는 있지만 객체를 소멸시키는 연산자는 없음 => 개발자가 마음대로 객체를 소멸시킬 수 없음 객체 소멸이란 new에 의해 생성된 객체 공간을 JVM(Java Virtual Machine)에게 돌려주어 가용 메모리에 포함시키는 것 C++과 다르게 delete 연산자, 소멸자가 존재하지 않음 => 할당받은 메모리를 반환하는 코딩으로부터 자유로움 자바에서 new로 할당받은 후 사용하지 않게 된 객체 혹은 배열 메모리를 가비지라고 부름 JVM의 가비지 컬렉터(Garbage Collector)가 적절한 시점에 자동으로 가비지를 수집하여 가용 메모리에 반환 ※ JVM : 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램(메모리 관리, 가비지 컬렉션 ..