edu day 16,17
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 : 자동 임포트 명령어
특정 문자를 기준으로 문자열을 구분하여 배열에 리턴할 수 있는 메소드.
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);
}
}
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 = "서울";
}
}
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을 함수를 만들면 그냥 출력해도 된다.
public String toString() {
return "toString호출"+this.name+this.age+this.address;
}
========
System.out.println(stu2.toString());
System.out.println(stu2);
--> 둘 다 같은 결과가 출력된다. 묵시적으로 toString()이 생략되기 때믄
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개짜리 생성자 호출");
}
getter는 메소드 값을 그대로 받아온다.
setter는 메소드 값을 변경한다.