반응형
SMALL

vector<E> 클래스는 가변개수의 배열에 필요한 메소드 기능을 담고있다. 입력하고자 하는 숫자가 많으면 자동적으로 크기가 조절된다.  


 벡터 생성

    Vector<Integer> v = new Vector<Integer>(); 정수형으로 벡터 생성

    Vector<String> S = new Vector<String>();   문자형으로 벡터 생성


 벡터에 요소 삽입                      JDK1.5버전 이상에서는 자동박싱 변환

    v.add(new Integer(5));               v.add(5);

    s.add(new String("A"));              s.add("A");


  vector<String> 사용예, 그리고 문자"b" 넣는 방법

【1】컬렉션의 특징

   컬렉션은 제네릭이라는 기법을 구현되어 있다. 컬렉션이나 인터페이스의 이름에는 <E><K><V>등이 항상 포함된다. 정수값만 저장하는 Vector<Integer>, 문자열만 저장하는 벡터 Vector<String>이다. 여러 종류의 타입으로 사용할때에는  컬렉션을 일반화시키는 <E>를 사용하는 것이 좋다. <E>를 generic type 이라고 부른다.


2컬렉션 요소는 객체들만 가능하다. int,char,double 기본 타입의 데이터는 켈렉션 요소로 불가능하지만, 기본 타입이 삽입되면 자동박싱(auto boxing)에 의해 Wrapper 클래스로 변환되어 객체 형태로 저장된다.



 ※ vector<Integer>사용 예


벡터 내의 메소드 기능 알아보기

Vector<Integer> v = new Vector<Integer>() ;   벡터 객체 생성

v.add(1);   //벡터 0 번

v.add(3);   //벡터 1 번

v.add(4):   //벡터 2 번

v.add(5);   //벡터 3 번


벡터 v.get()이나 v.elemenAt() 메소드는 Integer객체를 리턴한다. 즉 입력된       1,3,4,5로 리턴를 합니다.

   Integer o = v.get(1);   벡터의 1번째 뜻은 0부터 시작하기 때문에 1에 해당하

   는 3번 출력

   int i = o.intValue();     정수값 호출은 3이 됩니다.



 벡터의 크기와 용량 메소드기능

    int i = v.size();        // 벡터의 크기, 벡터에 존재한 요소 나타냄 

   int i = v.capacity();   // 벡터의 용량 호출


벡터 삭세 메소드 기능

   v. remov(1); 하면  // 벡터 1번에 해당하는 3이 삭제돕니다.

반응형
LIST
반응형
SMALL

Java 코딩을 몰라도 제일 먼저 접했던게 String문자열이었다. String 다양한 생성자를 제공하며 여러형태로 문자열도 만들어 낼수 있다. 


※ 스트링 리터러로 객체 생성:

   String st = "abcdef";


※ 클래스의 생성자를 이용한 스트링 생성


배열로 문자생 char ch[]={'d','c','a','b'}; 

                       

 String st = new String(ch);

 String st2 = new String("dcab");


String()                     //빈 스트링 객체 생성

   String(char[] value)       //문자 배열에 포함된 문자들을 스트링 객체로 생성

   String(String original)     //인자로 주어진 스트링과 똑같은 스트링 객체 생성

   String(StringBuffer buffer)//스트링 버퍼에 포함된 문자들 스트링 객체로 생성

String new(" abab"); 생성하였다. String에 사용되는 메소드를 이용하여

코딩을 작성하여 결과를 보실수 있습니다.

String문자열을 사용하다 보면 코딩할때 필요한 메소는 이용하여 숫자를 출력해 봅니다.

즉, String a="Top class, Top class, Top class"; 에서 글자 's'가 몇번 들어갔는지

확인하는 코딩입니다. 핵심코딩은 a.charAt(i)=='s' 입니다.


※StringBuffer()메소드는 스트링 버퍼의 크기의 문자열 길이는 가변적이다.!


