Java / 배열, Class, 생성자

Cheol·2023년 6월 1일
1

Java

목록 보기
3/8
post-thumbnail

edu day 16,17

배열


배열의 개념

  • 같은 자료형의 배열 선언
  • 배열의 방의 갯수 선언(크기)
  • 생성된 배열의 방 각 자료형의 기본값으로 자동 초기화
  • 정수형: 0, 실수형 0.0, 문자형: 공백, 참조형 : null
  • 생성된 배열을 참조하는 참조변수로 접근 index를 이용, 각방을 사용함

call by value : 값의 전달, 기본형 데이터만 해당

  • 호출할 때 매개변수의 값(복사본)을 전달합니다.
  • 함수 내에서 매개변수의 값을 변경해도 원본 변수에는 영향을 주지 않습니다.
  • 원본 변수와 매개변수는 각각 독립적인 메모리 공간을 가지며, 서로 다른 주소를 가리킵니다.

call by reference : 참조형 데이터

  • 호출할 때 매개변수의 참조(주소)를 전달합니다.
  • 함수 내에서 매개변수를 통해 원본 변수의 값을 변경할 수 있습니다.
  • 원본 변수와 매개변수는 같은 메모리 공간을 참조하며, 같은 주소를 가리킵니다.

배열 관련 유틸리티 클래스

  • 해당 배열의 값이 몇번째 인덱스인지 확인하는 메소드
    • Arrays.asList(배열[ ]).indexOf("해당배열이름")
    • Arrays.binarySearch(kkk, "해당배열이름")
  • 배열을 알파벳순으로 정렬하는 메소드
    • Arrays.sort(배열[ ])
  • 배열의 값이 같은지 판별하는 메소드
    • Arrays.equlas(배열[ ] a, 배열[ ] b)
  • 특정 값으로 배열을 채우는 메소드
    • Arrays.fill(배열[ ], start, end, value) -- 범위 생략 가능
  • 배열을 복사하는 메소드
    • Arrays.copyOf(배열[ ], 복사할 값 인덱스 길이)
import java.util.Arrays;

public class ArrayTest_Util {

	public static void main(String[] args) {

		String [] kkk = {"xMan","Alex","XMan", "Bob","Curl"};
		System.out.println(Arrays.asList(kkk).indexOf("Bob"));
		
		Arrays.sort(kkk);	// 알파벳순 정렬
		int idx = Arrays.binarySearch(kkk, "Bob");
		System.out.println(idx);
		
		//오름차순 정렬
		int [] xyz = {3,2,1,4,5};
		Arrays.sort(xyz);
		for (int i : xyz) {
			System.out.println("***"+i);
		}
		
		int [] a = {10, 20};
		int [] b = {10, 20};		
		System.out.println(a==b);	//false
		System.out.println(Arrays.equals(a, b));	//true
		
		// 배열 값 변경
		int [] num2 = {10, 20, 30, 40, 50};		
		Arrays.fill(num2, 100);
		for (int i : num2) {
			System.out.println("fill : "+ i);
		}
		Arrays.fill(num2, 1, 3, 200);	// start, end 지정 가능
		for (int i : num2) {
			System.out.println("fill2 : "+ i);
		}

		// 배열 복사
		int [] xxx = Arrays.copyOf(num2, num2.length);	// 모든 인덱스의 값 복사
		for (int i : xxx) {
			System.out.println(i);
		}
		int [] xxx2 = Arrays.copyOf(num2, 2);	// 0번부터 2개의 인덱스 값만 복사
		for (int i : xxx2) {
			System.out.println(">>>"+i);
		}
	}

}

-- Ctrl + Shift + o : 자동 임포트 명령어

Spilt 메소드

특정 문자를 기준으로 문자열을 구분하여 배열에 리턴할 수 있는 메소드.


public class Test14 {

