/*
StringBuilder, StringBuffer 클래스
문자열을 저장하는 String클래스는 내부의 문자열을 직접 수정할 수 없다. 예를 들어서 String.replace()
메서드는 내부의 문자열을 변경아니라 새롭게 대체된 문자열객체를 리턴한다. 예를 들어서 "JAVA" +
"PROGRAMMING"을 실행하는 경우 내부문자열을 수정할 수 없기 때문에 "JAVA PROGRAMMING"이라는 새로운
String객체를 생성한 후에 그 객체의 참조주소를 리턴한다. 문자열을 결합할 경우에 "+"연산자를 사용하면
그 수 만큼의 새로운 String객체의 수가 증가하기 때문에 프로그램의 성능저하의 원인이 된다.
따라서, 문자열을 변경하는 작업이 많을 경우에는 String 클래스를 사용하는 것 보다 java.lang에 있는
StringBuffer나 StringBuilder클래스를 사용하는 것이 좋다. 이 두 클래스는 내부법(buffer, 데이터를
임시로 저장하는 메모리)에 문자열을 저장해 두고 그 안에서 수정, 추가, 삭제 등으 ㅣ작업을 할 수 있도록
한다. String처럼 새로운 객체를 만들지 않고 문자열을 조작할 수 있다는 장점이 있다.
StringBuffer나 StringBuilder의 사용법은 동일한데 차이점은 StringBuffer는 멀티쓰레드환경에서 ㅅ ㅏ용
할 수 있게 동기화가 적용이 되어 있는 쓰레드(Thread)에 안전하지만 StringBuilder는 안전하지 못해서
단일 쓰레드환경에서만 사용하도록 설계되어 있다.
String Buffer나 StringBuilder 제공 메서드
1. append : 문자열 끝에 주어진 문자열을 추가
2. insert : 문자열 사이에 주어진 문자열을 삽입
3. delete : 매개값으로 주어진 문자열을 삭제
4. deleteCharAt : 주어진 위치(index)의 문자를 삭제
5. replace : 다른 문자열로 변경
6. reverse : 문자열을 그대로 뒤집기
7. setCharAt : 주어진 위치의 문자열을 매개변수로 전달되 문자열로 대체
StringBuilder(int capacity)생성자는 capacity로 주어진 수 만큼의 문자를
저장할 수 있는 초기 buffer를 생성한다. StringBuilder는 버퍼가 부족할 경우
자동으로 버퍼크기만큼 증가시켜 주기 때문에 초기버퍼의 크기는 그다지 중요
하지 않다.
*/
public class StringBufferMain {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
System.out.println(sb.hashCode()+", "+sb);
// 1. append
sb.append("JAVA");
System.out.println(sb.hashCode()+", "+sb);
sb.append("PROGRAMMING");
System.out.println(sb.hashCode()+", "+sb);
// 2. insert
sb.insert(4, "홍길동");
System.out.println(sb.hashCode()+", "+sb);
// 3. delete
sb.delete(4, 5);
System.out.println(sb.hashCode()+", "+sb);
// 4. deleteCharAt
sb.deleteCharAt(4);
System.out.println(sb.hashCode()+", "+sb);
// 5. replace
sb.replace(4, 6, "이강인");
System.out.println(sb.hashCode()+", "+sb);
// 6. reverse
sb.reverse();
System.out.println(sb.hashCode()+", "+sb);
// 7. setCharAt
sb.setCharAt(6, 'X');
System.out.println(sb.hashCode()+", "+sb);
// 8. length
System.out.println(sb.hashCode()+", "+sb.reverse()+", 문자열의 총길이 = "+sb.length());
// 9. toString() - StringBuilder를 String으로 변환
String result = sb.toString();
System.out.println(result.hashCode()+", "+result+", "+result.getClass());
// 10. String -> StringBuffer 참조타입으로 변환
StringBuffer sb1 = new StringBuffer(result);
System.out.println(sb1.hashCode()+", "+sb1+", "+sb1.getClass());
}
}
public class StringMethodMain1 {
public static void main(String[] args) {
// 1. replace
String oldStr = "자바 프로그램";
String newStr = oldStr.replace("자바", "Java");
System.out.println(newStr);
System.out.println(oldStr.hashCode()+":"+newStr.hashCode()); // 복사한 것을 수정한 것
oldStr.replace("자바", "Python");
System.out.println(oldStr.hashCode() + ":"+oldStr);
oldStr = oldStr.replace("자바", "Python");
System.out.println(oldStr.hashCode() + ":"+oldStr);
System.out.println();
// 2. substring
// a. substring(int from, int to) : from~to-1까지의 문자열을 추출
// b. substring(int from) : from~문자열끝까지으ㅣ 문자열을 추출
String ssn = "991118-1234567";
String birthday = ssn.substring(0, 6);
String sno = ssn.substring(7);
String gender = ssn.substring(7, 8);
System.out.println("생년월일= " +birthday+ ", 주민번호= " +sno + ", 성별= "+gender);
System.out.println();
// 3. toLowerCase, toUpperCase
String str1 = "java programming";
String str2 = "JAVA PROGRAMMING";
System.out.println(str1.toUpperCase()+":"+str1);
str1 = str1.toUpperCase();
System.out.println(str1.toUpperCase()+":"+str1);
System.out.println(str1.toUpperCase().toLowerCase());
System.out.println();
// 대소문자 비교
str1 = "java programming";
System.out.println(str1.equals(str2));
System.out.println(str1.equalsIgnoreCase(str2));
// 4. trim : 앞뒤 공백 제거
String tel1 = " 02";
String tel2 = "1234 ";
String tel3 = " 02 1234 ";
System.out.println(tel1.trim()+", "+tel2.trim()+", "+tel3.trim());
System.out.println(tel3);
tel3 = tel3.trim();
System.out.println(tel3);
// 5. valueOf : int, double 등의 기본타입을 문자열로 변환
String val1 = String.valueOf(false);
String val2 = String.valueOf(10);
String val3 = String.valueOf(3.14);
System.out.println(val1);
System.out.println("val2 + val3= " +(val2+val3));
int val4 = Integer.parseInt("10");
int val5 = Integer.valueOf("10");
System.out.println("val4 + val5= " +(val4+val5));
}
}
public class StringMethodMain2 {
public static void main(String[] args) {
// 6. charAt
String ssn = "991118-1234567";
char gender = ssn.charAt(7);
System.out.println(gender == '3'?"남자":"여자");
switch(gender) {
case '1':
case '3':
System.out.println("남자");
break;
case '2':
case '4':
System.out.println("여자");
}
System.out.println(gender == '1'?"남자":(gender == '3'?"남자":"여자"));
// 7. getBytes
// a. getBytes()
String str = "안녕하세요"; // uft-8 한글 3bytes, euc-kr(ms949) 한글 2bytes
byte[] byte1=str.getBytes();
System.out.println(byte1.length + "bytes");
String str1 = new String(byte1);
System.out.println("byte array(utf-8)->string= " +str1);
System.out.println();
// b. getBytes(문자셋)
try {
byte[] byte2=str.getBytes("EUC-KR");
System.out.println(byte2.length+"bytes");
String str2 = new String(byte2);
System.out.println("byte array(euc-kr)->string= " +str2);
byte[] byte3=str.getBytes("UTF-8");
System.out.println(byte3.length+"bytes");
String str3 = new String(byte3);
System.out.println("byte array(utf-8)->string= " +str3);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// 8. indexOf
// 매개값으로 주어진 문자열이 시작되는 위치(인덱스)를 정수로 리턴
// 주어진 문자열을 찾지 못했을 경우 -1을 리턴
String 제목 = "매개값으로 주어진 문자열이 시작되는 위치";
int loc = 제목.indexOf("문자열");
System.out.println("문자열의 위치= "+loc);
loc = 제목.indexOf("이강인");
System.out.println("이강인의 위치= "+loc);
if(제목.indexOf("이강인")>=0) {
System.out.println("이강인뉴스기사 검색이 성공했습니다");
} else {
System.out.println("이강인뉴스기사 검색을 하지 못했습니다");
}
}
}
public class StringSplitMain {
public static void main(String[] args) {
// String.split()
String str = "1,2,3,4,5,6,7,8,9,10";
String[] nums = str.split(",");
System.out.println(nums.length);
for(String num:nums) {
System.out.println(num+" ");
} System.out.println();
String text = "홍길동,홍길자@홍길순&홍길상-홍길성";
String[] names = text.split(",|&|-|@");
for(String name:names) {
System.out.println(name+" ");
}System.out.println();
}
}
/*
StringTokenize클래스
문자열이 특정 구분자(delimiter)로 연결이 되어 있는 경우 구분자를 기준으로 문자열을
분리하기 위해서 String.split(regex)을 이용하거나 java.lang.StringTokenizer클래스를
이용할 수 있다.
String.split(regex)은 정규표현식으로 분리하지만 StringTokenizer()는 문자(구분자)로
구분한다. 문자열이 한 종류의 구분자로 연결이 되어 있을 경우에는 StringTokenizer를
이용하면 손쉽게 문자열(token)을 분리할 수가 있다.
StringTokenizer의 메서드
1. countToken() : 현재 남아 있는 token의 갯수를 int로 리턴
2. hasMoreToken() : 남아 있는 token이 있는지 여부를 boolean으로 리턴
3. nextToken() : token을 하나씩 꺼내오는 메서드로 String으로 리턴
... nextToken메서드는 더 이상 꺼내올 token이 없을 경우에 NoSuchElementException
이 발생하기 때문에 예외처리를 해야 한다.
*/
public static void main(String[] args) {
String text = "홍길동 홍길자 홍길순 홍길상 홍길성";
StringTokenizer st = new StringTokenizer(text); // 구분자를 정의하지 않으면 기분 구분자값은 공란
int count = st.countTokens();
System.out.println("현재 남아있는 token의 갯수 = " +count);
System.out.println("현재 token이 남아있는가? "+ st.hasMoreTokens());
System.out.println();
String str = st.nextToken();
System.out.println("꺼내온 token= " + str);
System.out.println("현재 남아있는 token의 갯수 = " +st.countTokens());
System.out.println("현재 token이 남아있는가? "+ st.hasMoreTokens());
System.out.println();
str = st.nextToken();
System.out.println("꺼내온 token= " + str);
System.out.println("현재 남아있는 token의 갯수 = " +st.countTokens());
System.out.println("현재 token이 남아있는가? "+ st.hasMoreTokens());
System.out.println();
// 1. for
st = new StringTokenizer(text);
count = st.countTokens();
System.out.println("현재 남아 있는 token의 갯수= "+count);
for(int i=0;i<st.countTokens();i++) {
String token = st.nextToken();
System.out.println(token);
}
System.out.println();
// 2. while
st = new StringTokenizer(text,"/");
while(st.hasMoreTokens()) {
String token = st.nextToken();
System.out.println(token);
}
System.out.println();
System.out.println("현재 남아있는 token의 갯수 = " +st.countTokens());
System.out.println("현재 token이 남아있는가? "+ st.hasMoreTokens());
}
}
/*
정규표현식과 Pattern 클래스(java.util.regex.Pattern)
문자열에 정해져있는 형식(정규식, Regular Expression)으로 구성이 되어 있는지 여부를 검증
할 때 사용한다. 정규식을 작성하는 방법은 API에서 java.util.regex.Pattern 클래스를 참조.
정규식은 문자 or 숫자 등 반복기호가 결합된 문자열이다. 예를 들어서 문자열이
02-1234-1234 또는 010-1234-1234와 같이 전화번호를 포함하는지 여부를 확인할 수가 있는데
정규식으로 표현하면 "(02|010)-\d{3,4}-\d{4}"의 형태인지 여부를 boolean으로 리턴, 이메일일
경우 "hong@gmail.com"일 패턴은 "\w+@\w+\.\w(\.\w+)?"의 형태로 검증할 수가 있다.
*/
public class RegExMain {
public static void main(String[] args) {
// 1. 전화번호의 유효성 검증하기
String tel1 = "02-123-4567";
String tel2 = "010-9999-8888";
// 검증
// 지역변호가 2, 3자리인지, 숫자인지를 비교
// 전화번호구분자가 "-"인지 확인
// 국번 숫자인지, 3, 4자리인지를 비교
// 뒤 4자리가 숫자인지, 4자리인지를 비교
// 정규식패턴
String re = "(02|010|031|051)-\\d{3,4}-\\d{4}";
boolean result = Pattern.matches(re, tel1);
System.out.println(result);
result = Pattern.matches(re, tel2);
System.out.println(result);
System.out.println(Pattern.matches(re, "031-123-1234"));
System.out.println(Pattern.matches(re, "032-123-1234"));
System.out.println(Pattern.matches(re, "010-123-1234"));
System.out.println();
if(Pattern.matches(re, "032-123-1234")) {
System.out.println("정상 전화 번호");
}else {
System.out.println("비정상 전화 번호");
}System.out.println();
// 2. 이메일유효성검증
String email = "amdin@gmail.com";
re = "\\w+@\\w+\\.\\w+(\\.\\w+)?";
if(Pattern.matches(re, email)){
System.out.println("정상 이메일");
}else {
System.out.println("비정상 이메일");
}System.out.println();
if(Pattern.matches(re, "amdingmail.com")){
System.out.println("정상 이메일");
}else {
System.out.println("비정상 이메일");
}System.out.println();
// 3. 문자 검증
System.out.println(Pattern.matches("[a-z]", "a"));//소문자만
System.out.println(Pattern.matches("[A-Z]", "A"));//대문자만
System.out.println(Pattern.matches("[a-z]", "az"));//개별문자
System.out.println(Pattern.matches("[a-z]+", "az"));//단어단위
System.out.println(Pattern.matches("[a-zA-Z]+", "Za"));//단어단위, 소문자, 대문자
System.out.println();
// 4. 숫자
System.out.println(Pattern.matches("[0-9]", "0"));
System.out.println(Pattern.matches("[0-9]", "01"));
System.out.println(Pattern.matches("[0-9]+", "01"));
// 영문자, 소문자, 대문자
System.out.println(Pattern.matches("[0-9a-zA-Z]+", "01a8b"));
System.out.println(Pattern.matches("[0-9a-zA-Z]+", "0123456"));
System.out.println(Pattern.matches("\\w+", "0ab9"));
System.out.println(Pattern.matches("[0-9a-zA-Z]+", "0123456_"));
System.out.println(Pattern.matches("\\w+", "0123456_"));
System.out.println();
// 5. not 영문자, 소문자, 대문자, _
System.out.println(Pattern.matches("\\w+", "0123456_"));
System.out.println(Pattern.matches("\\W+", "0123456_"));
System.out.println(Pattern.matches("\\W+", "0123456_"));
System.out.println(Pattern.matches("[0-9a-zA-Z_]+", "0123456_"));
System.out.println(Pattern.matches("[^0-9a-zA-Z_]+", "0123456_"));// ^은 not
}
}
/*
Arrays클래스
Arrays클래스는 배열에 관한 조작기능을 지원하는 유틸리티 클래스이다. 배열의 복사, 요소의 정렬
요소검색과 갗은 기능을 제공한다.
단순한 배열의 복사는 System.arraycopy()메서드를 사용할 수 있으나 Arrays는 추가적으로 요소정렬
검색, 비교와 같은 기능을 제공한다. Arrays 관련 모든 메서드는 static 메서드이기 때문에 객체생성
없이 바로 Arrays 클래스로 직접 메서드를 호출할 수 있다.
*/
public class ArraysCopyMain {
public static void main(String[] args) {
char[] arr1 = {'J','A','V','A'};
// 배열복사
// 1. Arrays.copyOf()
char[] chr1 = Arrays.copyOf(arr1, arr1.length);
System.out.println(chr1);
System.out.println(Arrays.toString(chr1));
System.out.println();
// 2. Arrays.copyOfRange(object, from, to)
char[] chr2 = Arrays.copyOfRange(arr1, 1, 3);
System.out.println(chr2);
System.out.println(Arrays.toString(chr2));
System.out.println();
// 3. System.arrayCopy()
char[] chr3 = new char[arr1.length];
System.arraycopy(chr1, 0, chr3, 0, arr1.length);
System.out.println(chr3);
System.out.println(Arrays.toString(chr3));
System.out.println();
for(int i = 0; i < chr3.length; i++) {
System.out.println("chr3["+i+"]= "+chr3[i]);
}
}
}
public class ArraysMain {
public static void main(String[] args) {
// 1. 기본타입 정렬 및 검색
int[] scores = {90, 98 ,80};
Arrays.sort(scores);
for(int score:scores) {
System.out.println(score+", ");
}System.out.println();
// 2. 검색 binarySearch는 인덱스(위치)를 리턴
int index = Arrays.binarySearch(scores, 98);
System.out.println("98점의 위치(index): "+index);
System.out.println(scores[index]);
System.out.println();
// 3. 참조타입(String) 정렬 및 검색
String[] names = {"손흥민", "이강인", "김민재"};
Arrays.sort(names);
for(String name:names) {
System.out.println(name+", ");
}
index = Arrays.binarySearch(names, "김민재");
System.out.println(names[index]);
System.out.println();
// 4. 객체의 정렬 및 비교
// 객체를 정렬하려면 Comparable 인터페이스의 compareTo(객체)를
// 구현을 한 객체여야 정렬을 할 수가 있다. 만약 Comparable
// 인터페이스를 구현하지 않고 정렬하려면 예외가 발생된다.
// Arrays.sort()는 자동으로 오름차순으로 정렬된다
Member m1 = new Member("손흥민");
Member m2 = new Member("이강인");
Member m3 = new Member("김민재");
Member[] members = {m1,m2,m3};
Arrays.sort(members);
for(Member member:members) {
System.out.println(member.name+", ");
} System.out.println();
// 객체의 검색
index = Arrays.binarySearch(names, "이강인");
System.out.println(names[index]);
}
}
class Member implements Comparable<Member>{
String name;
public Member(String name) {
this.name = name;
}
@Override
public int compareTo(Member m) {
return this.name.compareTo(m.name);
}
}
/*
포장클래스(Wrapper Class)
java는 기본타입(byte, short, char, int...)은 객체로 생성할 수 없기 때문에 기본타입의
데[이터를 객체로 생성할 수 있도록 지원하는데 이런 객체를 포장객체라고 한다.
이름에서 알 수 있듯이 기본타입의 값을 내부에 두고 포장하기 때문에 포장객체라고 한다.
포장객체는 포장하고 있는 내부의 기본타입의 값을 외부에서 변경할 수 없다. 만약, 내부의 값을 변경하고 싶을 때에는
새로운 포장객체를 만들어야 한다.
포장클래스는 java.lang패키지에 포함되어 있는 각각의 기본타입에 대응하는 클래스가 있다.
char와 int는 각각 Character와 Integer로 변경되고 나머지 기본타입은 첫 글자가 대문자로 변경된 이름을 가지고 있다.
기본자료형 대신에 포장클래스를 사용하는 이유는
1. 객체 또는 클래스가 제공하는 속성(필드, 메서드)을 사용할 수 있다.
2. 클래스가 제공하는 상수를 사용할 수 있다.(MIN_VALUE or MAX_VALUE 등)
3. 숫자, 문자형으로 형변환 또는 진법전환시에 사용할 수 있다.
Boxing, Unboxing
기본타입의 값을 포장객체로 만드는 과정을 boxing이라고 하고 반대로 포장객체에서 기본타입
의 값을 얻어내는 과정을 unboxing이라고 한다.
자동박싱과 언박싱?
기본타입의 값을 직접 박싱, 언박싱하지 안항도 자동으로 박싱과 언박싱이 된느 것을 말한다.
자동박싱은 포장클래스에 기본값이 대입이 되는 경우를 말하고 자동언박싱은 기본타입에 포장
객체가 대입되는 경우에 발생한다.
*/
public class WrapperMain1 {
public static void main(String[] args) {
// 1. 수동박싱
// a. 생성자 이용(deprecated)
@SuppressWarnings("deprecated")
Integer obj1 = new Integer(100);
Integer obj2 = new Integer("100");
System.out.println("Integer 값의 범위= "+obj1.MIN_VALUE+"~"+obj2.MAX_VALUE);
System.out.println(obj2.toString());
System.out.println();
// b. valueOf()메서드
Integer obj3 = Integer.valueOf(100);
Integer obj4 = Integer.valueOf("100");
@SuppressWarnings("deprecated")
Double obj5 = new Double(3.14);
Double obj6 = Double.valueOf(3.14);
// 2. 언박싱
int val1=obj1.intValue();
int val2=obj2.intValue();
int val3=obj3.intValue();
int val4=obj4.intValue();
double val5=obj5.doubleValue();
double val6=obj6.doubleValue();
// 3. 자동박싱
Integer obj7=100;
System.out.println("value= "+obj7.intValue()+100);
System.out.println(obj7+":"+obj7.toString()+100);
// 4. 자동언박싱
// a. 대입시 자동언박싱
int val7 = obj7;
System.out.println(val7);
// b. 연산시 자동언박싱
int result = obj7 + 200;
System.out.println(result);
}
public class WrapperMain2 {
public static void main(String[] args) {
// 포장객체비교
// 포장객체는 내부값을 비교하기 위해 동등연산자 )==, !=)를 사용할 수 없다.
// 동등연산자는 내부의 값으로 비교하는 것이 아니라 포장객체의 참조주소로
// 비교하기 때문이다.
Integer obj1 = 300;
Integer obj2 = 300;
System.out.println("언박싱 전 비교결과= " + (obj1 == obj2));
System.out.println();
// 따라서, 내부의 값만 비교하려면 언박싱한 값을 비교해야 한다.
System.out.println("언박싱 후 비교결과= " + (obj1.intValue()==obj2.intValue()));
System.out.println("equals 메서드 결과 = "+obj1.equals(obj2));
System.out.println();
}
}
public class WrapperMain3 {
public static void main(String[] args) {
// 1. 박싱
int val1 = Integer.valueOf("100");
// 2. 파싱
int val2 = Integer.parseInt("100");
double val3 = Double.parseDouble("100.0");
double val4 = Double.parseDouble("100.0d");
float val5 = Float.parseFloat("100f");
boolean val6 = Boolean.parseBoolean("true");
boolean val7 = Boolean.parseBoolean("100");
System.out.println(val1);
System.out.println(val2);
System.out.println(val3);
System.out.println(val4);
System.out.println(val5);
System.out.println(val6);
System.out.println(val7);
}
}
/*
Math 클래스
java.lang.Math 클래스는 수학연산에 사용할 수 있는 정적 메서드를 제공한다.
Math클래스의 메서드는 모두 정적메서드이기 때문에 객체생성없이 Math클래스로
바로 사용할 수 있다.
*/
public class MathMain {
public static void main(String[] args) {
// 1. abs
int v1 = Math.abs(-1);
double v2 = Math.abs(-3.14);
System.out.println(v1+", "+v2);
// 2. ceil
double v3 = Math.ceil(5.3);
double v4 = Math.ceil(-3.14);
System.out.println(v3+", "+v4);
// 3. floor
double v5 = Math.floor(5.3);
double v6 = Math.floor(-5.3);
System.out.println(v5+", "+v6);
// 4. max, min
v3 = Math.max(v5, v6);
v4 = Math.min(v5, v6);
System.out.println(v3+ ", "+v4);
// 5. rint : 가장 가까운 정수
v3 = Math.rint(5.3);
v4 = Math.rint(5.6);
System.out.println(v3+ ", "+v4);
// 6. random
System.out.println(Math.random());
System.out.println((int)(Math.random()*45)+1);
// 7. round
v3 = Math.rint(5.3);
v4 = Math.rint(5.6);
System.out.println(v3+ ", "+v4);
}
}
public class CalendarMain {
public static void main(String[] args) {
// Calendar클래스는 추삳ㅇ클래스이기 때문에 new 연산자 사용불가
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH)+1;
int day = now.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"."+month+"."+day);
int week = now.get(Calendar.DAY_OF_WEEK);
System.out.println(Calendar.MONDAY);
switch(week) {
case Calendar.MONDAY: System.out.println("월요일");break;
case Calendar.TUESDAY: System.out.println("화요일");break;
case Calendar.WEDNESDAY: System.out.println("수요일");break;
case Calendar.THURSDAY: System.out.println("목요일");break;
case Calendar.FRIDAY: System.out.println("금요일");break;
case Calendar.SATURDAY: System.out.println("토요일");break;
}
int ampm = now.get(Calendar.AM_PM);
if(ampm==Calendar.AM) {
System.out.println("오전입니다");
}else {
System.out.println("오후입니다");
}
int hour = now.get(Calendar.HOUR);
int minute = now.get(Calendar.MINUTE);
int second = now.get(Calendar.SECOND);
System.out.println(hour+":"+minute+"."+second);
}
}
public class DateMain {
public static void main(String[] args) {
Date now = new Date();
System.out.println(now.toString());
System.out.println(now.toGMTString());
System.out.println(now.toLocaleString());
System.out.println();
// 날짜형식 : SimpleDateFormat
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy년 MM월 dd일 hh시 mm분 ss초");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss");
System.out.println(sdf1);
System.out.println(sdf2);
}
}
public class DecimalMain {
public static void main(String[] args) {
double num = 1234567.89;
DecimalFormat df = new DecimalFormat();
System.out.println(df.format(num));
df = new DecimalFormat("0.0");
System.out.println("0.0 -> "+df.format(num));
df = new DecimalFormat("000000000000000000000000000.0000");
System.out.println("000000000000000000000000000.0000->"+df.format(num));
df = new DecimalFormat("#");
System.out.println("#->"+df.format(num));
df = new DecimalFormat("#.#");
System.out.println("#.#->"+df.format(num));
df = new DecimalFormat("##############.####");
System.out.println("##############.####->"+df.format(num));
df = new DecimalFormat("#.0");
System.out.println("#.0->"+df.format(num));
df = new DecimalFormat("+#.0");
System.out.println("+#.0->"+df.format(num));
df = new DecimalFormat("-#.0");
System.out.println("-#.0->"+df.format(num));
df = new DecimalFormat("#,###.0");
System.out.println("#,###.0->"+df.format(num));
df = new DecimalFormat("0.0E0");
System.out.println("0.0E0->"+df.format(num));
df = new DecimalFormat("+#,###.0;-#,###.0");
System.out.println("+#,###.0;-#,###.0->"+df.format(num));
df = new DecimalFormat("#.# %");
System.out.println("#.# %->"+df.format(num));
}
}
public class MessageMain {
public static void main(String[] args) {
String id = "java";
String name = "홍길동";
String tel = "010-9999-8888";
String text = "회원ID={0}, 회원이름={1}, 전화번호={2}";
String result1 = MessageFormat.format(text, id, name, tel);
System.out.println(result1);
String sql = "insert into member value({0},{1},{2})";
Object[] arg = {"java", "홍길동", "010-9999-8888"};
String result2 = MessageFormat.format(sql, arg);
System.out.println(result2);
}
}
'일 > JAVA' 카테고리의 다른 글
java12.thread (0) | 2023.05.26 |
---|---|
java11.basic_API.time (0) | 2023.05.25 |
java11.basic_API.class (0) | 2023.05.25 |
java11.basic_API.Objects (0) | 2023.05.25 |
java11.basic_API (0) | 2023.05.25 |