StringBuffer() 메소드는 String 클래스 기능과 유사하지만 제일 큰 차이점은

String 객체가 한번 만들면 수정할수 없는 것과는 StringBuffer객체는 내무에 문자에 문자열을 저장 해가면서 가변의 크기와 버퍼를 가지고 있기에 문자 생성 후 문자열 값을 변경,바꿀 수 있다.

반응형
LIST
반응형
SMALL

   Object 클래스는 java.lang패키지 속에 있는 최상위 자바 클래스 구조에 있다. 우리가 클래스는 생성한다는 건 Object 클래스의 서브 클래스이다.java의 기본 패키지 기능을 잘 알고 있어야 코딩을 작성할때 많은 도움을 받을수 있습니다. 


   ▶ 예문을 통해서 Object클래스에 있는 getClass(),hashCode(),toString()기능을 알아봅시다.


   point t = new Poin(4,5);  생성하여  t.getClass().getName(); 호출하면 Study.Point가 출력됩니다.  즉, getClass(),getName()기능은 객체의 클래스타입을 알아낼수 있습니다.


  t. hasCode(); 호출하면 ' t '의 객체를 유일하게 구분할수 있는 정수 id 값을 리턴합니다.


 t. toString(); 호출하면 ' t '의 객체를 문자열 정보로 변환하여 리턴합니다.




Object 클래스에서 toString()메소드는 현재 객체의 클래스의 이름에 '@'을 연결하고 다시 객체 해시코드 16진수로 변환하여 연결한 문자열을 리턴합니다. 


직접 String s = t+"오";  사용하는 방법과 String s = t.toString()+"오"; 사용하는 방법이 있습니다. 



toStroing()을 메소드로 사용해서 문자열로 Point(  ,    )여기에 a,b가 삽입된 결과가 호출된것을 보실수 있습니다.

이렇게 toString()은 앞으로 코딩을 많이 하다보면 자주 접하게 되는 기능입니다.


반응형
LIST
반응형
SMALL

 java의 기초개념 잡을때 제일 아리송한 부분이 오버로딩(overLoading)와 오버라이딩(OverRiding)이며, this사용과 super사용입니다. 이부분을 정리하면서 책도 여러번 보고 인터넷도 찾아 보았습니다. 



정말! 핵 포인트 말하겠습니다. 오버로딩(OverLoading)은 같은 클래스 내에서 생성자든 메소드든 일정 원칙에 의해서 재 정의 한다는게 오버로딩(OverLoading)입니다.


오버라이딩(OverRiding)이란!! extends로 상속받은 상태에서  생성자든 메소드(method) 일정규칙에 의해 재 정의하여 사용 하는것을 오버라이딩입니다.


여기서 상속을 받았나 안받았나 따라서 오버라이딩(OverRiding)또는 오버로딩(OverLoding)입니다.


아래 예제: 매소드 오버로딩(OverLoding) 입니다.

다음 예제: 생성자 오버로딩(OverLoading)입니다.



Books라는 class안에 생성자를 public Book(); 여러번 오버로딩(Overloading)

하여습니디. 

오버로딩(overloading)은? 매개변수가 달라야 합니다.

생성자란? class이름이 Books로 되어 있으므로. 생성자는 꼭! Books사용하며

반환값(int,string,double,,,,,)을 갖지 않습니다. 


◎ this! 사용


1> this

public books(String titl, String auth, int no){

                      ↑  ↖

 this.titl = titl;   -> titl = titl;  표현하면 둘다 지역변수를 가르키게                                                     됩니다.

 this.auth =auth;  그래서 this는 빨강쪽 가르키는 변수입니다.

 this.no =no;

}


2> this

public books(String titl, int no){

   this(titl,"whois",no);   this는 Books 클래스 내에 이는 다른 생성자를 

                               호출합니다. (titl,"whois",no) 세개의 인자값을 

                               갖는 생성자를 호출합니다.

                                           

                      즉,public books(String titl,String auth, int no){}

}