	public static void main(String[] args) {

		String mesg = "100/200/300/400";
		String [] data = mesg.split("/");
		
		int sum = 0;
		for (int i = 0; i < data.length; i++) {
			int n = Integer.parseInt(data[i]);	//배열에 저장된 값은 String형이기 때문에 int형으로 형변환을 한다.
			sum += n;	
		}
		System.out.println(sum);
		System.out.println(sum/data.length);
//		int n = Integer.parseInt(data[0]);
//		int n2 = Integer.parseInt(data[1]);
//		System.out.println("정수값 합계: "+(n+n2));
//		System.out.println("정수값 평균: "+(n+n2)/data.length);
		
		
	}

}


Class

클래스의 특징

DB의 column과 비슷하다.
멤버 변수, 인스턴스 변수의 특징
1. 클래스 블록에 선언된다.
2. 변수는 반드시 객체 생성 한 후 사용: new 키워드를 이용한 객체생성
3. 객체를 생성하면 자동으로 타입의 기본값으로 묵시적 초기화(자동초기화)
String - null, int - 0, double - 0.0, char - 공백, boolean - false로 기본초기화
4. 2번의 생성시 참조변수로 변수 사용가능: 참조변수, 변수명
5. 접근제한자 설정으로 다른 클래스의 접근을 제한 가능

ex)

public class Student {
   String name;
   int age;
   String address;
}

public class TestStudent {

	public static void main(String[] args) {
//		학생 1명의 정보 저장을 위한 클래스의 객체 생성
		Student stu1 = new Student();
		stu1.name = "홍길동";
		stu1.age = 20;
		stu1.address = "서울";
	}
}

생성자

  • 생성자(constructor)의 영역 : 멤버변수를 최초(new 객체생성시) 설정하는 역할
  • 접근지정자 클래스이름(){} ==> 기본생성자 (default constructor)
  • 기본생성자 : 개발자 미작성시 jdk가 자동으로 만들어 코드에 넣어줌: 안적어도 자동클래스에 기본생성자를 가지게해줌
  • 다른 클래스에서 new Student()로 기본생성자 호출 -> 객체 생성 사용 가능함
  • 개발자가 생성자를 명시적으로 작성, 선언 -> jdk가 하던 기본생성자를 만들고 코드에 넣어주는 작업을 하지 않음.
public class Person {
	String name;	
	int age;
	String phone;
	
    //기본생성자 명시적 작성
	public Person() {
		
	}	
	
    //생성자의 오버로딩 : 이름이 같은 생성자여도
    //매개변수로 다른 값을 주면 생성 가능
	public Person(String name, int age, String phone)
	{
		System.out.println("3개의 매개변수를 가진 생성자 호출");
		this.age=age;
		this.name=name;
		this.phone=phone;
	}
}


toString() 함수

멤버변수 데이터 출력용 함수이다. toString을 함수를 만들면 그냥 출력해도 된다.

   public String toString() {
    	return "toString호출"+this.name+this.age+this.address;
    }
    
    
  ========
  System.out.println(stu2.toString());
  System.out.println(stu2);
  --> 둘 다 같은 결과가 출력된다. 묵시적으로 toString()이 생략되기 때믄

this를 이용한 생성자에서 다른 오버로딩 생성자 호출

   public Student(String name, int age)
    {
    	this(name, age, "경기", "??????????");
    	System.out.println("매개변수 2개짜리 생성자 호출");
    }
    
    public Student(String name, int age, String address, String ssn)
    {
    	this.name = name;
    	this.age = age;
    	this.address = address;
    	this.ssn = ssn;
    	System.out.println("매개변수 4개짜리 생성자 호출");
    }
  • 매개변수 2개받는 생성자에서 this를 이용해 매개변수를 4개 받는 생성자를 호출할 수 있다.

getter, setter 함수

getter는 메소드 값을 그대로 받아온다.
setter는 메소드 값을 변경한다.

0개의 댓글