전공공부/JAVA 7

[JAVA] 문자열 표현 (String, StringBuffer, StringBuilder)

Java에서 문자열을 표현하는 방법에는 3가지가 존재한다. String, StringBuffer, StringBuilder 각각의 특징과 차이점에 대해서 알아보자. 특징 String String은 character의 배열이다. String들은 상수이기 때문에 한 번 생성된 후에는 값을 바꿀 수 없다.(immutable) 그렇기 때문에 삽입, 삭제보다는 검색에 유리하다. 개별 character들을 검색하고, string들을 비교, 검색하고, substring들을 추출하고, 모든 character들을 대문자나 소문자로 변경한 복사본을 만들 수 있는 함수를 제공한다. Java에서는 +로 문자열을 병합할 수 있는 연산자를 지원하고, 다른 객체들을 스트링으로 변환하는 것도 지원한다. 문자열 병합은 StringBu..

전공공부/JAVA 2020.10.19

[JAVA] Comparable과 Comparator의 차이점

Java에서 기본 라이브러리로 제공해주는 정렬이 2가지 존재한다. (1) Arrays.sort() (2) Collections.sort() Arrays.sort()- 순수 객체의 배열을 정렬 기본적으로 오름차순 정렬(숫자든 문자든) Collections.sort() - 컬렉션 객체들을 정렬 컬렉션 객체들을 비교하기 위해서는 객체에 comparable이 구현되어 있거나, sort메소드에 comparator 객체를 파라미터로 함께 보내주어야함. Comparable 비교가능한 객체로만듬. 자기자신과 비교하기 위한 다른 객체로 파라미터 1개 Comparator 비교기로 만듬. 파라미터 2개

전공공부/JAVA 2020.10.07

[JAVA] Math.pow() 를 이용한 거듭제곱

알고리즘을 공부하다가 거듭제곱을 사용해야해서 당연하게 캐럿(^)을 사용했는데, 값이 이상하게 나왔다... 값이 이상하게 나올 수 밖에 없는게 캐럿을 거듭제곱 표현으로 사용하는 것은 편집기에서 제곱을 표현할 수 없어서 제곱을 표현하기 위한 기호로 사용했었는데, 이를 당연하게 연산자로써 사용하니 안될 수 밖에... 이에 Java에서는 java.lang.Math클래스에서 pow()메소드를 제공한다. 왜 메소드 이름이 pow인가 알아보니 수학에서 거듭제곱은 power라고도 한단다. 사용법은 밑과 지수를 인자로 보내주면되고, static double pow(double a, double b) a는 밑이고, b는 지수이다. static으로 선언되어서 Math클래스를 생성하지 않고 사용가능하다. ex) 2의 3제곱(..

전공공부/JAVA 2020.10.07

[JAVA] ClassLoader 란?

해당 클래스로더에 대한 내용은 JAVA SE8 API에 명시된 내용이다. 다른 버전의 클래스로더에 대한 내용은 해당 버전의 API를 살펴보기를 추천한다. 클래스로더는 클래스들을 로딩시킬 책임이 있는 객체이다. 클래스로더 클래스는 추상클래스이다. 주어진 클래스의 바이너리 이름으로, 클래스로더는 클래스를 위한 정의를 대체하는 데이터를 위치하거나 만들어내는데 시도해야한다. 전형적인 전략은 그 이름(바이너리 이름인듯)을 파일이름으로 변환하고 파일시스템에서 그 이름으로된 클래스 파일을 읽는것이다. 모든 클래스 객체는 그 클래스를 정의한 클래스로더에 대한 래퍼런스를 포함한다. 배열 클래스를 위한 클래스 객체들은 클래스로더들에의해 만들어지지 않지만, 자바 런타임의 요구에의해 자동적으로 만들어진다. Class.getC..

전공공부/JAVA 2020.09.18

Class.forName()의 동작원리

JSP/Servlet에서 JDBC를 다루는 법을 공부하다가 Class.forName()이 반환하는 값도 없고 DriverManager에서 관련 Url을 파라미터로 넘기면서 Url과 연관된 Driver의 connection을 반환하는 것의 내부적인 동작을 알고 싶어서 여기저기 살펴보고 이해한 내용을 정리해두려 한다. 우선, JSP는 java code로 변환되고 변환된 java code를 compile하면 servlet class가 생성된다. 여기서의 java도 기존의 java와 마찬가지로 JVM을 기반으로 동작하게 된다. Class.forName()에서 사용되는 Class는 java.lang.Class이다. java.lang.Class는 JVM에서 동작할 클래스의 정보(클래스의 이름, 멤버 변수들과 메소드..

전공공부/JAVA 2020.08.11