K k = new K(10); 객체를 생성하였습니다. 결과는 두개가 나옵니다. 

생성자 J,매개변수 생성자B입니다 . 

항상 부모클래스에 기본생성자가 호출됩니다.


this,super 사용이 필요한 이유는 오버로딩(overloading)와 오버라이딩(overriding)때문입니다.

위 예제를 보시면 super(b)사용에 따라서 결과값이 다르다는걸 보실수 있습니다.

즉, super(b) 상속받은 extends J 곳을 가리킵니다. super는 상속받은 오버라이딩과 관계가 있게네요.



상속을 받은  EX는 super,title이 가리키는곳은 부모클래스(superclass)

의 title 입니다.  그리고 super.draw()은 부모 매소드 호출합니다.


this,super 결론은  오버로딩,오버라이딩의해서 this.super사용되어지는 꼴이 되었네요. this은 자기 객체와 매소드  가리킬때, super은 부모 객체, 메소드 가리킬때 사용입니다.

 


반응형
LIST
반응형
SMALL

Java에서 상속관계을 이해하면 java가 더욱 친숙하게 느껴질겁니다. 


▶맴버앞에 private란?

  superclass의 멤버에 private 지정하면  상속받은 subClass라도 멤버로 직접 사용할수 없습니다. 

ex> private int age;  상속받은 서브클라스 사용X(허용안됨)


▶맴버앞에 protected란?

   superclass의 protected는 두가지 조건에서 접근이 됩니다.

   ◎ 같은 클래스 (same class)에서 접근

    같은 패키지(same pakeage)와 상속받은 서브클래스에서 접근

ex> protected int age; 상속받은 다른 패키지 서브클래스에도 허용!



▶맴버앞에 public란?

  superclass가 public이면 어떤 클래스라도 접근허용, 같은 패키지 다른 패키지도 허용

ex> public int age; 어디에서도 상속받으면 다 허용!


▶맴버앞에 default란?

  superClass의 default이면 같은 패키지내 클래스 접근 허용. 

ex> int age ; 즉 (default)int age ; 같은 뜻 , 같은 패키지 서브클래스도 허용


 

   부연설명, 

public class person{

   String name;                -> default값으로 설정

   protected String graduate  -> protected 값으로 설정;

   private String psexy         -> private 값으로 설정;

   public int age;              -> public 값으로 설정;

  }

맴버앞에 default, protected, private,public 설정하는 이유는 프로그램 외부유출을 방지하기 위해서 입니다. 어떤것은 공개를 해도  어떤것은  비공개로 설정하므로써 프로그램 기능을 보호한답니다.



부연설명? 같은 freperfom패키지 안에 클래스 man과 person이 있습니다. man은

extends로 person을 상속을 받았습니다.

여기서 중요한부분은 상속을 받으면 person 맴버들을 다 사용할수 없다는 겁니다.

즉, person클래스에서 private로 설정된 맴버는 사용할수 없습니다.

public class man extends person{

  public void set(){

      name=" kook";

      graduate ="Yes";

      psexy="men"; ->이부분은 person에서 private String psexy설정되어 있기

                         접근이 안되서, 빨간줄이 뜹니다.

      age =26;

}

부연설명? 그럼 private 어떻게 사용하면 될까요?  즉, person class에서

private int age; 설정되었다면 간접적으로 age를 불러서 사용해야합니다. 

즉 대표적으로 잘 사용하는 set,get사용합니다.


private int age;


 public void setAge(int age){

       this.age = age;

   }  -> setAge에 숫자를 넣게다라는 메소드 입니다.


