DUAL TABLE : 가상 테이블 (결과용 테이블)

형식

 SELECT 문자 출력값, 연산 결과값 FROM DUAL;

 

예시

SELECT 1 FROM DUAL;
SELECT 'A' FROM DUAL;
SELECT '가나' FROM DUAL;
SELECT 23*45 FROM DUAL;

 

 

 

Standard Function (표준 함수)

 

문자열 함수 (Character Function) 정리

 

1. 변환함수

 

LOWER() : 알파벳 값을 소문자로 변환

 

형식

 LOWER(문자열)

 

예시

SELECT LOWER('HI, HELLO') FROM DUAL; -- hi, hello

 

 

UPPER() : 알바펫 값을 대문자로 변환

 

형식

 UPPER(문자열)

 

예시

SELECT UPPER('hi, hello') FROM DUAL;  -- HI, HELLO

 

 

INITCAP() : 첫번째 글자만 대문자로 변환

 

형식

 INITCAP(문자열)

 

예시

SELECT INITCAP('HI, HELLO') FROM DUAL; -- Hi, Hello

 

 

2. 문자 조작 함수

 

CONCAT() : 두 문자열 연결(결합)

 

형식

 CONCAT(값1, 값2)

 

예시

SELECT CONCAT(CONCAT('나는',' '),'최고입니다') FROM DUAL; -- 나는 최고입니다

 


|| : 문자열 연결(결합)

 

형식

 값1 || 값2 || ... 값n

 

예시

SELECT '나는 ' || '최고입니다' FROM DUAL; -- 나는 최고입니다

 

 

SUBSTR() : 문자열 중 특정 문자 또는 문자열의 일부분을 선택 ★★★★★

 

형식

 SUBSTR(문자열, 시작INDEX, 취득개수) 

 

예시

SELECT SUBSTR('ABCDE', 3) FROM DUAL; -- CDE


-- 3번째부터 2글자 가져와라 CD

SELECT SUBSTR('ABCDE', 3, 2) FROM DUAL; -- CD

 


LENGTH() : 문자열의 길이를 구함

 

형식

 LENGTH(문자열) 

 

예시

SELECT LENGTH('ABCDE') FROM DUAL; -- 5

 

 

INSTR() :  문자열 내 위치를 구함

 

