728x90
반응형
Wrapper
package basic;
public class Class_53_Wrapper {
public static void main(String[] args) {
// Wrapper 클래스는 기본형의 데이터를 객체화 하기위해 제공되는 클래스
int num1 = 100;
// 이전 방식의 Wrapper 객체 생성
// - new 를 사용한 객체 생성 방식
Integer numObj1 = new Integer(num1);
// 새로운 방식의 Wrapper 객체 생성
// - 오토 박싱을 사용한 객체 생성
Integer numObj2 = num1;
// 기존의 객체 메소드 호출을 통한 기본형 데이터 제공
int num2 = numObj2.intValue();
// Wrapper클래스의 레퍼런스 값을 기본 자료형에 대입할 수 있습니다.
// (실제 동작은 num2 = numObj2.intValue(); 가 처리됩니다.)
// - 오토 언박싱을 사용한 기본형 데이터 제공
num2 = numObj1;
// Wrapper 클래스의 활용 방법
// - 데이터 저장 범위의 확인
System.out.printf("byte 타입으로 저장할 수 있는 값의 범위는 %d ~ %d 입니다.\n",
Byte.MIN_VALUE, Byte.MAX_VALUE);
System.out.printf("short 타입으로 저장할 수 있는 값의 범위는 %d ~ %d 입니다.\n",
Short.MIN_VALUE, Short.MAX_VALUE);
System.out.printf("int 타입으로 저장할 수 있는 값의 범위는 %d ~ %d 입니다.\n",
Integer.MIN_VALUE, Integer.MAX_VALUE);
System.out.printf("long 타입으로 저장할 수 있는 값의 범위는 %d ~ %d 입니다.\n",
Long.MIN_VALUE, Long.MAX_VALUE);
// - 기본형 데이터의 자료형 크기
System.out.printf("int 타입은 %d bit 만큼 저장할 수 있습니다.\n", Integer.SIZE);
System.out.printf("int 타입은 %d byte 만큼 저장할 수 있습니다.\n", Integer.BYTES);
// - 문자열로 저장된 기본형 데이터를 변환하는 기능
String strNum1 = "10";
String strNum2 = "7";
System.out.println(strNum1 + strNum2);
// Wrapper 클래스가 제공하는 parse~~~ 메소드를 사용하여
// 문자열 값을 실제 자료형으로 변환할 수 있습니다.
System.out.println(Integer.parseInt(strNum1) + Integer.parseInt(strNum2));
// 2진법으로 저장된 문자열
strNum1 = "1010";
strNum2 = "0111";
System.out.println(Integer.parseInt(strNum1, 2) + Integer.parseInt(strNum2, 2));
// - 저장하고 있는 기본형의 데이터를 문자열로 반환
Integer itg = 27;
System.out.printf("%d를 2진법으로 변환하는 %s 입니다.\n",
itg.intValue(), Integer.toBinaryString(itg));
System.out.printf("%d를 8진법으로 변환하는 %s 입니다.\n",
itg.intValue(), Integer.toOctalString(itg));
System.out.printf("%d를 16진법으로 변환하는 %s 입니다.\n",
itg.intValue(), Integer.toHexString(itg));
}
}
String class
package basic;
public class Class_54_String {
public static void main(String[] args) {
// 문자열을 저장하기 위한 클래스의 사용
// - 문자열 : 글자의 수가 지정되지 않은 문자들의 집합
// - 문자열은 크기가 제한이 없음
// - 데이터의 크기가 고정되지 않기 때문에 기본형의 자료형이 존재하지 않음
// - 자바 언어에서는 문자열을 저장하기 위해 java.lang.String 클래스가 제공됨
// String 클래스를 사용한 문자열 저장 방법
// 1. 문자열을 대입하는 방식 - 오토 박싱(X)
String str1 = "Hello";
// 2. 객체의 생성방법을 사용하는 방식 (기본)
String str2 = new String("Hello");
// 문자열을 직접 대입하는 경우의 특징
// - 문자열 상수의 영역을 참조합니다.
String src1 = "Hello";
String src2 = "Hello";
if( src1 == src2 )
System.out.println("src1과 src2는 같습니다.");
else
System.out.println("src1과 src2는 다릅니다.");
// 아래와 같은 경우 서로 다른 HEAP 메모리를 참조하므로
// 다른 참조값을 가지기 때문에 서로 다른 결과가 나옵니다.
String src3 = new String("Hello");
String src4 = new String("Hello");
if( src3 == src4 )
System.out.println("src3과 src4는 같습니다.");
else
System.out.println("src3과 src4는 다릅니다.");
// 자바에서의 문자열은 불변객체의 특징을 가집니다.
// - 아래의 src5, src6은 동일한 위치의 문자열을 참조합니다.
String src5 = "Hello";
String src6 = "Hello";
System.out.printf("%s / %s\n", src5, src6);
src5 += " World";
System.out.printf("%s / %s\n", src5, src6);
// String 클래스가 제공하는 모든 기능들은
// 원본 데이터를 수정하지 않고
// 새로운 문자열 생성하여 반환하는 방식을 사용합니다.
// replaceAll 메소드는 String 객체가 참조하는
// 문자열의 특정 부분을 다른 문자열로 대체하는 메소드입니다.
// String 클래스의 모든 값을 수정하는 메소드는
// 원본 데이터는 수정하지 않고 새로운 문자열을 생성하여
// 처리합니다.
System.out.println(src5.replaceAll("World", "TJE"));
System.out.println(src5);
// String 클래스의 trim 메소드
// - 문자열의 앞뒤에 존재하는 공백을 제거하여 반환하는 메소드
String source = " Hello ";
System.out.printf("'%s'\n", source);
System.out.printf("'%s'\n", source.trim());
System.out.printf("'%s'\n", source);
// 문자열의 값 비교를 위한 equals 메소드
String id = "id13579";
if( id.equals("id13579") )
System.out.println("TRUE");
else
System.out.println("FALSE");
// 문자열의 길이를 반환하는 length 메소드
System.out.println(id.length());
}
}
String class
package basic;
public class Class_55_String {
public static void main(String[] args) {
// 자바에서 제공하는 String 클래스는 문자열 저장하지 않고
// 참조하는 방식을 기반으로 동작합니다.
// - String 클래스의 메소드를 빈번하게 호출하는 경우
// 메모리의 낭비가 심해질 수 있습니다.
// (불변객체의 특징때문에 새로운 문자열이 생성)
// 만약 문자열의 길이가 제한적인 경우(휴대전화 번호, 이름)에는
// 문자열 자제를 저장하여 수정할 수 있는 클래스가 필요합니다.
// - StringBuffer(멀티쓰레딩 환경에서 동기화를 지원) /
// StringBuilder(싱글쓰레딩 환경에서 최적화, 속도가 빠름) 클래스
// 10글자까지 추가적인 메모리 할당없이 저장할 수 있는 객체를 생성
// - 디폴트 생성자의 경우 16글자까지 저장
// - 허용량이 넘어서는 문자열 연산이 일어나면 자동으로 확장됨
StringBuilder sb = new StringBuilder(10);
sb.append("Hello");
System.out.printf("%s / %d / %d\n", sb.toString(), sb.length(), sb.capacity());
sb.append("World");
System.out.printf("%s / %d / %d\n", sb.toString(), sb.length(), sb.capacity());
sb.append("~!");
System.out.printf("%s / %d / %d\n", sb.toString(), sb.length(), sb.capacity());
// 문자열 삽입 기능
// - 아래와 같은 경우 5번째 인덱스 위치에 " " 을 추가
sb.insert(5, " ");
System.out.printf("%s / %d / %d\n", sb.toString(), sb.length(), sb.capacity());
// 문자열 부분 삭제 기능
// - 아래와 같은 경우 1번째 인덱스부터 12 인덱스 전까지 삭제
// - 12번째 인덱스의 문자열은 삭제가 안됨!
sb.delete(11, 12);
System.out.printf("%s / %d / %d\n", sb.toString(), sb.length(), sb.capacity());
// 특정 문자열의 시작 인덱스 검색 기능
// - indexOf 메소드
// - 아래와 같은 경우 World 문자열의 시작 인덱스를 반환
// - 만약 존재하지 않는 문자열인 경우 -1 이 반환
sb.delete(0, sb.indexOf("World"));
System.out.printf("%s / %d / %d\n", sb.toString(), sb.length(), sb.capacity());
}
}
StringTokenizer
package basic;
import java.util.StringTokenizer;
public class Class_56_StringTokenizer {
public static void main(String[] args) {
// java.util.StringTokenizer 클래스
// - 문자열을 분할할 수 있는 기능을 제공하는 클래스
// - EX) 100;90;88;75;96
// - 문자열을 파싱하기 위해서 사용되는 클래스
// - 하나의 문자열에 여러 데이터를 저장하고 있는 경우
// 각각의 데이터를 추출하기 위해서 사용됩니다.
// - StringTokenizer 클래스를 사용하기 위해서는
// java.util 패키지를 임포트해야합니다.
String scores = "100;90,88#75?96";
// scores 문자열을 ; 을 기준으로 파싱할 수 있는 객체 생성
StringTokenizer st = new StringTokenizer(scores, ";,#?");
int total = 0;
// StringTokenizer 클래스의 hasMoreTokens 메소드는
// 원본 문자열에서 추출할 수 있는 토큰(성적)이 남아있는지 확인하는 메소드
while( st.hasMoreTokens() ) {
// ; 을 기준으로 구분된 문자열을 추출
// - 다음의 토큰에 접근하고, 해당 토큰의 값을 반환하는
// nextToken 메소드
String strToken = st.nextToken();
int score = Integer.parseInt(strToken);
total += score;
}
System.out.printf("성적의 총합은 %d 점 입니다.\n", total);
}
}
Random
package basic;
import java.util.Random;
public class Class_57_Random {
public static void main(String[] args) {
// 랜덤한 숫자를 생성할 수 있는 방법
// - 난수를 기반으로 임의의 랜덤한 숫자를 생성할 수 있음
// - 난수 : 0 보다 크고 1 보다 작은 실수
// 1. java.lang.Math 클래스의 random 메소드를 사용하는 방법
// - 난수를 추출하여 직접 숫자를 생성하는 방법
for( int i = 0 ; i < 3 ; i++ )
// Math 클래스의 random 메소드는 난수를
// 발생시키는 메소드입니다.
System.out.printf("%d : %f\n", i+1, Math.random());
// 난수를 사용하여 로또 번호를 생성하는 예제
// - 난수는 0 < 난수 < 1
// - 1 ~ 45
// - 난수 * 45 -> 0.000000001 < 결과 < 44.99999999999999
// - (int)(난수 * 45 + 1)
// - Math.random 을 활용한 식
// (int)(Math.random() * 45) + 1
// (int)(Math.random() * 최대값) + 최소값
for( int i = 0 ; i < 6 ; i++ ) {
int number = (int)(Math.random() * 45) + 1;
System.out.printf("%d ", number);
}
System.out.println();
// 2. java.util.Random 클래스를 사용하는 방법
// - 난수를 제어하는 random 클래스의 기능을 활용하여 숫자를 생성
// - 생성자에 seed 값을 지정하는 경우 같은 seed 값은 동일한 난수의 발생을 보장합니다.
//Random r = new Random(10);
Random r = new Random();
for( int i = 0 ; i < 6 ; i++ ) {
int number = r.nextInt(45) + 1;
System.out.printf("%d ", number);
}
}
}
Date
package basic;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Class_58_Date {
public static void main(String[] args) {
// 날자 정보에 대한 처리 방법
// - java.util.Date 클래스를 사용하여 저장 및 출력
// - Date 클래스를 활용하여 등록날자, 생년월일과 같은
// 정보를 저장할 수 있습니다.
Date now;
// Date 클래스의 객체를 생성하여 현재 시간의 정보를 저장하는
// 객체를 생성할 수 있습니다. (디폴트 생성자 사용)
now = new Date();
System.out.println(now.toString());
// Calendar 클래스의 객체를 사용하여 현재 시간에 대한 정보를
// 생성하는 예제 (권장방법)
now = Calendar.getInstance().getTime();
System.out.println(now.toString());
// 날자 데이터의 출력 형태를 가공하는 방법
// - java.text.SimpleDateFormat 클래스를 활용합니다.
// - 대문자 M 은 월을 의미하고
// - 소문자 m 은 분을 의미합니다.
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf1.format(now));
// - 대문자 H는 24 시를 의미합니다.
// 소문자 h는 12 시를 의미합니다.
SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm:ss a");
System.out.println(sdf2.format(now));
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a");
System.out.println(sdf3.format(now));
// 현재 시간외에 지정한 시간 데이터를 Date 클래스의 객체로
// 생성하는 방법
String strDate = "2002-04-13";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d = sdf.parse(strDate);
System.out.println(sdf3.format(d));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
728x90
반응형
'개발 > JAVA' 카테고리의 다른 글
자바 - Collection (0) | 2020.06.14 |
---|---|
자바 - Object (0) | 2020.06.14 |
자바 객체지향 (11) - InnerClass (0) | 2020.06.14 |
자바기초 - Package (0) | 2020.06.14 |
자바 객체지향 (11) - 인터페이스(interface) (0) | 2020.06.14 |