   public int getAge(){

     return age;

   }  -> getAge() 호출하면 숫자를 가져온다는 뜻이며 호출 메소드입니다.


m.set()메소를 호출한다는 뜻입니다.

그리고 System.out.println(m.getAge());  m.set()호출한것을 m.getAge()화면에

보여준다는 기능입니다.

반응형
LIST
반응형
SMALL

java에서 메소드 작성하는 방법부터 알아봅시다. 메소드는 동일한 이름으로 여러번

사용하는것을 오버로딩(method overloading)이라고 합니다.

그럼 메소드 오버로딩(method overloading)을 사용하기 위해서는 규칙이 있습니다.


※ 접근 지정자란? 

메소드를 사용할때에는 접근 지정자를 선언해야 합니다. (public,private,protected, 디폴트) 입니다.


※ 리턴타입이란? 

메소드를 사용할때내는 호출방법을 적시하셔야 합니다.(int, double, String 등) 특정값을 지정하지 않는다면 void을 선언하셔야 합니다.


※ 메소드의 이름?

메소드를 사용할때에는 메소드를 이름을 작성하서야합니다. java에서 메소드를  호출시 인자전달방식은 (call-by-value)입니다. call=by-value란 값에 의한 호출을 말합니다. 예제를 통해서 어떻게 메소드를 호출하는 아실수 있습니다.


메소드 사용 예제입니다.


public int getTotal(int a, int b){ return a+b} 란?  접근지정자는 public 이고

리턴타입은 int이며, 메소드 이름은 getTotal 그리고 인자값은(int a, int b) 전달을 받겠다는 뜻입니다. 그리고 { return a+b}는 public int로 전달한다는 뜻입니다. 만약 전달값이 없다면? public void getTotal(int a, int b){ } 작성하서야 합니다.



getTotal메소드로 여러번 사용하고 있습니다. 여기서 중요한 부분은 

public int getTotal(int a, int b){ return a+b;}란?

접근 지정자는 public 이고 리터타입은 int 이며 메소드 이름은 getTotal이고 (int a, int b) 인자값으로 int a, int b 지정하며 {return a+b;} 는 public int(리턴타입)로 보낸다라는 뜻입니다. 만약 메소드가 특정값을 리턴하지 않는다면? 

public void getTotal(int a, int b){} 작성하시면 됩니다.

 

★ 메소드 이름은 동일


★ 메소드 인자의 개수가 서로 다름 

   getTotal(int a, int b) 인자값 2개/ getTotal(int a, int b, int c) 인자값 3개


★ 메소드 이름은 같고 인자의 개수나 타입이 모든 같고 메소드 리턴타이비 다르면

   오버로딩 실패입니다.



public int getTotal(int a, int b, int c){ return a+b+c;} 와 public double getTotal(int a, int b, int c){ return a+b+c;} 에서  getTotal이름은 같고 리턴타입인int, double 다르지만 인자값(int a, int b, int c)같기 때문에 오버로딩 실패입니다.

반응형
LIST
반응형
SMALL

java를 배우는 이유는 바로, 객체지향 언어입니다. 사용되어지는 모든 것을 객체로 정의하고 각각 객체는 속성과 기능을 가집니다. 객체지향의 발전은 클래스,상속,캡술화,다양성,은닉화로 발전하였으며 프로그램 언어의 최초의 객체지향 언어인 java라고 합니다. 


객체지향의 장점은?

문제를 쉽게 접근가능하고 객체지향으로 만든 프로그램언어는  상호간에 객체들끼리 연동이 이루어지며,또한 독립된 모듈은 다양하게 재사용할수 있습니다.


java는 클래스속에 속성과 기능으로 구성되어져 있습니다.

속  성 : 클래스 속성으로는 int plus와 int min를 지정합니다. 

메소드: public int plu(int a,int b){}와 public int min(int c, int d){} 반환하는 메소을 지정하였습니다.


메소드 기능을 보시면 return plu;는  plu = a+b; 받아서 int plu;로  보낸다라는 뜻입니다.  int plu; (속성) 호출하면 return plu; 값을 얻습니다.


메소드 기능을 보시면 return min;는 min=c-d;받아서 int min;보낸다라는 뜻입니다.

int min;를 호출하면 return min;값을 얻게 됩니다.



PluMin pm = new PIuMin();  PluMin 클래스로부터 pm이라는 객체 생성!


pm의 객체를 생성하였으므로, PluMin 클래스 내의 객체변수들 및 메소드를 호출할수 있습니다. 호출할때에는 호출한 내용을 저장할 변수를 따로 지정하셔야 합니다.

 

int sum; 객체를 선언하였습니다. 

sum = pm.plu(10,20)란   PluMin클래스 내의 plu(int a, int b)메소드를 불러서 int a, int b 값에 10,20을 넣고 이것을 sum라는 변수에 결과값을 넣게 다라는 뜻입니다.


System.out.println(sum)란?  sum값이 30으로 출력됩니다.


sum = pm.min(30,40);란 PluMin클래스에 있는 min(int a, int b)메소드를 불러서 int a, int b에 값 30,40을 넣고 이것을 sum라는 변수에  결과값을 넣게다라는 뜻입니다.


System.out.println(sum)은? sum값이 -10으로 출력됩니다.

반응형
LIST
반응형
SMALL