형식

 INSTR(문자열, 찾을문자열[시작위치[, 검색차수]) 

 

참고

 시작위치가 있으면 시작위치부터 찾고 시작위치가 없다면 처음부터 찾는다.

 검색차수가 있으면 검색차수번째 순서에 있는 찾는문자열의 위치를 구한다.

 

예시

SELECT INSTR('abcde', 'a') FROM DUAL; -- 1

SELECT INSTR('123ABC456DEFABC', 'A') FROM DUAL; -- 4


-- 7번째 이후의 A의 INDEX번호

SELECT INSTR('123ABC456DEFABC', 'A', 7) FROM DUAL; -- 13


-- 7번째 이후의 1번째 나오는 A의 INDEX번호

SELECT INSTR('123ABC456DEFABCABC', 'A', 7, 2) FROM DUAL; -- 16

 

 

LPAD() / RPAD() : 나머지를 빈칸 또는 지정문자로 채운다. LPAD:왼쪽, RPAD:오른쪽

 

형식

 LPAD(문자열, 개수, [지정문자])

 RPAD(문자열, 개수, [지정문자])

 

예시

SELECT LPAD('BBB', 10) FROM DUAL; --        BBB


-- 지정문자 사용 예

SELECT LPAD('BBB', 10, '-') FROM DUAL; -- -------BBB

SELECT RPAD('124', 10, '0') FROM DUAL; -- 1240000000

 

 

LTRIM() / RTRIM() : 공백,  반복적인 문자를 지움 (LTRIM : 왼쪽, RTRIM : 오른쪽)

 

형식

 LTRIM(문자열)

 RTRIM(문자열)

 LTRIM(문자열, 삭제문자열)

 RTRIM(문자열, 삭제문자열)

 

예시

-- 공백 삭제

SELECT LTRIM('   BBB' )   FROM DUAL; 

SELECT RTRIM('BBB   ' )   FROM DUAL; 

--반복적인 문자 삭제

SELECT LTRIM('AABBB', 'AA')   FROM DUAL; -- BBB 

SELECT RTRIM('BBBAA', 'AA')   FROM DUAL; -- BBB

 

 

REPLACE() : 문자열 치환

 

형식

 REPLACE(문자열, 삭제문자)

 REPLACE(문자열, 대상문자, 교체문자)

 

예시

SELECT REPLACE('AAAAABCD', 'A') FROM DUAL; -- BCD

SELECT REPLACE('AAAAABCD', 'A', 'a') FROM DUAL; -- aaaaaBCD

SELECT REPLACE('AAAAABCD', 'AA', 'a') FROM DUAL; -- aaABCD

 

 

TREANSLATE() : 문자 치환

 

형식

 TREANSLATE(문자열, 대상문자, 치환문자)

 

참고

 글자를 지정해주지 않으면 에러발생

 

예시

SELECT TREANSLATE('AAAAABCD', 'A' , 'a') FROM DUAL; -- aaaaaBCD

-- 위와 동일 : 문자 치환이기 때문에

SELECT TREANSLATE('AAAAABCD', 'AA' , 'a') FROM DUAL; -- aaaaaBCD

 

 

 

숫자 함수 정리

 

CEIL() : 숫자를 올림 

 

형식

 CEIL(숫자)

 

예시

SELECT CEIL(13.1) FROM DUAL; -- 14

 

 

FLOOR() : 숫자를 내림

 

형식

 FLOOR(숫자)

 

예시

SELECT FLOOR(13.1) FROM DUAL; -- 13

 

 

ROUND() : 숫자를 반올림

 

 

형식

 ROUND(숫자)

 ROUND(숫자, 자릿수)

 

예시

SELECT ROUND(13.4) FROM DUAL; -- 13


-- 소수점 1번째자리 까지만 인정

SELECT ROUND(13.45,1) FROM DUAL; -- 13.5

 

 

TRUNC() : 숫자를 버림(절삭)

 

형식

 TRUNC (숫자)

 TRUNC (숫자, 자릿수)

 

예시

SELECT TRUNC(123.456) FROM DUAL; -- 123


-- 소수점 2번째자리 까지만 인정

SELECT TRUNC(123.456, 2) FROM DUAL; -- 123.45


-- 소수점 1번째자리 까지만 인정

SELECT TRUNC(123.456, 1) FROM DUAL; -- 123.4


-- 정수 1번째자리까지 인정

SELECT TRUNC(123.456, -1) FROM DUAL; -- 120

 

 

MOD() : 숫자를 나눈 나머지

 

형식

 MOD(숫자, 나눌수)

 

예시

SELECT MOD(3, 2)FROM DUAL; -- 1

 

 

POWER() : 거듭제곱(승수)

 

형식

 POWER (숫자, 승수)

 

예시

SELECT POWER(3, 2) FROM DUAL; -- 9

 

 

SIGN() : 양수, 음수, 0인지 확인

 

형식

 SIGN (숫자)

 

참고 

 양수일 때 반환값 : 1  

 음수일 때 반환값 : -1   

 0일 때 반환값 : 0 

 

예시

SELECT SIGN(13.4) FROM DUAL; -- 1

SELECT SIGN(-13.4) FROM DUAL; -- -1

SELECT SIGN(0) FROM DUAL; -- 0

 

 

CHR() : ASCII 값으로 변환

 

형식

 CHR(숫자)

 

예시

SELECT CHR(65) FROM DUAL; -- A

SELECT CHR(97) FROM DUAL; -- a

 

 

 

날짜 함수

 

SYSDATE : 오늘 날짜, 시간 반환

 

형식

SYSDATE 

 

예시

SELECT SYSDATE FROM DUAL;

 

 

MONTHS_BETWEEN() : 두 날짜 사이의 월수를 계산

 

형식

 MONTHS_BETWEEN(기준날짜, 비교날짜)

 

예시

SELECT MONTHS_BETWEEN(TO_DATE('20/04/23'), TO_DATE('20/01/1')) FROM DUAL; -- 3.7096..

 

 

ADD_MONTHS() : 월을 날짜에 더하기

 

형식

 ADD_MONTHS (기준날짜, 개월수)

 

예시

SELECT ADD_MONTHS(TO_DATE('20/04/23'), 6) FROM DUAL; -- 20/10/23

 

 

NEXT_DAY() : 명시된 날짜로부터 다음 요일에 대한 날짜 계산 (오늘은 포함 X)

 

형식

 NEXT_DAY (기준날짜, 요일문자열(요일번호))

 

참고

요일문자열 :  일요일, 월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 또는 일, 월, 화, 수, 목, 금, 토

요일번호 : 1(일), 2(월), 3(화), 4(수), 5(목), 6(금), 7(토)

 

예시

SELECT SYSDATE, NEXT_DAY(SYSDATE, '월요일') FROM DUAL;

 

출력화면

 

 

LAST_DAY() : 명시된  날짜가 속한 달의 마지막 날를 반환

 

형식

 LAST_DAY (기준날짜)

 

예시

SELECT LAST_DAY('24/02/22') FROM DUAL; -- 24/02/29

 

 

ROUND() : 날짜를 반올림

TRUNC() : 날짜를 절삭

형식

 ROUND (기준날짜, 반올림기준)

 TRUNC (기준날짜, 절삭기준)

 

예시

SELECT TO_CHAR(sysdate, 'HH:MI:SS') , 
		ROUND(sysdate, 'YEAR'), sysdate,
		ROUND(sysdate), TRUNC(sysdate, 'MONTH')
FROM DUAL;

 

출력화면

 

 

 

형변환 함수 정리

 

TO_CHAR () :  날짜,시간 → 문자 변환    ★★★★★

 

형식

TO_CHAR(날짜,문자형식)

TO_CHAR(숫자,문자형식)

 

예시

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH-MI-SS') FROM DUAL; -- 2021-05-31 01-02-12

SELECT TO_CHAR(123456789, '$999,999,999,999') FROM DUAL; -- $123,456,789 

 

 

TO_DATE() : 문자열 → 날짜,시간변환       ★★★★★

 

형식

TO_DATE(문자,날짜형식)

TO_DATE(문자,숫자형식)

 

예시

SELECT TO_DATE('20210525') FROM DUAL; -- 2021/05/25 00:00:00

-- 위와 같다.(지정변환가능)

SELECT TO_DATE('20210525', 'YYYYMMDD') FROM DUAL; -- 2021/05/25 00:00:00

 

 

TO_NUMBER() : 문자열 → 숫자

 

형식

TO_NUMBER(문자)

 

참고

TO_NUMBER()사용시 연산도 가능하다.

 

예시

SELECT TO_NUMBER('123') + 45 FROM DUAL; -- 168

 

 

 

 

참고 : 하루 10분 SQL

파일 내용 읽기

 

java.io.InputStreamReader.read()

 

참고

 1 글자씩 읽기

 반환형이 int형이라 출력문 사용 시 한문자씩 받기 위해 char형으로 변환해 주어야 한다.

 while문을 사용하여 ch!= -1이라는 조건을 사용한다.

 사용 시 IOException이 발생한다. 필자는 메인 메서드에 throws 하였다.

 

 

 

java.io.BufferedReader.readLine()

 

참고

 1 문장씩 읽기

 while문 사용 시!= null을 사용하여야 한다.

 사용 시IOException이 발생한다. 필자는 메인 메서드에 throws 하였다.

 

예시

import java.io.*;

public class FileRead {
	public static void main(String[] args) throws Exception {
		
		File file = new File("d:\\File class test\\myfile.txt");
		
		// 한글자씩 읽기
		FileReader fr = new FileReader(file);
		int ch = fr.read();
		// 한문자씩 읽어올때 더 이상 불러올 문자가 없으면 -1
		while(ch != -1) { // 더이상 뱉어낼꺼 없을땐 -1
			System.out.println((char)ch);
			ch = fr.read();
		}
		fr.close();

		// 한문장씩 읽기	Buffer(=저장공간)
		BufferedReader br = new BufferedReader(new FileReader(file));
		String str;
		// 한문장씩 읽어올때 더 이상 불러올 문장이 없으면 null
		while((str = br.readLine()) != null) {
			System.out.println(str);
		}
		br.close();
		
	}
}

 

실행화면

안
녕
하
세
요
반
갑
습
니
다
안
녕
하
세
요
안녕하세요
반갑습니다
안녕하세요

 

 

'IT > Java' 카테고리의 다른 글

[자바] 싱글톤(Sington)  (0) 2021.05.31
[자바] 파일 쓰기  (0) 2021.05.26
[자바] File Class  (0) 2021.05.16
[자바] Calendar Class  (0) 2021.05.13
[자바] String Class  (0) 2021.05.11

java.io.File 클래스

입출력에 필요한 파일 및 디렉터리에 관한 정보를 다를 수 있다.

 

 

list() : 해당 디렉터리의 파일 출력 방법

 

예시

import java.io.*;

public class FileIO {
	public static void main(String[] args) {
		File file = new File("d:\\");
		//디렉토리 파일 출력
		String filelist[] = file.list();
		for (int i = 0; i < filelist.length; i++) {
			System.out.println(filelist[i]);
		}

필자의 D드라이브에는 다음과 같은 파일이 있습니다

 

실행화면 

 숨겨진 파일까지 보이는 것을 확인할 수 있습니다.

$RECYCLE.BIN
File class test
Programs
STUDY
System Volume Information
카카오톡 받은 파일

 

 

 

listFiles() : 해당 디렉터리의 파일 출력 및 파일인지 폴더인지 조사

 

예시

		File filelist2[] = file.listFiles();
		for (int i = 0; i < filelist2.length; i++) {
			if(filelist2[i].isFile()) { // 파일일 경우
				System.out.println("[파일]"+ filelist2[i].getName());
			}else if(filelist2[i].isDirectory()) { // 폴더일 경우
				System.out.println("[폴더]"+ filelist2[i].getName());
			}else {
				System.out.println("[?]"+ filelist2[i].getName());
			}
		}

필자의 D드라이브에는 다음과 같은 파일이 있습니다

 

실행화면

 list()와는 달리 listFiles()는 파일인지 폴더인지 구별하여 출력하여 줍니다.

[폴더]$RECYCLE.BIN
[폴더]File class test
[파일]File class test.txt
[폴더]Programs
[폴더]STUDY
[폴더]System Volume Information
[폴더]카카오톡 받은 파일

 

 

 

createNewFile() : 파일 생성

참고

 해당 메서드는 이름이 같은 파일이 있을 경우 파일을 생성하지 않습니다.

 

예시

		File newfile = new File("d:\\newfile.txt");
		
		try {
			if(newfile.createNewFile()) {
				System.out.println("파일 생성 성공!!");
			}else {
				System.out.println("파일 생성 실패");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		

 

이름이 같은 파일이 없는 경우 실행화면

파일 생성 성공!!

 

mkdirs() : 폴더 생성

참고

 해당 메소드는 이름이 같은 파일이 있을 경우 파일을 생성하지 않습니다.

 하위 디렉터리까지 생성이 가능합니다.

 

예시

		File newDir = new File("d:\\tmp1\\subDir");
		if(newDir.mkdirs()) {
			System.out.println("폴더 생성 성공");
		}else {
			System.out.println("폴더 생성 실패");
		}
		

 

 

 

exists() : 지정한 경로에 디렉터리 & 파일의 존재 여부 확인

 

예시

		if(newfile.exists()) {
			System.out.println("newfile.txt 파일이 존재합니다");
		}

 

 

 

setReadOnly() : 읽기 전용(파일 보존)

 

예시

		newfile.setReadOnly();

 

 

 

delete() : 파일 삭제

 

예시

		newfile.delete();
	}
}

 

 

 

'IT > Java' 카테고리의 다른 글

[자바] 파일 쓰기  (0) 2021.05.26
[자바] 파일 읽기  (0) 2021.05.16
[자바] Calendar Class  (0) 2021.05.13
[자바] String Class  (0) 2021.05.11
[자바] Java 예약어(keyword, reserved word)  (0) 2021.04.24

java.util.Calendar 클래스

날짜 시간 -> 일정관리에 주로 사용됩니다.

 

오늘 날짜 보기

참고

 사용 시 주의할 점은 Calendar.MONTH는 기본 설정이 0~11이기 때문에 +1을 해주어야 1~12가 된다.

 

예시

import java.util.*;

public class CalendarClass {
	public static void main(String[] args) {
		
		// Calendar cal = new GregorianCalendar();  ← 객체 생성 가능은하지만 잘 사용하지 않는다.
		
		Calendar cal = Calendar.getInstance();

		// 오늘 날짜 취득(getter)
		int year = cal.get(Calendar.YEAR);
		int month = cal.get(Calendar.MONTH)+1;	// 0 ~ 11
		int day = cal.get(Calendar.DATE);
		
		System.out.println(year+"년"+month+"월"+day+"일");

 

실행화면

2021년5월13일

 

 

 

 

 

날짜 지정 방법

참고

 Calendar.MONTH에 날짜 지정 시에는 +1을 할 필요가 없다!

 

예시

		// 날짜 설정(setter)
		cal.set(Calendar.YEAR, 2021);
		cal.set(Calendar.MONTH, 4);
		cal.set(Calendar.DATE, 5);
		
		year = cal.get(Calendar.YEAR);
		month = cal.get(Calendar.MONTH);
		day = cal.get(Calendar.DATE);
		
		System.out.println(year+"년"+month+"월"+day+"일");

 

실행화면

2021년4월5일

 

 

 

 

 

Calendar.AM_PM : 오전인지? 오후인지?

참고

 'Calendar.AM_PM'메서드에 삼항 연산자를 사용하여 확인한다!

 

예시

		// 오전/오후
		String ampm = cal.get(Calendar.AM_PM) == 0?"오전":"오후";
		//		               (조건)     ?"true":"false"
		System.out.println(ampm);

 

 

 

Calendar.DAY_OF_WEEK : 무슨 요일 인지 확인!

참고

 사용시 주의할 점은 Calendar.DAY_OF_WEEK == 1(일요일) ~ 7(토요일)

 switch ~ case문 사용하였다.

 

예시

		// 요일 1(일) ~ 7(토)
		int weekday = cal.get(Calendar.DAY_OF_WEEK);
		switch(weekday) {
		case 1:
			System.out.println("일요일");
			break;
		case 2:
			System.out.println("월요일");
			break;
		case 3:
			System.out.println("화요일");
			break;
		case 4:
			System.out.println("수요일");
			break;
		case 5:
			System.out.println("목요일");
			break;
		case 6:
			System.out.println("금요일");
			break;
		case 7:
			System.out.println("토요일");
			break;
		}
		
		int lastday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
		System.out.println("이번달의 마지막 날:"+lastday);
		
	}
}

 

실행화면

목요일

 

 

 

'IT > Java' 카테고리의 다른 글

[자바] 파일 읽기  (0) 2021.05.16
[자바] File Class  (0) 2021.05.16
[자바] String Class  (0) 2021.05.11
[자바] Java 예약어(keyword, reserved word)  (0) 2021.04.24
[자바] beginning  (2) 2021.04.23

java.lang.String 클래스

문자열을 사용할 때 주로 사용하는 클래스입니다.

 

 

String Class의 선언 방법

참고

 본래는 클래스를 불러오는 것이기 때문에 인스턴스를 생성하여 불러와야 하지만,

 ex) String str1 = new String("Hello");

 String str1 = "Hello"; 와 같이 선언을 하는 것이 가능하다! (자주 사용하기 때문에)

 

예시

import java.util.*;

public class MainClass {
	public static void main(String[] args) {
    
		String str;
		str = "Hello";
		System.out.println(str);
        
		String str1 = new String("Hello"); // == String str1 = "Hello";
		str1 = "hi";
		String str2 = "반갑습니다";
		System.out.println(str1);
 

 

실행화면

Hello
hi

 

 

 

concat : 문자열 연결

참고

 concat이란 메서드가 있긴 하지만 + 만으로도 연결이 가능하기에 잘 사용하지 않습니다.

 

예시

		String str3 = str.concat(str2);
		System.out.println(str3);
		String str4 = str+str2;
		System.out.println(str4);

 

실행화면

Hello반갑습니다
Hello반갑습니다

 

 

 

equals : 비교

참고

 ==으로 비교시는 false이기 때문에  "다른 문자열입니다"란 문구가 실행될 것입니다.

 이는 ==은 초창기 값으로 비교를 하기 때문입니다.

 그래서 문자열 비교시 equals를 사용합니다.

 

예시

		String str4 = "world";
		String str5 = "worl";
		
		str5 = str5 + "d";
		
		// if(str4 == str5) { // == 초창기 값으로 비교
		if(str4.equals(str5) == true) { // == true 생략가능
			System.out.println("같은 문자열입니다");
		}else {
			System.out.println("다른 문자열입니다");
		}

 

 

 

indexOf, lastIndexOf : 문자의 위치 탐색

참고

 indexOf : 앞부분의 해당 문자열 위치를 탐색

 lastIndexOf : 뒷부분의 해당 문자열 위치를 탐색

 

예시

		String str6 = "abcdabcdabcd";
		//	       01234
		int index = str6.indexOf('c');
		System.out.println("index : "+ index);
		
		int lastIndex = str6.lastIndexOf('c');
		System.out.println("lastIndex : "+ lastIndex);

실행화면

index : 2
lastIndex : 10

 

 

 

length() : 문자열의 길이

 

예시

		int len = str6.length();
		System.out.println("length : "+ len);

 

 

 

replace : 수정

 

예시

		String str7 = "A*B*C*D";
		String rep = str7.replace("*", "-");
		System.out.println("replace : "+ rep);

 

실행화면

replace : A-B-C-D

 

 

 

split : 문자열을 원하는 구분자(token)로 분리

참고

 지정한 구분자로 문자열을 나눠 배열에 저장합니다.(공백 문자열 포함)

 

예시

		/*
			aaaa-bbb-cc		'-' == token(여러가지가 있는데 안되는 것도 있다.)
			aaaa
			bbb
			cc
			1001-홍길동-24-서울시
			1001
			홍길동
			24
			서울시
		*/
		String str8 = "1001-홍길동-24-서울시";
		
		String split[] = str8.split("-");
		System.out.println(split.length);
        
		// 배열 내용 출력 메소드 Arrays.toString(배열명)
		// import 필수! (import java.util.Arrays)
		System.out.println(Arrays.toString(split));
		
		// foreach문 사용
		for ( String s : split) {
			System.out.println(s);
		}
		

 

실행화면

4
[1001, 홍길동, 24, 서울시]
1001
홍길동
24
서울시

 

 

 

substring : 문자열 잘라내기

참고

 사용시 주의할 사항은 str9.substring(0, 4) 일 경우 잘라내어 지는 문자열은 (index, index-1)이라는 점을 숙지하여야 한다.

 

예시

		String str9 = "abcdefghij";
		String str10 = str9.substring(0, 4); // 0 ~ 3
		System.out.println("str10 : "+ str10);
		
		str10 = str9.substring(5); // 5 ~ 끝까지
		System.out.println("str10 : "+ str10);

 

실행화면

str10 : abcd
str10 : fghij

 

 

 

toUpperCase : 대문자로 변환 , toLowerCase : 소문자로 변환

 

예시

		String str11 = "abcDEF";
		System.out.println(str11.toUpperCase()); // 대문자
		System.out.println(str11.toLowerCase()); // 소문자

 

실행화면

ABCDEF
abcdef

 

 

 

trim : 문자열의 앞뒤공백을 삭제

 

예시

		String str12 = " java  java        java   ";
		System.out.println(str12.trim());

 

실행화면

java  java        java

 

 

 

charAt : index를 입력하면 그 위치에 문자를 돌려주는 함수

참고

 문자열인지 숫자인지 확인할 경우 많이 사용되는 메서드이다.

 

예시

		String str13 = "가나다라마바사";
		char c = str13.charAt(3);
		System.out.println("c = "+ c);

 

실행화면

c = 라

 

 

 

contains - 문자열 탐색(있느냐? 없느냐?)

 

예시

		String str14 = "서울시 마포구 서교동";
		
		boolean b = str14.contains("마포");
		System.out.println(b);
	}
}

 

실행화면

true

'IT > Java' 카테고리의 다른 글

[자바] File Class  (0) 2021.05.16
[자바] Calendar Class  (0) 2021.05.13
[자바] Java 예약어(keyword, reserved word)  (0) 2021.04.24
[자바] beginning  (2) 2021.04.23
[자바] MultiThread  (0) 2021.04.22

예약어란?

프로그래밍 언어의 구문에 사용되는 단어

클래스나 변수, 메서드의 이름(식별자)으로 사용할 수 없다.

 

Java 예약어(나만의 방식...)

 

byte, short, char, int, long, float, double, (boolean -true, false) : 기본형 데이터 타입 

 

String : 참조형 데이터 타입, 문자열

 

if, else if, else, switch, case, for, while, do, break, return, continue : 제어문 

 

pubilc, protected, defalut, private : 접근제한자 

 

throw, throws, try, catch, finally : 예외처리

 

void : 리턴할 것이 없다 

 

static : class 소속 지정

 

class : class명 앞에

 

import : 불러오다 

 

package : 패키지

 

abstract : 추상메소드 & 추상 클래스 사용

 

super : 부모 소환

 

this : 자기 자신

 

implements : Runnable 불러올 때

 

null : String 초기값

 

final : 상수 

 

extends : 상속 

 

new : 인스턴스 생성

 

synchronized : 동기화

 

 

'IT > Java' 카테고리의 다른 글

[자바] Calendar Class  (0) 2021.05.13
[자바] String Class  (0) 2021.05.11
[자바] beginning  (2) 2021.04.23
[자바] MultiThread  (0) 2021.04.22
[자바] 은닉화/캡슐화  (0) 2021.04.21

(1) JVM

    1) JDK = jdk + jre
    2) 환경변수 : 고급시스템 설정 → 환경변수
   <1> JAVA_HOME

       새로만들기 → 변수이름 : JAVA_HOME

                                       변수 값 : java 경로 ex) C:\Program Files\Java\jdk1.8.0_281   
   <2> Path

       편집 새로만들기 %JAVA_HOME%\bin
   <3> classpath

       새로만들기   변수이름 : classpath 

                                        변수 값 : .


    3) API

   다운 후  does  api  index.html

   
