반응형
SMALL

  HashMap<K,Y>컬렉션은 key(키)와 value(값)으로 구성되어 있으면 'K'로 사용할 데이터 타입을 'V'는 값으로 사용하여 데이터 타입 매개변수이다. HashMap은 'key'와'값'을 저장하는 자료 구조를 가지고 있다. HashMap에 자료를 입력할시 put()을 이용하고 자료를 출력시에는 get() 메소드를 사용한다.

put(key,value) 메소드는 '키'와 '값'을 받아서 '키'를 기반으로 함수를 실행하여 내 위치를 결정합니다. 그 위치에 따라 '키'와 값이 저장됩니다. '키'를 호출하면 '값'저장된 위치를 알아내고 '값'을 위치를 결정합니다. 어느 위치에 '키'와 '값'이 들어 있는지 사용자는 알수 없으며, 입력된 순서와 상관없이 출력됩니다.


※HashMap <  K ,       > 사용 예제

               key값,  value값 의미합니다.

has.put() 메소드를 사용하여 자료를 입력합니다. 총 4개의 자료를입력합니다.

Set<k>keySet()은 HashMap에 있는 모든 키를 담은 컬렉션 리턴메소드이다.


Set<String>set = has.keySet();  key 문자열을 가진 집한 set컬렉션 리턴

Iterator<String> it = set.iterator(); key 문자열을 순서대로 접근할수 있게 리턴

System.out.println(has.get(a)); 여기소 HashMap접근해서 get(a) a를 꺼내다.

그러면 a는 String a = it.next() 가리키고 it.next()이것은 set 의미하고 set

key를 뜻한다. 즉 key 선택하며 Value값을 얻는다.


HashMap<K,V> scanner 메소드 이용 예제


HashMap<K,V>에서 Scanner 을 이용하여 Love 입력하면 '사랑해' 출력된다.

즉, key 값 Love 입력 하면 value 값이 출력된다.

System.out.println(has.get(eng)); 메소드는 String value=has.get(key);전달되어

호출된다.


※HashMap<K,V> 클래스를 이용하여 사용하기


HashMap<String, Student> ha = new HashMap<String, Student>();

                   → class Student {}호출함합니다.  

입력방법 ha.put("스타병", new Student(1,"010-444-4444")); 입력함

                            → Student 클래스 생성하여 사용함합니다.

반응형
LIST
반응형
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

  인간이 컴파일러와 약속된 언어를 사용하여 프로그램을 작성하여 컴파일러는 커퓨터가 이해할 수 있도록 기계어로 번역하는 역할을 수행한다. 하다웨어 제어가 가능하기 때문에 저급 언어의 특성을 지닌 고급언어라 한다.


 논리적이며 구조적인 시스템 프로그램밍 언어

★ 하드웨어 제어가 가능하다.

 프로그램 인식성이 높다

 간략한 문법 표현으로 함축적인 프로그램 작성이 용이한다.

 저급 언어 특성을 가진 고급언어이다.


C언어로는 작성된 프로그램은 크게 코딩(Coding), 컴파일(compile), 링킹(linking)이라는 3단계의 변환 과정을 거쳐 완성된다.


(1) 코딩 단계ㅡ ㄴ주어진 문제에 대한 설계를 바탕으로 소스 코드를 작성하여 소스 파일을 생성하는 과정

(2) 컴파일 단계는 소스 파일이 목적파일로 변환되는 과정이다.

(3) 링킹 단계는 목적 파일을 실행 파일로 변환하는 과정이다.




C언어의 규칙

  C프로그램은 반드시 하나 이사의 함수를 포함해야 한다.

  mian()함수가 반드시 하나 존재

  함수의 시작과 끝을 알리는 중괄호({})를 사용

  중괄호 안에는 변수 선언문, 치환문, 연산문, 함수 등의 명령을 기입

  선행처리를 제외하고 문장의 끝에는 세미콜론(;)을 붙인다.


C언어 변수 사용시 주의사항

  영문자와 숫자의 조합 허용

 ▷ 첫 문자는 영문자나 밑줄(_)이어야 함

 ▷ 특수문자를 사용해서는 안됨

 ▷ 문자 사이 공백 안됨

 ▷ 예약어 사용 안됨

 ▷ 영문자 대소문자 서로 구별하여 사용함

 ▷ 명칠의 길이는 컴파일러에 따라 차이가 있음(32자까지 인식)



반응형
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

+ Recent posts