Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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
more
Archives
Today
Total
관리 메뉴

290570

24.05.23 본문

java_spring (2024.05 ~ 2024.10)

24.05.23

qordpsem 2024. 5. 23. 09:53

#final 키워드가 올 수 있는 곳

1) 변수명 앞에 final 

=>  변수형태를 띄지만 상수로 사용할때 사용

 

2) 메소드명 앞에 final

=>  오버라이딩 금지

일반적으로 상속관계에 있을때, 자식클래스에 부모 메소드가 필요하다면 오버라이딩 가능

but, 부모클래스를 만들때 미래에 만들어지는 후손들이 어떤 메소드를 오버라이딩 하지 않게 하고싶으면 final 사용

미래에 만들어질 후손들이 가져야할 공통적인 속성과 동작을 뽑아서 일반화할때(부모클래스를 만들때) 특정메소드는 의미상 완전하여 더이상 후손들이 동작방식을 변경시키지 못하게 하기 위해 사용

 

3) 클래스명 앞에 final

=>  상속금지

일반적으로 클래스의 세상에서는 이미 있는 클래스를 확장하여 새로운 클래스 만들 수 있음

하지만 어떤 클래스는 의미상 완전하여 더이상 이 클래스를 확장하여 새로운 걸로 바꾸고싶지 않으면...

 

 

 

 

 

부모클래스에 final 사용 시 오버라이딩 불가 

 

 

 


 

 

 

#자바의 컬렉션 프레임워크(동적인 배열)

배열은 자료형이 같은 기억장소의 모임이며, 많은 양의 데이터를 처리하기에 적합함

그러나 배열은 자료형이 같아야하고, 배열의 크기를 미리 정해야 하므로 용량이 안 맞기도 함

배열의 중간 데이터를 추가하거나 삭제할때 번거롭기도 함

 

*컬렉션 프레임워크의 종류

1. Set           :        데이터 중복 허용 X     >> HashSet, LinkedHashSet, TreeSet

2. List          :        데이터 중복 허용 O

3. Map         :        key, value가 한 쌍으로 이루어진 자료구조 (인덱스 대신 key에 의해 데이터 접근)  => 사전자료형

 

 

 

interface A{
}

class B implements A{
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

interface A {
}

interface B extends A{
}  //인터페이스 확장

인터페이스를 구현하는 클래스를 만들때는 implements

인터페이스를 상속받은 인터페이스를 만들때는 extends

 

 

 

 

#Set  -  HashSet, LinkedHashSet, TreeSet

class HashSet implements Set{
}
class LinkedHashSet implements Set{
}
class TreeSet implements Set{
}

 

 

#HashSet (입력한 순서 유지 x)

내가 입력한 순서 신경 안씀

중복만 안되게 해줌

r같은값 두번 넣으면 boolean false 나옴

 

 

 

 

#LinkedHashSet (입력한 순서 유지 o)

내가 입력한 순서대로 나옴

중복 안되게 해줌

같은값 두번 넣으면 boolean false 나옴

 

 

 

 

#TreeSet ( 데이터 정렬해줌 / 단 자료형이 같아야함 _ 기준 같아야함)

 

 

자연순서(가나다라 순)으로 정렬해줌

중복 안되게 해줌

같은값 두번 넣으면 boolean false 나옴

 

 


 

 

import java.util.Random;

public class RandomTest {

	public static void main(String[] args) {
		Random r = new Random();
		int data = r.nextInt(); // int 범위 내에서 무작위로 줌
		System.out.println(data);
		
		int data2 = r.nextInt(10); // 0 ~ 9 사이에서 무작위로 줌
		System.out.println(data2);

		int data3 = r.nextInt(10)+1; // 1 ~ 10 사이 수
		System.out.println(data3);
	}
}

r.nextInt(n); 하면 0 ~ n-1 까지의 수가 무작위로 나오기 때문에

1~10 을 범위로 잡으려면 r.nextInt(10)에 +1을 해야한다

 

 

 

#로또번호 추첨

import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class LottoTest {

	//이번주에 구입할 로또번호를 생성
	//로또번호 1~45 숫자 중복되지 않게 6개
	public static void main(String[] args) {
		Random lotto = new Random();
		Set data = new TreeSet();
	
		for(int i =0; i<6;i++) { //이렇게 하면 값이 6개 나오기도 하지만, 중복될경우 6개가 안되게 나올수도 있음
			int n = lotto.nextInt(45)+1;
			data.add(n);
		}
		System.out.println(data);
	}
}

 

import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class LottoTest {

	//이번주에 구입할 로또번호를 생성
	//로또번호 1~45 숫자 중복되지 않게 6개
	public static void main(String[] args) {
		Random lotto = new Random();
		Set data = new TreeSet();
	
		for(int i =1; ;i++) {
			int n = lotto.nextInt(45)+1;
			data.add(n);
			if(data.size() >= 6) {break;}
		}
		System.out.println(data);
	}
}

for() 대신 while(true)도 사용가능

 

 

 

#1~10 사이 난수 만들기 (Random 사용)

import java.util.Random;

public class RandomTest01 {
	public static void main(String[] args) {

	Random r = new Random();
	int data1 = r.nextInt(10) + 1;
	System.out.println(data1);
	}
}
import java.util.Random;

public class RandomTest01 {
	public static void main(String[] args) {

	Random r = new Random();
	int data = r.nextInt();
	if(data < 0) {
		data = data * -1;
	}   //양수 만들기
	data = data % 10 + 1 ;
	System.out.println(data);	
	}
}

 

 

#1~10 사이 난수 만들기 (Random 사용)

import java.util.Random;

public class RandomTest01 {
	public static void main(String[] args) {

	Random r = new Random();
	
	int data = r.nextInt(); // 음수 나올수도 있음
	System.out.println(data);
	
	int data2 = r.nextInt() >>> 1;
	System.out.println(data2); //양수만 나옴
	
	data2 = data2 % 10 + 1;
	System.out.println(data2); // 1~10
	}
}

 

#1~10 사이 난수 만들기 (currentTimeMillis 사용)

public class RandomTest01 {
	public static void main(String[] args) {

	long data = System.currentTimeMillis();
	// 현재의 컴퓨터 시간을 밀리세컨으로 반환
	System.out.println(data);
	data = data % 10 + 1;
	System.out.println(data);
	}
}

'java_spring (2024.05 ~ 2024.10)' 카테고리의 다른 글

2024.05.24  (0) 2024.05.24
05.23  (0) 2024.05.23
24.05.22  (0) 2024.05.22
인텔리제이 / 이클립스 코드 자동생성  (0) 2024.05.22
24.05.21  (0) 2024.05.21