(2) 실행 메커니즘

    1) 작성(java) -> 컴파일(javac.exe)  -> 실행(java.exe)

    2) .java(for Man) -> .class(for Com)

 

(3) 클래스의 구조

    1) 패키지 선언     

       ex) pakcage 디렉토리명 ;
    2) 임포트 구문     

       ex) import java.io.*;
    3) 클래스 선언 {   

       ex) class 클래스명{
   (4) 멤버변수   

       ex) int i; (멤버변수는 초기화가 됨.)
   (5) 생성자    

       ex) 클래스명( ) { } (defalut 생성자는 파라미터 생성자가 없을때 자동으로 생성된다.)
   (6) 메소드      

       ex) void m( ) {구문..}
       }

 

(4) 객체 지향 용어

    1) 클래스 : 객체를 정의하는 붕어빵 틀, 설계도
    2) 객체    : 인스턴스
    3) 생성자(Constructor) : 인스턴스 변수(필드 값 등)를 초기화 시키는 역할
    4) 메소드(Method) : 어떠한 특정 작업을 수행하기 위한 명령문의 집합
    5) 속성 : 데이터타입의 정의(?)
   

 (5) 변수(Variable)

    1) 유효범위
      <1> 멤버(전역)
    1> 클래스
    2> 객체
      <2> 지역
    1> 선언초기화
    2> 파라미터
    2) static
       <1> 클래스
       <2> 객체
    3) final
       <1> 변수
       <2> 상수
    4) 메모리
       <1> 기본형 8개
       <2> 참조형 (레퍼런스)


