본문 바로가기

2024_풀스택학원/Back-end

[Java] Timestamp, static, Network

 

 

Day_12_ETC

 

Exam01

반복문을 사용하여 시간 측정을 수행

public class Exam01 {
	public static void main(String[] args) {
		// Timestamp : 1970년 1월 1일을 기준으로 현재까지 흐른 시간에 대한 초값

		//		long ctime = System.currentTimeMillis();// 현재 시간을 밀리초 단위로 가져와서 저장
		//		System.out.println(ctime);
		
        // 현재 시간을 밀리초 단위로 가져와서 startTime 변수에 저장
        // startTime변수에는 반복문을 실행하기 전에 현재 시간이 저장
		long startTime = System.currentTimeMillis(); 
        
        // count 변수가 1씩 증가하면서 반복문이 수행됨
        // 반복문이 100만 번 반복될 때까지 count 변수가 증가하게 됨
		int count = 0;
		for(int i=0; i<1000000; i++) {
			count++;
		}
        
		// 반복문이 종료되면 현재시간을 밀리초 단위로 계산한 후 ,
        // 이 때의 시간을 endTime변수에 저장함
		long endTime = System.currentTimeMillis();
		
        // startTime - endTime :  반복문 실행에 소요된 시간(밀리초 단위)
		System.out.println(endTime - startTime);
	}
}

 

 

 

Exam02

현재 시간을 지정된 형식으로 변환하여 출력

결과는 "YYYY-MM-DD(요일) HH:MM:SS"

import java.text.SimpleDateFormat;

public class Exam02 {
	public static void main(String[] args) {
		
		// Timestamp -> String(형식을 갖춘..)
        
        // 현재 시간을 밀리초 단위로 가져와서 ctime 변수에 저장, 현재의 타임스탬프임
		long ctime = System.currentTimeMillis(); // 현재 Timestamp추출
		
        // SimpleDateFomrmat클래스: 날짜와 시간을 원하는 형식으로 포맷.( 어떤 형식으로 보여줄 지 결정하는 것 )
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd(E) hh:mm:ss"); 
        
		// sdf.format : Timestamp를 형식에 맞게 반환하는 메서드 호출
        // 년도는 대문자, 소문자 둘다 가능 / 월을 의미할때는 대문자로 작성 / 
		String result = sdf.format(ctime);
		System.out.println("결과 : " + result);
		
	}
}

 

 

Exam03

문자열 형식의 날짜 데이터를 SimpleDateFormat을 사용하여 Date객체로 파싱하고,

그 후 다시 밀리초 단위의 시간으로 변환하여,

다른 형식의 문자열로 출력하는 예제

import java.text.SimpleDateFormat;
import java.util.Date;

public class Exam03 {
	public static void main(String[] args) throws Exception{
		// String -> Timestamp
		
        // 문자열 형식의 시간 데이터를 선언하고 초기화
		String ctime = "2014-04-15";
		
        // 날짜와 시간을 원하는 형식으로 포맷팅하기 위해 SimpleDateFormat 객체 생성
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // sdf.parse(ctime)을 호출하여 문자열 형식의 시간 데이터를 Date 객체로 파싱
        // 이렇게 변환된 Date 객체는 result 변수에 저장됨
		Date result = sdf.parse(ctime);
		
        
        // 파싱된 Date 객체에서 시간 정보를 가져와서 밀리초 단위로 변환하여 parsedTime 변수에 저장
		long parsedTime = result.getTime();
		// parsedTime 변수에 저장된 밀리초 단위의 시간을 출력
        System.out.println(parsedTime);
	
    
    	// 날짜와 시간을 다른 형식으로 포맷팅하기 위해 새로운 SimpleDateFormat 객체 생성
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd(E)");
        // sdf2.format(parsedTime)호출하여 밀리초 단위의 시간을 새로운 형식의 문자열로 변환
		String result2 = sdf2.format(parsedTime);
		System.out.println(result2);
		// 2014.04.15
		
		
	}
}

 

 

 

Quiz01 1919년 3월 1일은 무슨 요일일까요?

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Quiz01 {
	public static void main(String[] args) throws ParseException {
		// 1919년 3월 1일은 무슨 요일이었을까요?
		String ctime = "1919-03-01";
		
        // 날짜를 문자열로 파싱하기 위한 SimpleDateFormat 객체 생성
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // parse 메서드를 사용하여 문자열을 Date 객체로 변환 > 날짜 처리 가능해짐
		Date result = sdf.parse(ctime);
		
        // Date 객체에서 밀리초 단위의 시간값 얻음
		long parsedTime = result.getTime();
		System.out.println(parsedTime);
		
        // 시간값을 다시 문자열로 표현하기 위한 SimpleDateFormat 객체 생성
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd(E)");
        // format 메서드를 사용하여 시간값을 문자열로 변환
		String result2 = sdf2.format(parsedTime);
		System.out.println(result2);

	}

	
}

 

 

 

Exam04 Static

 

 

 

 

public static 

전역 변수

