[JAVA] 배열

Posted by 신희준 on August 21, 2017
<meta name="facebook:title" content="자바 배열">
<meta name="facebook:description" content="자바의 정석책을 참고하여 요약한 JAVA 배열">
<meta name="facebook:domain" content="http://shj7242.github.io/2017/08/21/JAVA3/">

</head>


2017 - 08 - 21 (월)

  • 배열

  • 참고 도서 : 자바의 정석(남궁성 저, 도우출판)


    1 . 배열


    배열 : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것이다. --배열의 크기는 변형 불가능하다. (ArrayList 나 Vector 형태로 사용한다.) 배열의 선언 및 방법

    
    int score [];
    score [] = new int[5]; // 배열의 크기가 5인 배열을 생성해준다.
    // int score[] = new score[5];
    String name [] = {"a","b","c","d"};
    

    [ ] 의 위치는 변수명의 앞에오건 뒤에오건 상관없다.

    배열 복사

    String name [] = {"a","b","c","d","e"}
    
    String name1[] = new String[name.length];
    for(int i =0; i < name.length; i ++){
      String temp = name[i];
      name1[i]=temp;
      //String name1[i]=name[i];
    }
    

    가변 배열 만들어보기(Vector)

    import java.util.Arrays;
    
    class MyVector{
    	int capacity;
    	int size=0;
    	Object objArry[];
    	MyVector(){
    		this.capacity=2;
    		objArry = new Object[capacity];
    	}
    	MyVector(int capacity){
    		this.capacity = capacity;
    		objArry = new Object[capacity];
    	}
    	public int getSize(){
    		return size;
    	}
    	public int getCapacity(){
    		return capacity;
    	}
    	public boolean isEmpty(){
    		if(objArry.length==0) {
    			return true;
    		}else {
    			return false;
    		}
    	}
    	public void add(Object obj){
    		if(getSize()==getCapacity()) {
    			Object temp[] = new Object[capacity];
    			temp = objArry;
    			capacity = capacity*2;
    			objArry = new Object[capacity];
    			for(int i = 0 ; i<temp.length;i++) {
    				objArry[i]=temp[i];
    			}
    		}
    			objArry[size] = obj;
    			size++;
    	}
    	public Object get(int index){
    		return objArry[index];
    	}
    	public int indexof(Object obj) {
    		int i;
    		for(i = 0 ; i<objArry.length; i++) {
    			if(objArry[i]==obj) {
    				break;
    			}
    		}
    		return i;
    	}
    	public boolean delete(Object obj) {
    		if (objArry[indexof(obj)]==null)
    				return false;
    		else
    		{
    			for(int i = 0 ; i < objArry.length ; i++) {
    			if(objArry[i]==obj) {
    				objArry[i] = null;
    				break;
    			}
    		}
    		Object temp[] = new Object[objArry.length-1];
    		temp=objArry;
    		for(int i = 0 ; i < size ; i++) {
    			if(objArry[i]==null) {
    				for(int j = i; j<size; j++)
    					temp[j]=temp[j+1];
    			}
    
    		objArry = new Object[temp.length];
    		objArry = temp;
    
    
    		}
    		return true;}
    	}
    	/*public boolean delete(Object obj) {
    		Object temp[] = new Object[objArry.length];
    
    		temp = objArry;
    		for(int i = 0 ; i < objArry.length ; i++) {
    			if(objArry[i]==obj) {
    				objArry[i] = null;
    				break;
    			}
    		}
    		for(int i = 0 ; i < temp.length-1 ; i++) {
    			if(temp[i]==null) {
    				for(int j = i; j<temp.length-1; j++)
    					objArry[j]=temp[j+1];
    			}			
    		}
    		System.out.println();
    		return true;
    	}*/
    	public String toString() {
    	      return Arrays.toString(objArry);
    	  }
    
    	}
    
    public class VectorTest{
    	public static void main(String[] args) {
    		MyVector vc = new MyVector();
    		/*System.out.println("vc의 capacity : " + vc.getCapacity());
    		System.out.println("vc의 size : " + vc.getSize());
    		System.out.println("vc 가 비어있는가? " + vc.isEmpty());*/
    		vc.add(1);
    		vc.add(2);
    		/*System.out.println("vc의 capacity : " + vc.getCapacity());
    		System.out.println("vc의 size : " + vc.getSize());
    		System.out.println("vc 가 비어있는가? " + vc.isEmpty());*/
    		vc.add(3);
    		vc.add(4);
    		/*System.out.println("vc의 capacity : " + vc.getCapacity());
    		System.out.println("vc의 size : " + vc.getSize());
    		System.out.println("vc 가 비어있는가? " + vc.isEmpty());*/
    		vc.add(5);
    		vc.add(6);
    		/*System.out.println("vc의 capacity : " + vc.getCapacity());
    		System.out.println("vc의 size : " + vc.getSize());
    		System.out.println("vc 가 비어있는가? " + vc.isEmpty());*/
    		System.out.println(vc.toString());
    		vc.delete(2);
    		/*System.out.println("vc의 capacity : " + vc.getCapacity());
    		System.out.println("vc의 size : " + vc.getSize());
    		System.out.println("vc 가 비어있는가? " + vc.isEmpty());*/
    		System.out.println(vc.toString());
    
    	}
    }