(6) 제어

     '실행의 흐름

      JVM -> main( ) -> ...main( ) -> JVM

 


(7) 제어문

     1) 조건문
        - if
        - switch

     2) 반복문
        - for(초기값;조건식;증감식)
        - while ( )
        - do{ }while( )


(8) 제어 : 예약어

     1) break : 해당 바디를 나간다  (반복문, switch)
     2) continue : 건너뛰어서 증감식으로 간다 (반복문)
     3) return : 자기를 호출했던 곳으로 되돌린다


(9) 배열(Array)

     데이터의 '저장소' 객체

     1) 선언
        ex) int is[ ];
     2) 생성
        ex) new int[갯수];
     3) 초기화
        ex) 방에 저장되는 첫 번째 값


(10) 컬렉션(collection) 계열 ( ==  자료구조 == 가변배열 )

      참조형 데이터를 저장하는 '저장소' 객체 

     1) 종류
       <1> Collection
              |      |
            List    Set
       <2> Map
     2) 특징
       <1> List
          - 순서 보존
          - 중복 허용
       <2> Set
          - 순서 보존 X
          - 중복 허용 X
       <3> Map
          - key와 value 쌍
          - key중복 X, value 중복 O
          - 순서 보존 X


(11) OOP(OOP, Object-Oriented Programming) 특성

     1) 상속성 - 강제형 변환(제자리로 돌아갈 때- 자식이 쌔니까)
     2) 다형성 - 오버라이딩(메소드 재정의, 생성자 X)으로 한 객체가 여러 가지 일을 할 수 있다. 
     3) 은닉성 - 멤버 변수값(속성 값, 데이터)을 감추는 것
     4) 캡슐화 - 내용을 몰라도 형태만 알면 가져다 쓸 수 있는 것


