StringBuffer(스트링버퍼)
2021. 7. 13. 13:01
JAVA
String 클래스의 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고, 변경할 수는 없다. 하지만 StringBuffer 클래스의 인스턴스는 그 값을 변경할 수도 있고, 추가할 수도 있다. String클래스는 불변 클래스이다. String str1 = "hello world"; String str2 = str1.substring(5); System.out.println(str1); System.out.println(str2); 실행결과 hello world world 기존의 str1은 전혀 변화 없다. substring메소드는 5번째 부터 문자열을 잘라서 새로운 문자열을 반환하는 메소드 str1자체는 전혀 변화가 없다. String클래스를 사용할 때 가장 문제가 발생하는 경우는 다음과 같은 코드를..
Object와 오버라이딩
2021. 7. 12. 23:36
JAVA
Object클래스는 모든 클래스의 최상위 클래스 아무것도 상속받지 않으면 자동으로 Object를 상속 Object가 가지고 있는 메소드는 모든 클래스에서 다 사용할 수 있다는 것을 의미 Object클래스에서 가장 많이 사용되는 메소드는 다음과 같다. equals : 객체가 가진 값을 비교할 때 사용 toString : 객체가 가진 값을 문자열로 반환 hashCode : 객체의 해시코드 값 반환 그런데 이 세가지 메소드는 사용할 때 반드시 오버라이딩해서 사용해야 한다. 예를 들어 보자 같은 클래스를 통해 만들어준 s1과 s2라는 인스턴스에 모두 같은 값을 집어넣고 equals를 이용해 비교하면 어떻게 될까? import java.util.Objects; public class Student { String..
Gradle 라이브러리 및 View 환경설정
2021. 7. 12. 16:26
Spring
Gradle이나 maven 같은 빌드 툴들은 의존관계를 관리해준다. 예전에는 서버에 웹서버를 설치해 놓고 자바 코드를 밀어 넣는 형식이었다. 따라서 웹서버와 개발라이브러리가 완전히 분리가 돼 있었다. 하지만 요즘에는 소스라이브러리에서 이런 웹서버를 들고 있다. 이런 것을 임베디드 즉 내장하고 있다고 한다. > Gradle은 의존관계가 있는 라이브러리를 함께 다운로드한다. 스프링 부트 라이브러리 spring-boot-starter-web spring-boot-starter-tomcat: 톰캣 (웹서버) spring-webmvc: 스프링 웹 MVC spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View) spring-boot-starter(공통): 스프링 부트 + 스프링 코어 ..
Finally와 Try with Resource
2021. 7. 11. 17:39
JAVA
FileWriter 객체의 경우 파일 작업이 다 끝나고 나면 close를 이용해서 파일을 닫아주는 작업을 했다. 하지만 만약 try 문에서 FileWriter 객체를 만들고, 닫는 작업까지 다 넣었을 때, 그 중간의 파일 작업에서 예외가 발생하게 된다면 어떻게 될까? 그럼 파일을 닫아주는 작업을 실행하지 못하고 그다음 작업을 수행할 때 문제가 발생하게 될 수도 있다. 이런 경우에 사용하는 형식이 finally 문이다 finally 문은 try 문에서 예외가 발생했거나 발생하지 않았거나 무조건 실행된다. import java.io.FileWriter; import java.io.IOException; public class CheckedExceptionApp { public static void main(..
인터페이스(INTERFACE)보충 및 다형성(POLYMORHPISM)
2021. 7. 11. 16:04
JAVA
인터페이스(Interface)를 이용하면 앞으로 만들 클래스의 메소드 규격을 선언할 수 있다. 인터페이스에서 이를 이용해서 만들 클래스의 메소드의 형식을 미리 선언하고, 인터페이스를 이용해서(implements 키워드) 만드는 클래스는 인터페이스의 메소드를 정의한다. 자바 인터페이스는 기본적으로 추상메서드의 모음이다. 추상 메서드는 아래와 같이 구현부가 없는 메서드를 말한다. interface Printable{ void print(); // 메소드를 인터페이스에 정의할 때는 내용이 들어가지 않는다. } 구현부가 없으므로 인터페이스를 만든다면 반드시 구현하는 클래스를 만들어야 하며, 인터페이스를 구현하기로 한 클래스는 반드시 인터페이스에 명시되어 있는 추상메서드들을 모두 구현해야 한다. 만약 이를 구현하..