 배열은 다수의 데이터를 서로 다른 변수에 다량으로 선언하는것 보다는 같은 형의 데이터로 구성되어 있다면 하나의 자료 구조에 저장하여 사용하느게 배열입니다.

배열을 1차열 배열부터 다차월 배열을 예제를 통해서 좀더 구체적이고 어떤 방법으로 사용하는지 java 의 배열 기초 예제를 통해서 익숙하게 코딩을 해봅시다.


◈ 1차원 배열

   배열을 선언과 동시에 생성 int num[]={5,4,3,2,1,6,7,8,9}; 합니다.

   for(int i=0; i<num.length; i++)  배열에서 자주 사용하는 코드입니다.


◈ 배열의 변수 복사와 배열의 복사는 의미가 다릅니다.

   int a[] ={1,2,3};

   int b[]={10,20,30}; 

   b=a  배열명을 복사합니다. 그럼 b는 a에 속하는 배열을 

   가리킴니다. 그럼 b는  b[]={1,2,3,} 배열이 바뀌었습니다. 그리고

   b[] ={1,2,3};에서 b[2]=29; 값을 변경합니다.  

  최종결론 값은  b[]={1,2,29}; 바뀌었으며, 또한 a[]={1,2,29} 바뀐것을

  아실수 있습니다. 왜냐하면 배열의 주소값을 복사했기때문에 주소를 가리치는 모    든 값도 바뀝니다.   

※ 주소값 복사와 다르게 변수를 복사하는 경우에는 값이 직접복사 됨에 아무런 문제가 발생하지 않습니다.

int c[], int d[], 변수값을 복사하였습니다.



   


◈ 2차원 배열

   int num[][] =new int[4][]; 즉 이말은 4행만 선언하고 열은 선언하지

   않았습니다.

      선언된 4행:0부터시작해서 3까지        열부분은  1부터 시작 4까지선언함 

                             num[0]      =       new int [1];

                             num[1]      =       new int [2];

                             num[2]      =       new int [3];

                             num[3]      =       new int [4];

◈ 3차원 배열

   int [][][] three = new int[3][4][5];  3차원 배열을 선언과 동시에 생성

