1.DataClass
package com.ohj.array;
import java.util.ArrayList;
public class DataClass {
ArrayList<EmployeeClass> empArr = new ArrayList<EmployeeClass>();//임포트 해줘야 함
public DataClass(){
empArr.add(new EmployeeClass(1001, "송민호", "사원", "2007-03-01", 300, 0, 20));
empArr.add(new EmployeeClass(1002, "이영민", "대리", "2007-04-02", 250, 80, 30));
empArr.add(new EmployeeClass(1003, "김민우", "과장", "2005-02-10", 500, 100, 30));
empArr.add(new EmployeeClass(1004, "장희재", "부장", "2003-09-02", 600, 0, 20));
empArr.add(new EmployeeClass(1005, "오종호", "과장", "2005-04-07", 450, 200, 30));
empArr.add(new EmployeeClass(1006, "최형우", "부장", "2003-10-09", 480, 0, 30));
empArr.add(new EmployeeClass(1007, "윤가람", "부장", "2004-01-08", 520, 0, 10));
empArr.add(new EmployeeClass());
}
}
2.EmployeeClass
package com.ohj.array;
public class EmployeeClass {
int empNo=0;
String eName ="";
String job="";
String hireDate="";
int sale=0;
int commission=0;
int deptNo=0;
public EmployeeClass(){//기본 생성자
}
//모든데이터를 전달받는 생성자
public EmployeeClass(int e,String n,String j,String h,int s,int c,int f,int d){
this.empNo=e;
this.eName=n;
this.job=j;
this.hireDate=h;
this.sale=s;
this.commission=c;
this.deptNo=d;
}
//부서 식별 번호가 없는 데이터를 전달받는 생성자
public EmployeeClass(int e,String n,String j,String h,int s,int c,int f){
this.empNo=e;
this.eName=n;
this.job=j;
this.hireDate=h;
this.sale=s;
this.commission=c;
}
}
3.InfoClass
package com.ohj.array;
public class InfoClass {//클래스 선언 부에는 private를 절대 붙이지 않는다
private String no;//private 내 클래스 내부에서만 사용하겠다.외부에서는 변수 값을 사용 할 수 없다.
int age = 0;
private InfoClass(){//이곳에 private를 적용하면 main에 객체를 생성하지 못한다.
}
public InfoClass(String string) {
this.no=string;
this.ageOperator();
}
private void ageOperator(){
//ic.no = "881234-4345678";
String[] s=this.no.split("-");// -를 기준으로 둘로 쪼갬
//s[0] :"881234"//s[1]"2345678"이 들어가게 된다.
String year=s[0].substring(0,2);//뽑아내려는 숫자 s[0]에는 0=8/1=8로 순서대로 들어가 있다. 시작 인덱스번호를 가져온다.(0부터 2번까지의 숫자를 가져온다)
System.out.println(year);
String genderNo=s[1].substring(0,1);
System.out.println(genderNo);
if(genderNo.equals("1")||genderNo.equals("2")){// 젠더가 1이거나 2이면
this. age = 2020-(1900+Integer.parseInt(year));
System.out.println(this.age);//문자열을 숫자로 바꾸는 메소드
}else{
this. age = 2000+Integer.parseInt(year);//주민등록번호를 나이를 구하는 법
if(age>2020){
System.out.println("연도를 잘못 입력하셨습니다.");
}else{
this.age=2020-this.age;
}
}
}
}
4.TestClass
package com.ohj.array;
public class TestClass {
int a =10;
final float PI=3.14f;// 최종값이라고 선언했기 때문에 밑에서 바꿀 수 없다.(final)
public TestClass(){
this.a=100;
//this.PI=3.13195f 상수 값은 변경불가
float f2 = this.PI;// 꺼내 쓸 수는 있다
}
}
5.MainClass
package com.ohj.array;
import java.util.ArrayList;
public class MainClass {
public static void main(String[] args) {
DataClass dc = new DataClass();
for(int i =0;i<dc.empArr.size();i++){
System.out.println(dc.empArr.get(i).eName);
}
//InfoClass ic = new InfoClass("181234-3345678");
//System.out.println(ic.age);
//TestClass tc = new TestClass();
//ArrayList<TestClass> a = new ArrayList<TestClass>();//예약을 해놨기 때문에 따로 설정해줄 필요가 없음
//a.add(tc);
//int s = a.size();//방개수를 아는 방법
//System.out.println(s);
//Object t = a.get(0);
//TestClass t2 = (TestClass)a.get(0);
}
}
/*
배열 : 주로 여러개의 값을 저장 할때
배열의 특징 : 동일한 데이터 타입만 저장 가능
초기 인덱스(방)의 개수는 수정 불가능
초기에 인덱스(방)의 갯수를 설정
ex) TestClass[] tArr= new TestClass[3];
ArrayList : 외부클래스로 존재(ArrayList.Class)
이것을 사용하려면 반드시 import가 필요(import java.util.ArrayList)
내부 메소드를 통하여 갯수가 정해지고 수정가능, 따라서 객체생성이 필수(new ArrayList())
ArrayList는 주로 객체들을 저장할 때 사용
타양한 타입의 데이터를 한번에 보관 할 수있다(오브젝트 파일로 추가되기 때문에 가능하다)
ex)ArrayList a = new ArrayList();
a.add(new TestClass);
a.add(true);
a.add(1123);
a.add(12.5);
a.add('abcd);
단 저장된 값은 오브젝트 타입으로 저장된다.
따라서 데이터를 사용 할 경우 원래 타입으로 변환해야 한다.
예 TestClass t =(TestClass)a.get(0);
만약 동일한 타입의 객체들을 저장할 경우에는 미리 타입을 예약한다.(배열과 ArrayList의 차이점)
ex) ArrayList<TestClass> a = new ArrayList<TestClass>();
a.add(new TestClass());//테스트 클래스 타입으로 저장 됨.
TestClass tt = a.get(0);//테이터 타입 변환 필요 없음.
arrayList의 주요 메소드
1. add; // 맨 마지막 위치에 데이터 추가
2. get(인덱스번호);//지정한 위치의 데이터 추출
3. remove(인덱스번호)//지정한 위치의 데이터를 제거하고 그 데이터를 반환.
4. size() // 데이터의 갯수를 반환
ArrayList에 데이터를 추가하거나 삭제할 경우, size()는 자동으로 바뀐다.
ex) ArrayList<TestClass> a= new ArrayList<TestClass>();
a.add(new testClass); // Size()=>1
a.add(new testClass); // Size()=>2
a.add(new testClass); // Size()=>3
a.remove(0); //size()=>2
이 때 제거된 데이터 위치로 다른 데이터들이 한칸씩 이동된다.
*/
':: IT > JAVA' 카테고리의 다른 글
이클립스 스킨테마 변경 (0) | 2020.03.25 |
---|---|
20200107 메소드, String (0) | 2020.03.24 |
20200103 JAVA (ArrayList, split, Integer.parseInt, remove) (0) | 2020.03.22 |
20200102 JAVA Class(클래스, 메소드 기초, 배열) (0) | 2020.03.22 |
20191231 if문, 반복문(for문), 메소드 (0) | 2020.03.18 |