(12) (메소드) 오버라이딩

     부모 메소드를 자식에서 바꾸는 것

     1) 부모의 접근제한자 보다 자식의 접근 제한자가 같거나 넓어야 한다.
     2) 메소드 만
     3) 반환 타입도 같아야 한다.
     4) 파라미터도 종류 순서 모두 같아야 한다.


(13) 제한자

     1) 접근
        public > protected > default > private
     2) 소유
        static
     3) 수정
        final
     4) 추상
        abstract

        ex)  interface Runnable
              {
              public  abstract void run();
           }


(14) 예외 (Exception)

      정상적으로 동작하지 못하게 하는 '돌발상황'

      1) 목적
         '돌발상황' -> '정상적으로 작동'
      2) 계층도
         <1> CompileException( CheckedException)
         <2> RuntimeException
      3) 방법
         <1> 적극
              try {
              } catch(Exception e) { }
         <2> 소극
              throws Exception
      4) try 절에 2개 이상의 예외 발생
         <1> 상속 O
              자식 예외부터 catch절
         <2> 상속 X
              catch절 순서 X
      5) 2개 이상의 예외를 떠넘길 때
         throws AException, BException,...
      6) finally절
         <1> 항상 수행
         <2> try절 나오면...
              catch 절이나 finally 절이나...
              둘 다 나오거나 해야 함
         <3> return 만나도 finally는 수행하고 return 함
         <4> 얘는 못 이김

                   System.exit(정수);

 

 

