728x90
Generic이란 클래스에 사용할 타입을 디자인시에 지정하는 것이 아니라 클래스를 사용할때 지정하는 기법이다.
<T> 는 자료형
<E> 는 객체
<K> 는 key 값
<V> 는 값을 의미한다.
 
5.0 이전 스타일

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

class Generic_1
{
 private void testCollection()
 {
  List list = new ArrayList();
  
  //객채추가
  list.add(new String("Hello world"));
  list.add(new String("Goodbye"));
  list.add(new Integer(95));
  
  disp(list);// 메소드 호출
  
 }
 ///////////////////////////////////////////////////////////////
 private void disp(Collection c)
 {
  Iterator iter= c.iterator();
  while(iter.hasNext())  //존재하는한 계속 돌아라
  {
   String temp = (String)iter.next();
   //Integer 타입을 String타입으로 캐스팅 해서 ClassCastException 발생
   System.out.println("temp :"+temp);
  }
 }
 ////////////////////////////////////////////////////////////////
 public static void main( String [] args )
 {
  Generic_1 g = new Generic_1();
  g.testCollection();
 }// end main
}

5.0 이후 스타일

class Generic<T>
{
 T[] v;
 //Generic 타입으로 설정
 public void set(T[] n)
 {
  v = n;
 }
 // T[]의 원소 출력
 public void disp()
 {
  for(T s:v)
  {
   System.out.println(s);
  }
 }
}
//Generic 타입 사용하기

class Generic_3
{
 public static void main( String [] args )
 {
  Generic<String> g = new Generic<String>(); // 객체생성 String타입으로 사용하겠다.
                                            
  String []str = {"신세경은 ","조낸 ","이쁘다"}; 
  
  g.set(str);
  g.disp();
  
  Generic<Integer> g2 = new Generic<Integer>();//객체생성 int타입으로 사용하겠다.
  Integer[] arr = {100,200,300};
  g2.set(arr);
  g2.disp();
  
  Generic<Double> g3 = new Generic<Double>();
  Double[] dd= {121.5,2343.3,234.45};
  g3.set(dd);
  g3.disp();
 }// end main
}
728x90
Random: 임의의 값을 발생시켜주는 클래스
Random r = new Random();

Method

int nextInt() : 임의의 정수 난수 발생
int nextInt(int n) : 0 부터 n 사이의 정수 난수 발생

boolean nextBoolean() : 임의의 논리형 난수 발생
float nextFloat() : 0.0 부터 1.0 사이의 float형 난수 발생
double nextDouble() : 0.0 부터 1.0 사이의 double형 난수 발생

Math.random() : 0.0보다 크고 1.0보다 작은 난수 발생
Math.random()*나올수 있는 경우의 수(큰수 - 작은수 + 1) + 나올수 있는 가장 작은수


import java.util.*;

class RandomTest
{
 public static void main( String [] args )
 {
  Random r = new Random();
  int i = r.nextInt();
  System.out.println("임의의 정수 "+i);
  
  int i2 = r.nextInt(100);
  System.out.println("0과 100사이의 임의의 정수"+i2);
  
  float f = r.nextFloat();
  System.out.println("임의의 float형 실수값 :" + f);
  
  double d = r.nextDouble();
  System.out.println("임의의 double형 실수값 :" +d);
  
  for(int k = 1 ; k <=6 ; k++)
  {
   System.out.println(Math.random()*6+1);
  }
  
 }// end main
}

728x90
  ==              ->   레퍼런스 비교
  equals       ->   문자열 비교
  instanceof  ->   객체비교

class Test
{
 int value;
 public Test(int value)
 {
  this.value = value;
 }
}

class EqualsTest
{
 public static void main( String [] args )
 {
  Test t1 = new Test(10);
  Test t2 = new Test(10);
  
  if(t1.equals(t2)) //객체의 주소값을 비교
  {
   System.out.println("t1과 t2는 같습니다.");
  }else
  {
   System.out.println("t1과 t2는 다릅니다.");
  }
  
  System.out.println(t1);
  System.out.println(t2);
  
  t2 = t1;
  
  if(t1.equals(t2)) //문자열 비교
  {
   System.out.println("t1과 t2는 같습니다.");
  }else
  {
   System.out.println("t1과 t2는 다릅니다.");
  }
  
  System.out.println(t1);
  System.out.println(t2);
 }// end main
}



