Language`/Java(29)
-
[Java] JDBC 실행 순서 정리
"일단 JDBC Interface를 사용하려면 JDBC Driver가 필요하다" 1. 각 DBMS에 알맞은 드라이버를 구글링을 통해서 다운로드한다 2. 다운로드 후, 해당 드라이버를 자바 프로젝트 상에 적용시켜줘야 한다 현재 "sample" DB내의 "user" 테이블 현황 CREATE TABLE user( idx INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, gender CHAR(2) NOT NULL, bth DATE NOT NULL, PRIMARY KEY(idx) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; 1. 드라이버 로드 - DBMS에 맞는 드라이버를 다운로드하면 해당 드라이버를 로드해줘야 한다 Clas..
2022.03.05 -
[Java] hashCode() - equals() 재정의
hashCode() / equals() - 둘다 Java의 Object 클래스에 정의되어 있는 메소드이다 따라서, Java의 모든 객체는 equals(), hashCode()를 상속받는다 hashCode()? - 해싱기법에 사용되는 "해시함수"를 구현한 메소드이다 해시함수는 찾고자하는 값을 입력하면, 해당 값이 저장된 위치를 알려주는 해시코드를 return한다 - 일반적으로 해시코드가 동일한 두 객체가 존재하는 것은 가능하다 Object클래스에 정의된 hashCode()는 객체의 주소값으로 해시코드를 생성해서 return한다 32bit JVM : 서로 다른 두 객체는 절대로 동일한 해시코드를 가질 수 없다 64bit JVM : 객체끼리 해시코드가 중복될 수 있다 >> 따라서, 클래스의 인스턴스 변수 값으..
2022.02.20 -
[Java] 변수의 선언위치
변수 변수 종류 선언 위치 생성시기 전역변수 클래스 변수 (static) 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 인스턴스가 생성되었을 때 지역변수 클래스 이외의 영역 (메소드 / 생성자 / 초기화 블럭 내부) 변수 선언문이 수행되었을 때 클래스 변수 (static) - static이 붙은 모든 변수 - 클래스내의 어디서든 사용이 가능하다 :: 공유가 자유롭다 - 인스턴스 없이 바로 사용할 수 있다 :: 클래스이름.클래스변수 - 클래스가 메모리에 로딩될 때 생성되고, 프로그램 종료까지 유지된다 - 어디서 사용하든 해당 변수에 대해서는 전부 공통적인 값을 가지고 있다 - JVM내에 메소드 영역에 생성된다 >> 클래스 멤버(static)은 클래스 멤버만 호출 가능하다 인스턴스 변수 - 클래스의..
2022.02.17 -
[Java] 가변인자
가변인자 선언 :: '타입... 변수명' - JDK1.5부터 메소드의 매개변수를 동적으로 지정해 줄 수 있게 되었다 :: 가변인자 가능 파이썬의 *args와 비슷한 역할을 한다 public class test3{ public static void main(String[] args) { System.out.println(getSum(1, 2, 3, 4, 5)); System.out.println(getSum(1, 5, 10)); System.out.println(getSum(new int[] {10, 20, 30, 40, 50})); } static int getSum(int... args){ int sum = 0; for(int n : args) sum += n; return sum; } } ------..
2022.02.17 -
[Java] 얕은 복사 / 깊은 복사
얕은 복사 (Shallow Copy) - "주소값"을 복사한다 따라서, 실제 참조하고 있는 값이 동일하다 - "="연산자는 얕은 복사를 수행 >> 따라서, 한 쪽에서 Update가 되면, 주소값을 참조하고 있는 다른쪽도 같이 Update된다 import java.util.*; public class test3{ public static void main(String[] args) { int [] a = {1, 2, 3, 4, 5}; int [] b = a; // shallow copy a[0] = 5; b[4] = 3; /* 예상 a : 5 2 3 4 3 b : 5 2 3 4 3 */ System.out.println("Array a : " + Arrays.toString(a)); System.out.p..
2022.02.17 -
[Java] 이름이 존재하는 반복문?
일반적인 반복문에서의 break / continue - break문이나 continue문을 통해서 해당 반복문의 종료 or 시작부분으로 돌아가게 된다 break문을 통해서 여러개의 반복문을 탈출하지 못하고, 오직 단 하나 :: break문 자신이 속해있는 for문만 탈출이 가능하다 public class test3{ public static void main(String[] args) { for(int i=2; i
2022.02.17 -
[Java] 메모리 구조
JVM (Java Virtual Machine) - 자바 ↔ 운영체제 사이에서 중개자 역할 - 운영체제에 상관없이 프로그램을 실행할 수 있게 해준다 → JVM은 운영체제에 종속적 - 가비지 컬렉터(GC)를 사용해서 메모리 관리를 자동으로 수행 - Stack 기반으로 동작 - (Garbage Collector / Execution Engine / Class Loader / Runtime Data Area) 4가지 구조로 나눌 수 있다 - 최초 JVM이 나왔을 당시에는 인터프리터 방식이어서 속도가 느렸지만, JIT 컴파일러 방식을 통해서 보완 JIT : Byte Code를 어셈블러 같은 네이티브 코드로 바꿈으로써, 실행이 빠르지만 비용이 발생 JVM은 모든 코드를 JIT 컴파일러 방식으로 실행하지 않고, 인..
2022.01.18 -
[Java] 정규표현식
정규표현식 (Regular Expression) 특정 규칙을 가진 문자열의 집합을 표현하기 위해 쓰는 형식언어 ex) 전화번호/민증/이메일 등 정해진 형식이 존재하고, 사용자가 해당 형식을 제대로 입력했는지 검증 - java.util.regex 패키지 안에 있는 Pattern클래스/Matcher클래스 사용 단순 패턴 사용 - 문자열을 있는 그대로 대응 /abc/ : 문자열에 정확히 'abc'라는 문자들이 순서대로 대응해야 한다 ex) 'Grab crab' : 'ab c' 문자열을 포함하고 있으나 'abc'에는 대응하지 않기 때문에 X 특수 문자 사용 - 하나 이상의 b를 찾거나, 공백을 찾는것과 같이 특수한 경우 /ab*c/ : 'a'뒤에 0개 이상의 'b'가 존재 문법 (Regex) Character ..
2022.01.10 -
[Java] 진법 변환 - Integer 클래스
Integer 진법 변환 ※ Integer클래스를 통해서 원하는 숫자를 특정 진수로 쉽게 변환할 수 있다 ▶ 10진수 ~> n진수 (2, 8, 16) 2진수 : Integer.toBinaryString(10진수 숫자) 8진수 : Integer.toOctalString(10진수 숫자) 16진수 : Integer.toHexString(10진수 숫자) ▶ Integer.parseInt(String s) String s를 10진수로 변환 ▶ Integer.parseInt(String s, int radix) s를 radix 진수로 생각하고 해당 s를 10진수로 변환 String s1 = "1100"; String s2 = "1111"; String s3 = "111000"; Integer.parseInt(s1,..
2022.01.06 -
[Java] String / StringBuffer / StringBuilder
String 한번 값이 할당되면 할당된 값은 절대로 변하지 않는다 (Immutable) String 객체는 한번 생성되면 할당된 메모리 공간이 변하지 않는다 + 연산자 / concat 메소드를 통해서 기존 String 객체 문자열에 다른 문자열을 붙이면 새로운 String 객체를 생성하고, 새로운 String 객체에 연결된 문자열을 저장한다 장점 동기화를 신경쓰지 않고, 내부 데이터를 자유롭게 공유한다 단점 문자열 연산이 많을 경우 힙 메모리(Heap)에 많은 임시 가비지가 생성되어서 힙메모리가 부족해져서 Application 성능에 치명적이다 StringBuffer / StringBuilder - String과는 반대로, Mutable 특성을 가진다 - 동일한 객체 내에서 문자열을 변경할 수 있다 - ..
2021.12.30 -
[Java] File 클래스
File 클래스 - 파일이나 디렉터리에 대한 경로명, 크기, 타입, 수정 날짜,.. 등 속성 정보 제공 - 파일이나 디렉터리에 대한 파일 삭제, 디렉터리 생성, 파일 이름 변경,... 등 파일 관리 작업 지원 File(String pathname) : pathname의 완전 경로명이 나타내는 File 객체 생성 File(String parent, String child) : parent 디렉터리에 child 이름의 서브 디렉터리/파일을 나타내는 File 객체 생성 File(File parent, String child) : parent 디렉터리에 child 이름의 서브 디렉터리/파일을 나타내는 File 객체 생성 File(URI url) : file:URI를 추상 경로명으로 변환하여 File 객체 생성 ..
2021.12.17 -
[Java] 버퍼 입출력
버퍼 - 데이터를 잠시 저장하기 위한 메모리 - 시스템의 속도나 효율 상승 입력 버퍼 스트림 BufferedReader / BufferedInputStream BufferedReader(Reader in) : in을 연결하는 디폴트 크기(16384byte)의 문자 입력 버퍼 스트림 생성 BufferedReader(Reader in, int size) : in을 연결하는 size 크기의 문자 입력 버퍼 스트림 생성 BufferedInputStream(InputStream in) : in을 연결하는 디폴트 크기(2048byte)의 입력 버퍼 스트림 객체 생성 BufferedInputStream(InputStream in, int size) : in을 연결하는 size 크기의 입력 버퍼 스트림 객체 생성 Bu..
2021.12.17