일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Homebrew
- ibatis
- API
- spring
- ddit
- 이클립스
- Oracle
- crud
- 단축키
- python
- 반복문
- servlet
- Android
- 맥
- 자바
- nodejs
- pyqt
- 배열
- Java
- 대덕인재개발원
- 컬렉션프레임워크
- 객체지향
- jsp
- 자바문제
- Mac
- html
- JDBC
- 생활코딩
- Error
- FastAPI
Archives
- Today
- Total
romworld
API 클래스 본문
package g_api;
public class StringSpeedTest {
// 문자열을 사용하는 방법에는 String 객체와 StringBuffer 객체가 있다.
// 다양한 장단점이 있지만 속도만 보자
public static void main(String[] args) {
String str = "a";
long start = System.currentTimeMillis();
for(int i = 0; i < 20000; i++) {
str += "a";
}
long end = System.currentTimeMillis();
System.out.println("String 객체 : " + (end - start) + "ms");
// 속도가 훨씬 빠름 대신에 이거는 + 대신 append로 더하면 됨
StringBuffer sb = new StringBuffer("a");
start = System.currentTimeMillis();
for(int i = 0; i < 20000; i++) {
sb.append("a");
}
end = System.currentTimeMillis();
System.out.println("StringBuffer 객체 : " + (end - start) + "ms");
}
}
package g_api;
import java.util.ArrayList;
import java.util.List;
public class WrapperClass {
/*
* Wrapper 클래스 : 기본형 타입을 객체로 사용해야 할 때 대신 사용하는 클래스
* - boolean : Boolean
* - char : Character
* - byte : Byte
* - short : Short
* - int : Integer
* - long : Long
* - float : Float
* - double : Double
*
* */
public static void main(String[] args) {
int a = 0; // int는 자료형 그 자체이기 때문에 ~~안에 같은 크기를 가지지 않음 그래서 a.이 안됨
Integer iw = new Integer(a); // 박싱
int b = iw; // 언박싱 (박스 안에서 숫자를 꺼내다)
System.out.println(Integer.TYPE + " / " + Integer.SIZE + "bit");
List<Integer>list = new ArrayList<Integer>(); //<>에는 객체만 올 수 있다
List<Object>list3 = new ArrayList<Object>(); // 모든 클래스는 Object클래스를 상속
//List<int>list4 = new ArrayList<int>(); //자료형만 담을 수 없기에 보완을 함 그래서 Integer로 써야함
// 컬렉션프레임워크에는 객체만 담을 수 있다.
int[] list2 = new int[0];
}
}
package g_api;
import java.util.Arrays;
public class StringClass {
/*
* String
* - 여러개의 '문자'를 사용하기 쉽게 만들어놓은 클래스
*
* - String의 주요 메서드
* - boolean equals() : 문자열의 내용이 같은지 반환한다. (Override)
* - int length() : 문자열의 길이를 반환한다.
* - char charAt(int index) : 특정 인덱스에 위치한 문자를 반환한다.
* - String subString(int beginIndex [, int endIndex = 끝 인덱스]) //값을 지정하지 않으면 끝인덱스 반환
* : 문자열의 특정 부분을 잘라서 반환한다.
* - int indexOf(String str) : 문자열내의 특정 문자의 인덱스를 반환한다.
* - contains() : 문자열이 특정 문자열을 포함하고 있는지 반환한다.
* - split() : 문자열을 특정 문자를 기준으로 나누어 배열형태로 반환한다.
* - trim() : 문자열 앞 뒤 공백을 제거해 반환한다.
* - valueOf() : 다른 타입의 데이터를 문자열로 변환해 반환한다.
* */
public static void main(String[] args) {
String s1 = new String("문자열");
String s2 = new String("문자열");
String s3 = "문자열";
String s4 = "문자열";
// equals()
System.out.println(s1.equals(s2)); // 이렇게하면 주소값 안의 내용을 비교하는거 true
System.out.println(s1 == s2); // 이렇게하면 주소값끼리 비교하는거여서 false
//변수처럼 사용된 String은 주소값을 공유함 그래서 s3,s4는 true라고 나옴
System.out.println(s3.equals(s4));
System.out.println(s3 == s4);
//length()
System.out.println(s1.length()); //한칸씩해서 길이3
//charAt()
for(int i = 0; i<s1.length(); i++) {
char charAt = s1.charAt(i);
System.out.println(charAt);
}
// s1을 뒤집어 출력해주세요 (열자문)
String rev = "";
for(int i = s1.length() -1; i >= 0; i--) {
rev += s1.charAt(i);
}
System.out.println(rev);
//substring()
// 123456789
s1 = "abcdefghij";
String sub1 = s1.substring(3); //3번 인덱스부터 끝까지
System.out.println(sub1);
String sub2 = s1.substring(5,8); //5번 인덱스부터 8번 인덱스 '전'까지
System.out.println(sub2);
//indexof()
int indexOf = s1.indexOf("e");
System.out.println(indexOf);
indexOf = s1.indexOf("z");
System.out.println(indexOf); //찾으려는 문자열이 없으면 -1 반환
s1 = "유재석,박명수,정준하,하하";
System.out.println(s1.substring(s1.indexOf("정준하")));
// 예제) substring 과 indexOf를 조합해서 가격만 int[]에 저장해주세요.
String[] menu = {
"수박 20000원",
"오렌지 10000원",
"귤 500원",
"블루베리 3000원"
};
// 수박 가격
// String wm = menu[0]; // "수박 20000원"
// int spaceIndex = wm.indexOf(" "); //2
// int wonIndex = wm.indexOf("원"); // 8
// String priceStr = wm.substring(spaceIndex + 1, wonIndex); // "200000"
// int price = Integer.parseInt(priceStr);
// System.out.println(price);
int[] prices = new int[menu.length];
for(int i = 0; i< prices.length; i++) {
prices[i] = Integer.parseInt(
menu[i].substring(menu[i].indexOf(" ") + 1,
menu[i].indexOf("원")));
}
System.out.println(Arrays.toString(prices));
s1 = "abcdefghij";
// contains()
// 방법 1
boolean contains = s1.contains("c");
System.out.println(contains);
// 방법 2 indexOf가 더 좋음 이걸 쓰는 연습을 하장~~ ㄷ ㄷ
contains = s1.indexOf("c") > -1;
System.out.println(contains);
//split()
String[] split = s1.split("e"); //쪼갠 기준 문자는 사라진다
System.out.println(Arrays.toString(split)); // abcd fhij 로 나뉘었음
split = s1.split("@");
System.out.println(Arrays.toString(split)); // s1에 @가 없기 때문에 그냥 통째로
split = s1.split("a");
System.out.println(Arrays.toString(split)); // a는 사라지고 그냥 쪼개진다 split = {"", "bcdefhjij"}
for(int i = 0; i < menu.length; i++) {
split = menu[i].split(" ");
System.out.printf("메뉴명 : %s / 가격 : %s\n", split[0], split[1]);
}
// trim()
s1 = " 문 자 열 ";
String trim = s1.trim();
System.out.println("[" + s1 + "] => [" + trim + "]"); // 중간 띄어쓰기는 상관 없음 앞뒤에 공백만 제거 ~~
// 사용자의 실수로 아이디나 비밀번호 뒤에 공백이 들어가는 것을 방지할 수 있음
// (javascript 에서 .trim()은 모든 공백을 제거함)
// valueOf()
int number = 10;
s1 = number + "";
s1 = String.valueOf(number);
// Integer.parseInt(s1)과 똑같음
System.out.println(s1);
}
}
package g_api;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression {
/*
* 정규표현식(정규식) : 문자열의 패턴을 검사하는 표현식
*
* ^ 뒷 문자로 시작
* $ 앞 문자로 종료
* . 임의의 문자(줄바꿈제외)
* * 앞 문자가 0개 이상
* + 앞 문자가 1개 이상
* ? 앞 문자가 없거나 1개
* [] 문자의 집합이나 범위([a-z] :a부터 z까지, [^a-z] : a부터 z가 아닌 것)
* {} 앞 문자의 개수({2} : 2개, {2,4} : 2개 이상 4개 이하)
* () 그룹화 (1개의 문자처럼 인식)
* | OR 연선
* \s 공백, 탭, 줄바꿈
* \S 공백, 탭, 줄바꿈이 아닌 문자
* \w 알파벳이나 숫자
* \W 알파벳이나 숫자 가 아닌 문자
* \d 숫자
* \D 숫자가 아닌 문자
* (?i) 뒷 문자의 대소문자 구분 안함
* \ 정규표현식에서 사용되는 특수문자 표현
* */
public static void main(String[] args) {
String str="abc123";
String regex="[a-z]{3}[0-9]{1,3}";
regex ="[a-z0-9]+";
regex = "\\w*";
regex = ".*";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
System.out.println(m.matches());
// 아이디, 전화번호,이메일주소의 유효성을 검사하는 정규표현식
// 아이디 : [a-z0-9]{5,20} : 5개 이상 20개 이하의 소문자거나 숫자
// 전화번호 :^0\\d{1,3}\\d{3,4}-\\d{4}
// : 0으로 시작하고 숫자가 1개 이상 3개 이하 + "-"
// + 숫자가 3개 이상 4개 이하 + "-" + 숫자 5개
// 이메일 주소 : [a-z0-9]{5,20}@[a-zA-Z]+\\.(?i)(com|net|org|([a-z]{2}\\.kr))$
}
}
package g_api;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateClass {
public static void main(String[] args) {
String str = "2022-10-05"; //이거는 35일 뒤에 무슨 요일인지라는 구체적인 계산이 어려움
Date today = new Date();
System.out.println(today);
// date 객체를 보기편한 문자열로 변환
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); //MM(월) mm(분) yyyy(년도)
System.out.println(sdf1.format(today));
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss.SSS"); //HH(시) mm(분) ss.SSS(초.초)
System.out.println(sdf2.format(today));
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
System.out.println(sdf3.format(today));
SimpleDateFormat sdf4 = new SimpleDateFormat("yy-MM-dd(E)w hh:mm:ss a"); //(E) 요일 w(올해의 몇번째 주) W(이번달 중 이번주가 몇번째 주인지) a(am?pm) hh(12시간표기법)
System.out.println(sdf4.format(today)); //d는 한자리 숫자만 나옴 dd는 두자리 숫자가 나옴
// Oracle :2022/10/05
// Mysql : 2022-10-05
// 문자열 -> 날짜 객체 변환
String str1 = "2000년 08월 01일";
SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy년 MM월 dd일");
try {
Date dateStr = sdf5.parse(str1);
System.out.println(dateStr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//(유지보수가 편하고 알아보기 편함)
Calendar cal = Calendar.getInstance(); // 싱글톤 패턴 : 프로그램이 동작하면서 캘린더라는 객체는 딱 한번만 할수 있음 그래서
//cal = new Calendar(); // 객체를 생성할려니 빨간줄이 뜨는거임(하나의 객체만 사용)
cal.setTime(today);
System.out.println(cal.getTime());
cal.set(2020, 10, 1); //2020년 11월 1일 (자바는 0부터 시작되기 때문에)
System.out.println(cal.getTime());
// 날짜 계산
cal.add(Calendar.YEAR, 1); // 년 2020년부터 1년을 증가시킨거임 그래서 결과값으로 2021이 나옴
System.out.println(cal.getTime());
System.out.println(sdf3.format(cal.getTime()));
cal.add(Calendar.MONTH, 2); // 월
cal.add(Calendar.DAY_OF_MONTH, -20); // 일
cal.add(Calendar.HOUR, 4); // 시
cal.add(Calendar.MINUTE, 40); // 분
cal.add(Calendar.SECOND, 400); // 초
}
}
'JAVA > 개념정리' 카테고리의 다른 글
JDBC (DB와 연결) (0) | 2022.10.10 |
---|---|
컬렉션 프레임워크 (0) | 2022.10.10 |
예외처리 (0) | 2022.10.10 |
추상 클래스와 인터페이스 (0) | 2022.10.09 |
Chapter 07 상속 (0) | 2022.10.04 |
Comments