(15) 쓰레드(Thread)

프로세스를 구성하는 '제어의 흐름'

      1) Process / Thread 
         - Process : 실행의 단위 (실행되는 있는 프로그램)
         - Thread  : Process를 구성하는 작업 단위
      2) 생성
         - java.lang.Thread 상속법

         - java.lang.Runnable 상속법

      3) 시작
         th.start();

      4) 비유 : '피고용인'
      5) LifeCycle
         - 5가지
         - '메소드', '스케쥴러', '시간'
      6) Priority
         - 우선순위 th.setPriority(10);
         - 1 ~ 10
         - MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
      7) 동기화
         - 멀티쓰레드에서 무결성을 보장하기 위해서
         - 비유: '화장실의 문고리'
         - schronized
         - 방법
           schronized void m( ) { }
   
           void m( ){
            로직 1
           schronized (this) {
             로직 2
            }
           }

'IT > Java' 카테고리의 다른 글

[자바] String Class  (0) 2021.05.11
[자바] Java 예약어(keyword, reserved word)  (0) 2021.04.24
[자바] MultiThread  (0) 2021.04.22
[자바] 은닉화/캡슐화  (0) 2021.04.21
[자바] 다형성  (0) 2021.04.21

Thread란?

 Process를 구성하는 '작업 단위'