   count =31;은 배열 숫자를 31번부터 배열한다는 의미입니다.


배열의 예제를 통해서 다양한 방법으로 접근해 보았습니다. 

반응형
LIST
반응형
SMALL

배열을 사용하기 위해서는 선언과 생성을 해줘야 합니다. 배열의 선언의미는 배열 변수를 선언하겠다는 뜻이고 배열의 생성 의미는 배열의 요소들을 저장할 공간을 만들겠다는 뜻입니다. 자바의 배열은 기본자료형이 아니라 참조형입니다. 참조자료형은 직접 값을 저장하는 것이 아니라, 메모리 어딘가에 배열의 주소를 가지는 형태입니다. 이런 차이는 나중에  매개변수 전달과정에서 많은 차이점을 나타납니다.


◎ 배열의 선언!

type name[];  란 ? type(참조형)에 name(변수)선언입니다.  (1차배열 선언)

type name[][];란 ? type(참조형)에 name(변수)선언입니다.  (2차 배열 선언) 

 

name = new type[3];? name(변수)에 type[3] 배열 3개를 생성입니다.

즉,name에는 name ={   ,    배열은 3개는 3개의 공간을 생성하였다는 뜻입니다.


name = new type[5][2];?란 type[5][2] 5행 2열을 생성입니다. 

즉, name ={      },

            {    ,   },

            {     },

            {   ,   },

            {   ,   }; 5개의 열과 2개의 행의 공간을 생성하였다는 뜻입니다.


배열의 선언과 생성과정을 알아봤습니다.

만약 배열의 초기값을 선언하지 않으면 어떻게 될까요? 묵시적 값을 얻습니다.


1차 배열의 선언과 생성 프로그램을 작성을 해보겠습니다.

 int number[]={88,97,86,85,90 }; 1차배열을 선언과 동시에 생성하였습니다.

int max에 number[];값을 넣겠다는 뜻입니다. 여기서 number[0]을 넣은 이유는 

for(int i: number) 여기에서 '0'부터 시작하여 0,1,2,3,4,5까지 순차적으로 넣겠다는 뜻입니다. 제일 큰 숫자는 찾는 겁니다. 확장된 for문이란 아래 예제를 비교하지면

for(int i=0; i<number.length; i++) 줄인표현입니다.

두가지 예문을 통하여 1차 배열의 선언과 생성 프로그램을 작성하였습니다.


반응형
LIST
반응형
SMALL

조건switch문은 다중 선택 기능을 제공하고 있습니다. switch문은 참,거짓의 논리값을 갖고 있는 if 조건문과 달리 switch 조건문은  (정수값을 가지는 정수식)으로 표현합니다. 정수식에 따라서 처리하는 문장들이 다르기때문에 다중 처리에 작성하기 유용한 프로그램입니다.그래서 if 조건문으로 할지?switch 조건문으로 할지 결정해야 합니다.




swtich 조건문으로  0,1,2를 보,가위,바위로 설정하고 변수 number 값에 10을 넣었을때 어떤 결과값이 나올까요? 


ex> 

int number = 10;

swtich(number %3)

      {

        case 0:

          System.out.println("보를 선택하였군요!");

          break;

        case 1:

          System.out.println("가위를 선택하였군요!");

          break;

        case 2:

          System.out.println("바위를 선택하였군요!");

          break;

        }


◈ while반목문

특정 조건이 만족될때까지 지정된 영역을 반복수행하는 기능을 제공하고 있습니다.

while 반복문은 while문 사용하기 전에 선언과 초기화를 반드시 되어 있어야 합니다.




while반복문은 for문가 비교하여 인식하여야 합니다. 아래 예제는while반복문으로 1부터 10까지 구하는 공식입니다.10보다 크면 조건식에 맞지 않기에 종료됩니다. 증감표시로는 i++; 표시하셔야 합니다.


ex> 

 

 int i=0;   (while문 사용하기 전에 선언과 초기화 설정!!)

 int sum=0;

 while(i<10){

           sum +=i;

            System.out.println(sum)

            i++;

            }


◈ for반복문!! 

for(초기문: 조건식;반복후 작업){ 작업문} 

* 초기문은 한번만 실행

* 초기문은 콤마(,)로 분리     ex) for(int i=0, sum=0 ; i<=10; i++); 

* 초기문은 빈 상태로 두어도 됨 ex) for(   ;   ;   )




이번에는 for문을 통해서 1부터 10까지의 더해서 합을 구하는 공식입니다. while반복문과 비교해보시기 바랍니다.


ex>

int sum=0;

for(i=1; i<=10;i++)
{
   sum = sum+i;

}

System.out.println("1부터 10까지의 합은"+sum+"입니다");

반응형
LIST

+ Recent posts