속성
err
in
out
프로그램 종료하기
timestamp
엔터
얕은복사와 깊은복사
얕은 복사 : 주소값을 복사, 주로 참조타입(reference type)
깊은 복사 : 실제값을 새로운 메모리 공간에 복사, 인스턴스가 독립적, 주로 값타입(value type)
브라우저 실행
cmd에서 실행하기
이클립스에서 실행하기
메서드
Calnedar로 달력 만들기
방법1.
import java.util.Scanner;
public class CalendarTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
/* monthSet은 각 달에 대한 날짜들을 저장한 배열,
* year은 연도, month는 달, week는 요일, day는 일, i는 반복문을 사용하기 위한 변수. */
int year=0, month=0, week=0, day=0, i=0;
int monthSet[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
while(true) {
System.out.println("원하는 연도를 입력하세요. (0을 누르면 프로그램을 종료합니다.)");
year = sc.nextInt();
if(year==0) {
System.exit(0);
break;
}
System.out.println("원하는 달을 입력하세요.");
month = sc.nextInt();
if(month<1 || month>12) {
System.out.println("1월에서 12월 사이의 달을 입력해주세요.");
return;
}
System.out.println("");
if(year%4 == 0 && year%100 != 0 || year%400 == 0) // 윤년의 조건.
monthSet[1] = 29; // 윤년이면 2월 (monthSet[1])은 29일,
else
monthSet[1] = 28; // 윤년이 아니면 2월은 28일이다.
// 01년 1월 1일부터 계산.
day = (year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400;
for(i=0;i<month-1;i++) {
day += monthSet[i];
}
week=day%7; // 구하고자 하는 달의 시작일(1일)의 요일을 구함.
System.out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n", "월", "화", "수", "목", "금", "토", "일");
for(i=0;i<week;i++) {
System.out.print("\t"); // 1일이 시작하기 전 공백을 위한 반복문.
}
for(i=1;i<=monthSet[month-1];i++) {
System.out.printf("%d\t", i); // i를 입력한 달의 일수만큼 찍음.
week++;
if(week%7 == 0) // 요일이 일요일이 지나면
System.out.println(); // 줄을 바꿈.
}
if(week%7 != 0) {
System.out.println();
}
}
}
}
출력결과
방법2.
필드&생성자 클래스
실행할 메인클래스
출력결과
방법3
StringTokenizer - 문자열 나누기
StringJoiner - 문자열 연결
Random
로또만들기
Scanner
예제
무한루프와 exit
ArrayList
예제
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayListTest01 {
List<Object>list = new ArrayList<>();
List<Integer>integers = Arrays.asList(1, 2, 3, 4, 5);
public void createText( ) {
list.add("Hello");
list.add("Hello"); // 동일 데이터 추가
list.add(null); // null 추가
list.addAll(integers); // 다른 collection 요소 추가
list.add(integers); // 다른 collection 추가
list.add(0, new Object()); // 끼워넣기
System.out.println("추가 후 내용 출력 : " + list);
}
public void retrieveTest() {
//반복을 이용한 요소 조회
for(int i=0; i<list.size(); i++) {
System.out.println(i + ":" + list.get(i));
}
//포함 여부의 활용
if(list.contains("Hello")) {
System.out.println("Hello의 위치는 : " + list.indexOf("Hello")); // 객체의 위치조회
}
//서브리스트 활용
List<Object>sub = list.subList(3, 5);
System.out.println("sub의 내용 : " + sub);
System.out.println("sub의 내용을 다 가지고 있는가?" + list.containsAll(sub));
}
public void updateTest() {
list.set(1, "update");
System.out.println("업데이트 후 : " + list);
}
public void deleteTest() {
list.remove(0); // 특정 위치의 객체 삭제
list.remove("Hello"); // 특정 객체가 있다면 처음 객체 삭제
//타입이 integer인 경우 삭제
for(int i=0; i<list.size(); i++) {
if(list.get(i) instanceof Integer) {
list.remove(i);
}
}
System.out.println("삭제 후 : " + list);
list.clear(); // 리스트 초기화
System.out.println("초기화 후 : " + list);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayListTest01 alt = new ArrayListTest01();
alt.createText();
alt.retrieveTest();
alt.updateTest();
alt.deleteTest();
}
}
주민번호검사
public class JuminCheck02 {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("java 클래스명 xxxxxx-xxxxxxx 형식으로 입력");
} else {
String strJumin = args[0].replaceAll("-", "");
int[] bits = { 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5 };
int sum = 0;
for (int i = 0; i < bits.length; i++) {
sum += Integer.parseInt(strJumin.substring(i, i + 1)) * bits[i];
}
int lastNum = Integer.parseInt(strJumin.substring(12, 13));
int resultNum = (11 - (sum % 11)) % 10;
if (lastNum == resultNum) {
System.out.println("주민등록번호 형식이 맞음");
} else {
System.out.println("주민등록번호 형식이 틀림");
}
}
}
}