전 지역에서 접근 가능한 변수

 

static 키워드가 붙은 모든 코드는 메인이 실행됨과 동시에 같이 실행되는 코드이다.

public static이 함께 붙은 변수 또는 메서드는 언제 어디서나 접근이 가능하다

static 키워드는 사용 빈도를 최소화하는 것이 좋다 ( 꼭 필요한 곳에 사용 )

> 메모리 효율이 낮음

> 멀티쓰레딩에 취약함

프로그램 전역에 걸쳐 사용되며, 언제 어디서나 접근이 쉬워야하는 요소에 적용하면 좋다.

 

// static 
public class Exam04 {
	public int a; 		 // 인스턴스 멤버 필드 
	public static int b; // 클래스 멤버 필드 ( (new)인스턴스와 아무 상관없이 사용되는 변수b)
	
	
	
	public static void main(String[] args) {
//		new Exam04(); //(인스턴스가 만들어져야되는 변수 a)
		
		// static키워드가 붙은 모든 코드는 메인이 실행됨과 동시에 같이 실행되는 코드이다.
		Exam04.b = 10; // b는 인스턴스가 아닌 클래스에 소속되어있다.
		
		Exam04 e1 = new Exam04();
		Exam04 e2 = new Exam04();
		
		e1.b = 10;
		System.out.println(e2.b);
		
		
	}
}

 

// static 
public class Exam04 {
	public int a; 		 // 인스턴스 멤버 필드 
	public static int b; // 클래스 멤버 필드 ( (new)인스턴스와 아무 상관없이 사용되는 변수b)
	
	
	
	public static void main(String[] args) {
//		new Exam04(); //(인스턴스가 만들어져야되는 변수 a)
		
		// static키워드가 붙은 모든 코드는 메인이 실행됨과 동시에 같이 실행되는 코드이다.
		Exam04.b = 10; // b는 인스턴스가 아닌 클래스에 소속되어있다.
		
		Exam04 e1 = new Exam04();
		Exam04 e2 = new Exam04();
		
		e1.a = 10;
		System.out.println(e2.b);
		
		
	}
}

e1.b = 10;

e1.a =10;

 

 

Exam04

// static 
public class Exam04 {
	public int a; 		 // 인스턴스 멤버 필드 
						 // 클래스의 인스턴스를 생성해야 사용할 수 있음
	
	public static int b; // 클래스 멤버 필드 ( (new)인스턴스와 아무 상관없이 사용되는 변수b )
						 // 인스턴스와 상관없이 클래스에 속해 있는 필드
						 // > 따라서 new 키워드로 인스턴스 생성하지 않아도 사용 가능
	
	
	public void funcA() { // funcA()를 사용할수있다는 건 Exam04인스턴스가 만들어져있다는것을 전제
		a=10;
		b=10;
	}
	// funcA 메서드는 인스턴스 메서드이므로 인스턴스가 만들어져야 호출
	// 따라서 인스턴스를 생성한 후에 호출해야 함
	
	
	public static void funcB() { //static은 메인과동시에 만들어짐 변수 b사용o, funcB를 콜했을때 변수 a가 존재?x
//		a=10; // static member method 내에서는 non-static 멤버를 사용할 수 없음. 
		b=10;
	}
	// funcB 메서드는 static 키워드가 붙어 있으므로 클래스 메서드이다.
	// 인스턴스를 생성하지 않고도 호출이 가능, 하지만 이 메서드 내에서 인스턴스 멤버인 a에 접근x
	
	
	
	public static void main(String[] args) {
//		new Exam04(); //(인스턴스가 만들어야 사용할 수 있는 변수 a)
		

		Exam04.b = 10; // b는 인스턴스가 아닌 클래스에 소속되어있다.
		
		Exam04 e1 = new Exam04();
		Exam04 e2 = new Exam04();
		
		e1.a = 10;
		System.out.println(e2.b); // 10 출력
		
		
		// static키워드가 붙은 모든 코드는 메인이 실행됨과 동시에 같이 실행되는 코드이다.
		// public static이 함께 붙은 변수 또는 메서드는 언제 어디서나 접근이 가능하다.
		// static 키워드는 사용 빈도를 최소화 하는 것이 좋다. (꼭 필요한 곳에만 사용)
		// > 메모리 효율이 낮음.
		// > 멀티쓰레딩에 취약함. 
		// 프로그램 전역에 걸쳐 사용되며 , 언제 어디서나 접근이 쉬어야 하는 요소에 적용하면 좋다. 
		
		
		
		
	}
}

 

Day_12_Network

 

 

'2024_풀스택학원 > Back-end' 카테고리의 다른 글

[Database] DDL/DML/DCL(GRANT)/ 제약 조건  (0) 2024.04.24
[DataBase]sysdate, like, between, in, like, order by  (0) 2024.04.19
[Java] 학생 관리 시스템 만들기  (1) 2024.04.14
[Java] ArrayList  (0) 2024.04.09
[Java] 상속  (0) 2024.04.08