Test  t1  =  new  String("new");       ==>    new  가 출력
Test  t2  =  new  Test(10);              ==>    t2 객체의 주소값을 출력

String 클래스 객체는 객체의 주소값을 갖는게 아니라 문자열 자체를 갖는다.
왜냐면.. 자주 쓰기때문에 편의를 위해서 자바 자체적으로 요로케 만들어 놨음.

1 .  String aa ="aaa";
2 .  String aa = new String("aaa");      둘중에 뭐가 편한가?

class Car
{
 int velocity;  //속도를 정수형으로
 int wheelNum;  // 바퀴수를 정수형으로
 String carName;  // 차의 이름을 String클래스로 선언
 
 public Car(int speed, String name, int wheel)
 {
  velocity = speed;
  carName = name;
  wheelNum = wheel;
 }
 
 public boolean equals(Object ob)  //문자열 비교
 {
  Car c = (Car)ob;
  if((carName == c.carName) && (wheelNum == c.wheelNum) && (velocity == c.velocity))
  {
   return true;
  }else
  {
   return false;
  }
 }
 
 public String toString()  //오버라이딩
 {
  String s = "이 차는 "+carName+"이고 바퀴가 " + wheelNum +"개이고 ,현재 속도는 "+ velocity;
  return s;
 }
 
 public static void main( String [] args )
 {
  Car c1,c2;
  c1 = new Car(100,"소나타",4);
  c2 = new Car(100,"소나타",4);
  System.out.println(c1.toString());
  System.out.println(c2.toString());
  
  if(c1 == c2)  //객체 주소값 비교
  {
   System.out.println("레퍼런스 같음");
  }else
  {
   System.out.println("레퍼런스가 틀림");
  }
  
  if(c1.equals(c2))  //String 클래스의 문자열 객체는 주소값이 갖는게 아니라 문자열 자체를 같는다.. 자바특성..
                           // 그래서 문자열 비교를 하게된다.  하지만 이 예제는 equals가 오버라이딩 되어있다...
  {
   System.out.println("객체의 내용이 같네요");
  }else
  {
   System.out.println("겍체의 내용이 틀리네요");
  }
  
 }// end main
}
728x90

 


Calendar는 추상클래스.. 객체생성 X

Calendar.getInstance() 는 현재시간(시스템에 설정된 시간)을 갖는 Calendar 객체를 반환

import java.util.*;

class CalendarTest
{
 public static void main( String [] args ) 
 {
  Calendar cal = Calendar.getInstance(); // 객체 생성
 
  int year = cal.get(Calendar.YEAR);
  int month = cal.get(Calendar.MONTH);
  int day = cal.get(Calendar.DATE);
 
  int h = cal.get(Calendar.HOUR);
  int m = cal.get(Calendar.MINUTE);
  int s = cal.get(Calendar.SECOND);
 
  System.out.println(year+ "년 " + (++month) + "월 " +day + "일 " +h+"시 " +m+"분 "+s+"초 ");
  //월은  1월이 0 으로 처리 한다.  12월은 11로... 그래서 +1 해야됨..
 
  System.out.println("오늘은 올해의 " +cal.get(Calendar.DAY_OF_YEAR)+"번째 날 입니다");
  System.out.println("오늘은 이번주의" +cal.get(Calendar.DAY_OF_WEEK)+"번째 날 입니다");
  System.out.println("오늘은 올해의"+cal.get(Calendar.WEEK_OF_YEAR)+"번째 주 입니다");
 }// end main
}


Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 1996; 96
M Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day in week Text Tuesday; Tue
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800

import java.util.*; //Date
import java.text.*; //SimpleDateFormat을 사용할려고
// java.sql 에도 data가 있어서.. 혼돈을 피하기 위해
class DateTest
{
 public static void main( String [] args )  
 {
  java.util.Date date = new java.util.Date();// 객체생성
  System.out.println(date);//default 는  미국식으로 출력된다.
  
  SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); //월은 대문자...MM
  System.out.println(sdf1.format(date));
  
  SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy년 MM월 dd일");
  System.out.println(sdf2.format(date));
  
  SimpleDateFormat sdf3 = new SimpleDateFormat("H시mm분ss초 EEEE");
  System.out.println(sdf2.format(date)+" "+ sdf3.format(date)+" "); 
  

 }// end main
 

}

+ Recent posts