SMALL
package 정적_static;
interface F{
}
interface G{
}
interface H extends F,G{
}
class B{
static int[] arr = new int[3];
}
class C extends B{
void method() {
B.arr[0]=100;
}
}
class D extends C implements F,G{
void method() {
B.arr[0]=200;
}
}
public class A {
public static void main(String[] args) {
B b = new B();
C c = new C();
D d = new D();
c.method(); //100
System.out.println(B.arr[0]);
d.method(); //200
System.out.println(B.arr[0]);
}
}
package pak1_Object;
/*
.패키지
- 연관된 클래스끼리 패키지화 시켜 계층화 시켜서 관리하기위한 목적이다.
- 클래스의 이름은 패키지,클래스이다. >> 다른 패키지에서는 동일한 이름의 클래스를 생성할 수 있다.
- 주요 패키지
. java.lang : 자바 프로그래밍에서 가장 기본적인 클래스와 인터페이스를 모아놓은 패키지
- import가 필요없이 직접 사용가능하다.
. java.util : 날짜, 시간, 벡터등 다양한 유틸리트 클래스와 인터페이스를 제공
. java.io : 키보드, 모니터, 프린터, 파일등에 입출력하는 클래스와 인터페이스를 제공
. java.awt,java.swing : GUI프로그래밍에 필요한 클래스와 인터페이스를 제공
. 등
. Object
- java.lang에 속해있다.
- 모든 클래스에 강제로 상속된다
- 계층구조상 최상위 클래스 부모이다
- 메소드
. boolean equals(Object obj) : 생성한 객체가 obj와 같은 객체인지 비교 (2 == 3)
A a = new A()
B b = a;
if(a.equals(b){}
. Class get(Class() : 현재 실행되고 있는 클래스를 리턴
. int hashCode() : 현재 객체 대한 해시코드 값을 리턴
. String toString() : 현재 객체에 대한 문자열 표현을 리턴
. void notify()
. void notifyAll()
. void wait()
*/
//import java.lang.Object;
class A extends java.lang.Object{
java.lang.String name = "A";
}
class B {
String name = "홍길동";
@Override
public String toString() {
return name;
}
}
class C {
String name = "C";
}
public class Obj1 {
public static void main(String[] args) {
A a = new A();
System.out.println(a);
B b = new B();
System.out.println(b.toString());
C c = new C();
Object[] obj = new Object[3];
obj[0]=a;
obj[1]=b;
obj[2]=c;
A t = (A)obj[0];
System.out.println(t.name);
}
}
pak1_Object.A@49e4cb85
홍길동
A
package pak1_Object;
class Point2{
int x,y;
public Point2(int x, int y) {
this.x=x; this.y=y;
}
public boolean equals(Point2 p) {
if(x==p.x && y==p.y) {
return true;
}else {
}
return true ;
}
}
public class Obj2_실습 {
public static void main(String[] args) {
// 여러 객체를 생성해서 객체가 같은 객체인지 비교해 보세요
Point2 a = new Point2(2, 3); // a ---------> (객체)
Point2 b = new Point2(2, 3); // b ---------> (객체)
Point2 c = new Point2(3, 4);
if(a == b) {
System.out.println("a==b, 같은 객체이다");
}
if(a.equals(b)) {
System.out.println("a와 b의 값이 같습니다");
}
if(a.equals(c)) {
System.out.println("???");
}
}
}
package Pak2_Wrapper;
/*
int ------- Integer
char ------ Character
float ----- Float
double ---- Double
byte ------ Byte
*/
public class W1_Integer {
public static void main(String[] args) {
//박싱
//Integer num1 = new Integer(10);
Integer num1 = Integer.valueOf(10); // 기본데이터타입 ---> 객체타입 : Boxing - valueOf()
//언박싱
int num2 = num1.intValue(); // 객체타입 ---- > 기본데이터타입 : Unboxing - intValue()
//오토박싱
Integer num3 = 100;
//오토언박싱
int num4 = num3;
}
}
package pak3_String;
import java.util.StringTokenizer;
public class StringTokenizer1 {
public static void main(String[] args) {
String query = "name=홍길동&&address=서울시 영등포구&&나이=25";
StringTokenizer st = new StringTokenizer(null);
int n = st.countTokens();
System.out.println("분리된 토큰수는 "+n+"개");
for(int i=0; i<n; i++) {
String token = st.nextToken();
System.out.println(token);
}
}
}
package pak4_Math;
/*
Math
. static타입이다
. java.lang.Math
. 수학관련 메서드들
- static double abs(double a)
- static double cos(double a)
- static double tan(double a)
- static double sin(double a)
- static double ceil(double a)
- static double floor(double a)
- static double round(double a)
- static double max(double a, double b)
- static double min(double a, double b)
- static double random() -랜덤값
*/
public class Math1 {
public static void main(String[] args) {
System.out.println(Math.random());
System.out.println(Math.random()*10+1);
System.out.println(Math.random()*100+100);
}
}
package pak5;
import java.util.Random;
public class Random1 {
public static void main(String[] args) {
Random r = new Random();
int n = r.nextInt(); //~2의31승 ~ 2의31
System.out.println(n);
int m = r.nextInt(100);
System.out.println(m); //0~99
}
}
2014061438
97
package Calender;
import java.util.Calendar;
public class Canlendar1 {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
String str;
int year = now.get(Calendar.YEAR);
str = year+"년 ";
int month = now.get(Calendar.MONTH)+1;
str += month+"월 ";
int day = now.get(Calendar.DAY_OF_MONTH);
str += day+"일 ";
int hour = now.get(Calendar.HOUR_OF_DAY);
if(hour>12) {
hour = hour-12;
str += "오후 " + hour+"시 ";
}else {
str += "오전 " + hour+"시 ";
}
int min = now.get(Calendar.MINUTE);
str += min+"분 ";
int sec = now.get(Calendar.SECOND);
str += sec+"초 ";
// 요일 - 일 :1 ,월~토 :2~7
int week = now.get(Calendar.DAY_OF_WEEK);
switch(week) {
case 1: str += "(일요일)"; break;
case 2: str += "(월요일)"; break;
case 3: str += "(화요일)"; break;
case 4: str += "(수요일)"; break;
case 5: str += "(목요일)"; break;
case 6: str += "(금요일)"; break;
case 7: str += "(토요일)"; break;
}
System.out.println(str);
}
}
2025년 1월 10일 오후 4시 31분 11초 (금요일)
자바 컬렉션(Java Collection)
자바 컬렉션은 데이터의 그룹을 저장하고 관리하기 위한 프레임워크입니다.
배열과 달리 크기가 가변적이며, 다양한 자료구조(리스트, 집합, 맵 등)를 구현할 수 있는 클래스와 인터페이스를 제공합니다.
컬렉션은 데이터를 효율적으로 저장, 검색, 추가, 삭제, 정렬 등의 작업을 수행할 수 있습니다.
컬렉션의 주요 인터페이스
- List
- 순서가 있는 데이터 집합을 표현합니다.
- 요소의 중복을 허용합니다.
- 구현 클래스: ArrayList, LinkedList, Vector 등.
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
System.out.println(list); // [Apple, Banana]
Set
- 중복을 허용하지 않는 데이터 집합을 표현합니다.
- 순서가 보장되지 않을 수 있습니다.
- 구현 클래스: HashSet, TreeSet, LinkedHashSet 등.
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Apple");
System.out.println(set); // [Apple]
Map
- 키(Key)-값(Value) 쌍으로 데이터를 저장합니다.
- 키는 중복을 허용하지 않지만, 값은 중복이 가능합니다.
- 구현 클래스: HashMap, TreeMap, LinkedHashMap 등.
Map<String, String> map = new HashMap<>();
map.put("A", "Apple");
map.put("B", "Banana");
System.out.println(map); // {A=Apple, B=Banana}
Queue
- FIFO(First-In-First-Out) 구조의 데이터 집합을 표현합니다.
- 구현 클래스: LinkedList, PriorityQueue 등.
Queue<String> queue = new LinkedList<>();
queue.add("Apple");
queue.add("Banana");
System.out.println(queue.poll()); // Apple
Deque
- 양방향으로 삽입 및 삭제가 가능한 데이터 구조.
- 구현 클래스: ArrayDeque, LinkedList 등.
Deque<String> deque = new ArrayDeque<>();
deque.addFirst("Apple");
deque.addLast("Banana");
System.out.println(deque); // [Apple, Banana]
컬렉션의 주요 클래스
- ArrayList
- 내부적으로 동적 배열을 사용하여 데이터를 관리.
- 검색 속도가 빠르며, 크기가 가변적.
- LinkedList
- 내부적으로 연결 리스트를 사용.
- 삽입 및 삭제가 빠름.
- HashSet
- 해시 기반으로 구현된 집합.
- 중복 제거와 빠른 검색에 유리.
- HashMap
- 해시 테이블 기반의 키-값 쌍 저장.
제너릭(Generic)
**제너릭(Generic)**은 클래스나 메서드가 사용할 데이터 타입을 미리 지정하지 않고, 나중에 사용할 때 타입을 명확히 지정할 수 있도록 하는 기능입니다.
제너릭의 특징
- 타입 안정성(Type Safety):
- 컴파일 타임에 타입을 확인하여 타입 오류를 방지합니다.
List<String> list = new ArrayList<>();
list.add("Apple"); // 가능
// list.add(10); // 오류
코드 재사용성:
- 다양한 타입의 객체를 지원하도록 동일한 코드 구조를 재사용할 수 있습니다.
class Box<T> {
private T value;
public void set(T value) { this.value = value; }
public T get() { return value; }
}
Box<Integer> intBox = new Box<>();
intBox.set(10);
System.out.println(intBox.get()); // 10
타입 캐스팅 제거:
- 제너릭을 사용하면 타입 캐스팅이 필요하지 않습니다.
List<String> list = new ArrayList<>();
list.add("Apple");
String fruit = list.get(0); // 캐스팅 불필요
제너릭 클래스
class GenericClass<T> {
private T value;
public void setValue(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
public class Main {
public static void main(String[] args) {
GenericClass<String> stringBox = new GenericClass<>();
stringBox.setValue("Hello");
System.out.println(stringBox.getValue()); // Hello
GenericClass<Integer> intBox = new GenericClass<>();
intBox.setValue(123);
System.out.println(intBox.getValue()); // 123
}
}
제너릭 메서드
public class Main {
public static <T> void printArray(T[] array) {
for (T element : array) {
System.out.print(element + " ");
}
System.out.println();
}
public static void main(String[] args) {
Integer[] intArray = {1, 2, 3, 4};
String[] strArray = {"A", "B", "C"};
printArray(intArray); // 1 2 3 4
printArray(strArray); // A B C
}
}
제너릭과 컬렉션의 결합
제너릭은 컬렉션 클래스와 함께 사용되며, 더 안전하고 편리한 데이터를 관리할 수 있습니다.
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
// list.add(10); // 컴파일 에러 발생
for (String item : list) {
System.out.println(item);
}
제너릭 사용 시 유의사항
- 기본 타입(primitive type)은 사용 불가 → Integer, Double과 같은 래퍼 클래스 사용.
- 런타임 시 타입 정보는 제거(Type Erasure) → 컴파일 시 타입 확인 후 제거됩니다.
- 제너릭 배열 생성은 불가 → List<T>[] 대신 List<?>[] 사용.
제너릭과 컬렉션은 코드의 안전성과 재사용성을 높이는 강력한 도구로, 효율적인 데이터 관리와 타입 안정성을 제공합니다.
package generic;
import java.util.ArrayList;
class Stack<T>
{
int point;
Object[] stack;
public Stack() {
point = 0;
stack = new String [10];
}
public void push(String item) {
if(point == 10) {
return;
}
stack[point]=item;
point++;
}
//값꺼내기 - pop
public String pop() {
if(point == 0) {
return null;
}
point --;
return (String)stack[point];
}
}
public class Generic1 {
public static void main(String[] args) {
Stack <Integer> st = new Stack();
st.push("10");
st.push("20");
st.push("30");
//st.push("홍길동");
//st.push("이순신");
//st.push("강감찬");
for(int i=0;i<3;i++) {
System.out.println(st.pop());
}
System.out.println("***********");
Stack <String> st2 = new Stack();
st2.push("홍길동");
st2.push("이순신");
st2.push("강감찬");
for(int i=0;i<3;i++) {
System.out.println(st2.pop());
}
System.out.println("***************");
ArrayList<String> arraylist = new ArrayList();
arraylist.add("월요일");
arraylist.add("화요일");
arraylist.add("수요일");
for(String str : arraylist) {
System.out.println(str);
}
}
}
30
20
10
***********
강감찬
이순신
홍길동
***************
월요일
화요일
수요일
LIST
'휴먼 IT 교육 수업 메모' 카테고리의 다른 글
[휴먼IT] 휴먼IT 자바 수업 6일차 메모 (상속) 250109 (1) | 2025.01.09 |
---|---|
[휴먼IT] 휴먼IT JAVA 5일차 수업 메모 (상속) -250108 (0) | 2025.01.08 |
[휴먼IT] 휴먼IT 자바 수업 4일차 메모 (예외처리,클래스와 객체) - 250107 (1) | 2025.01.07 |
[휴먼IT] 자바 수업 3일차 메모 (반복문,배열) (0) | 2025.01.06 |
[휴먼IT] JAVA 수업 2일차 메모 (250103) (0) | 2025.01.03 |