MultiThread란?

 하나의 Process 내에서 여러 Thread가 동시에 작업을 수행하는 것

 

 

1) Thread class를 상속

 

예시

public class MultiThread extends Thread{
	MultiThread() {
		start();
	}
	void main1() {
		while(true) {
			try {
			Thread.sleep(1000);
			}catch(InterruptedException ie){}
			System.out.println("main");
			}
		}
	public void run() {
		while(true) {
			try {
			Thread.sleep(1000);
			}catch(InterruptedException ie){}
			System.out.println("Thread");
			}
		}
	public static void main(String[] args) {
		MultiThread mt = new MultiThread();
		mt.main1();
	}
}

 

 

2) Runnable인터페이스를 구현

 

예시

public class MultiThread2 implements Runnable{
	MultiThread2(){
		new Thread(this).start();
	}
	public void run() {
		while(true) {
			try {
				Thread.sleep(1000);
			}catch(InterruptedException ie) {}
			System.out.println("Thread");
		}
	}
	void main1() {
		while(true) {
			try {
				Thread.sleep(1000);
			}catch(InterruptedException ie) {}
			System.out.println("main");
		}
	}
	public static void main(String[] args) {
		MultiThread2 mt = new MultiThread2();
		mt.main1();
	}
}

 

참고

 *. start(); : 실행 시작

 

실행화면

main
Thread
Thread
main
Thread
main
main
Thread

두 소스를 실행화면 비슷하다.
실행 순서는 개발자가 알 수가 없다.

 

 

 

'IT > Java' 카테고리의 다른 글

[자바] String Class  (0) 2021.05.11
[자바] Java 예약어(keyword, reserved word)  (0) 2021.04.24
[자바] beginning  (2) 2021.04.23
[자바] 은닉화/캡슐화  (0) 2021.04.21
[자바] 다형성  (0) 2021.04.21

은닉화(Information Hiding)란 ?

정의

 외부 객체로부터 '속성 값(데이터, 멤버 변수값)'을 감추는 특성

 

조건

 접근제어자 private로 감춘다. (private - class내에서만 접근가능)

 

private를 사용하는 이유 ?

 외부로부터 데이터를 보호(캡슐화)하기 위해서
 인스턴스 변수는 private로 하여 외부에서 접근하지 못하도록 하고, 메서드는 public으로 하여 직접 접근은 막고 메서드를 통한 간접 접근 허용

 외부에는 불필요한, 내부적으로만 사용되는 , 부분을 감추기 위해서

 

접근 방법

 setter : 수정한다. 

 getter : 읽는다.

 

캡슐화(Encapsulation)란 ?

정의 

 객체가 은닉화 된 상태에서 메소드나 생성자의 일의 내용을 알 필요 없이, 그 형태(메서드 이름/파라미터/리턴 타입)만 알면 호출해서 사용할 수 있는 특성

 

예시

public class Hiding {
	private String add = "123456-2345678";
	private int balance = 2000;
	
	void setAdd(String add) {
		this.add = add;
	}
	String getAdd() {
		return add;
	}
	void setBalance(int balance) {
		this.balance = balance;
	}
	int getBalance() {
		return balance;
	}
	public static void main(String[] args) {
		Hiding h = new Hiding();

		h.setAdd("123456-1234123");
		System.out.println(h.getAdd());
		h.setBalance(40000);
		System.out.println(h.getBalance());
	}
}

 

실행화면

123456-1234123
40000

 

 

 

'IT > Java' 카테고리의 다른 글

[자바] String Class  (0) 2021.05.11
[자바] Java 예약어(keyword, reserved word)  (0) 2021.04.24
[자바] beginning  (2) 2021.04.23
[자바] MultiThread  (0) 2021.04.22
[자바] 다형성  (0) 2021.04.21

다형성(Polymorphism )이란 ?

정의

 '같은 타입'의 객체의 '같은 메소드'가 다른 일을 하는 특성

 객체를 부품 화하여 유지 보수를 용이하다.

 

조건

 상속, Overriding, 형 변환

 

예시

public class Pp {
	void see(){
		System.out.println("무엇을 본다");
	}
}
class CHee1 extends Pp {
	void see(){
		System.out.println("유튜브를 본다");
	}
}
class CHee2 extends Pp {
	void see(){
		System.out.println("TV를 본다");
	}
}
class CHee3 extends Pp {
	void see(){
		System.out.println("영화를 본다");
	}
}
public class Pp1 {
	public static void main(String[] args) {
		Pp a = new Pp();
		Pp b = new CHee1();
		Pp c = new CHee2();
		Pp d = new CHee3();
		a.see();
		b.see();
		c.see();
		d.see();
	}
}

 

실행화면

무엇을 본다
유튜브를 본다
TV를 본다
영화를 본다

 

 

'IT > Java' 카테고리의 다른 글

[자바] String Class  (0) 2021.05.11
[자바] Java 예약어(keyword, reserved word)  (0) 2021.04.24
[자바] beginning  (2) 2021.04.23
[자바] MultiThread  (0) 2021.04.22
[자바] 은닉화/캡슐화  (0) 2021.04.21

+ Recent posts