반응형
package generic;
public class Sample<Z> {
Object[] repository = new Object[3];
int position = 0;
public void add(Z z){
//제너릭 장점 모든 타입을 객체 생성할때 타입을 정할수 있다는 장점이 있다.
//형변환을 매번 할 필요가 없어서 편해진다.
repository[ position++] = z; //저장소
if( position > 3){
System. out.println( "저장소가 가득 찼습니다." );
}
}
public Z get( int index){
return (Z)repository [ index];
}
}
package generic;
public class SampleDemo {
public static void main(String[] args){
Sample<String> repo1 = new Sample<>();
repo1.add( "홍길동" );
repo1.add( "이순신" );
repo1.add( "유관순" );
String value1 = repo1.get(0);
System. out.println( value1);
Sample<Integer> repo2 = new Sample<Integer>();
repo2.add(23); //repo2.add(new Integer(23);
repo2.add(24);
repo2.add(40);
int value2 = repo2.get(0);
System. out.println( value2);
//변수를 generic을 이용하여 object 형태로 선언하면
//실제 메인에서 어떠한 형도 받을수 있게끔 처리 되도록 함
/**
* 결과화면_____
* 홍길동
23
*/
}
}
자료구조
값을 담을수 있는 공간 데이터를 저장하는 형태
list : 어떠한 변수를 저장 하여 선형 형태로 되어 있다. 넣은순서대로 그대로 뽑을수 있다.
set : 중복을 허용하지 않는 자료구조
stack : 선입추출 First In Last out 메소드 변수를 사용할때 사용되는 자료구조
queue : 프린터에서 많이사용되는 자료구조
tree : 어떠한 숫자를 찾기위해서 list 나 stack를 찾으려면 순서대로 조회해야 하므로 시간이 오래걸리나 tree구조는 특정 숫자가 트리 구조로 되어 있기 때문에 검색 속도가 굉장히 빨라진다.
오라클에서 색인 및 인덱스가 트리구조로 되어있다.
queue는 메시지나 네트워크 프로그래밍에서 많이 사용된다.
실제 프로그램에서 많이 사용되는것은 list, set이 사용된다.
89% list 자료구조 set 1%가 프로그램에서 사용됨 약10% map사용
map은 매핑되있는데 이름과 값이 매핑 되어 있음
key == value
http://www.gurubee.net/ -> DBA 관련 질문올리면 바로답변 해주는 좋은사이트
http://wiki.gurubee.net/dashboard.action -> DB
package collection;
import java.util.HashSet;
public class SetDemo {
public static void main(String[] args){
//set은 중복을 허용하지 않는다.
HashSet<String> s = new HashSet<String>();
//HashSet에 데이터 저장하기 집합의 특징을 가지고 있음
s.add( "이순신" );
s.add( "김유신" );
s.add( "강감찬" );
s.add( "홍길동" );
s.add( "홍길동" );//갯수가 5개가 되지 않는다. 같은것은 들어가지 않음
//hashset에 저장된 데이타의 갯수 알아내기 hashset은 인덱스가 없다.
int size = s.size();
System. out.println( size);
//포함하고 있는지
System. out.println( "강감찬을 포함하고 있는지" + s.contains( "강감찬" ));
//똑같은게 안들어가게 하려면 hash코드를 사용함
for(String name : s){
System. out.println( name);
}
//있는지 없는지 체크
System. out.println( s.isEmpty());
//결과_______________________
// 4
// 강감찬을 포함하고 있는지true
// 홍길동
// 김유신
// 강감찬
// 이순신
// false
}
}
package collection;
public class Contact {
private String name;
private String email;
private String phone;
public Contact(){}
public Contact(String name, String email, String phone){
this. name = name;
this. email = email;
this. phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this. name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this. email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this. phone = phone;
}
@Override
public String toString() {
return "Contact [name=" + name + ", email=" + email + ", phone="
+ phone + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (( email == null) ? 0 : email.hashCode());
result = prime * result + (( name == null) ? 0 : name.hashCode());
result = prime * result + (( phone == null) ? 0 : phone.hashCode());
return result;
}
//hash 코드로 구분
@Override
public boolean equals(Object obj) {
if ( this == obj)
return true;
if ( obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Contact other = (Contact) obj;
if ( email == null) {
if ( other. email != null)
return false;
} else if (! email.equals( other. email))
return false;
if ( name == null) {
if ( other. name != null)
return false;
} else if (! name.equals( other. name))
return false;
if ( phone == null) {
if ( other. phone != null)
return false;
} else if (! phone.equals( other. phone))
return false;
return true;
}
}
package collection;
import java.util.HashSet;
public class ContactDemo {
public static void main(String[] args){
//연락처 정보를 여러 개 담고 싶어.
HashSet<Contact> contacts = new HashSet<Contact>();
//hashcode와 이퀄즈를 재정의 하는 이유는 이름 이메일 전화번호를 기준으로 해쉬코드가 만들어진다.
//그래서 같은 객체가 있는것을 체크를 할수 있다.
//hashset에 또다른 hashset을 담을수 있음. 객체를 여러개 담는것을 많이 사용
contacts.add( new Contact( "홍길동" , "hong@gmail.com" , "010-1234-5678" ));
contacts.add( new Contact( "아이유" , "aeyou@gmail.com" , "010-2222-5678" ));
contacts.add( new Contact( "이혜리" , "leeherl@gmail.com" , "010-3333-5678" ));
contacts.add( new Contact( "이혜리" , "leeherl@gmail.com" , "010-3333-5678" ));
for(Contact c : contacts){
//System.out.println(c);
String n = c.getName();
String p = c.getEmail();
String e = c.getName();
System. out.printf( "%s,%s,%s\n", n, p, e);
}
}
}
package collection;
public class Dish {
private String name;
private boolean isVegeterian;
private int calories;
public Dish(String name, boolean isVegeterian, int calories) {
super();
this. name = name;
this. isVegeterian = isVegeterian;
this. calories = calories;
}
public String getName() {
return name;
}
public void setName(String name) {
this. name = name;
}
public boolean isVegeterian() {
return isVegeterian;
}
public void setVegeterian( boolean isVegeterian) {
this. isVegeterian = isVegeterian;
}
public int getCalories() {
return calories;
}
public void setCalories( int calories) {
this. calories = calories;
}
@Override
public String toString() {
return "Dish [name=" + name + ", isVegeterian=" + isVegeterian
+ ", calories=" + calories + "]";
}
}
package collection;
import java.util.HashSet;
public class DishDemo {
public static void main(String[] args){
//요리를 여러개 담을래
HashSet<Dish> menu = new HashSet<Dish>();
menu.add( new Dish( "삼겹살" , false , 500));
menu.add( new Dish( "피자" , false , 700));
menu.add( new Dish( "치킨" , false , 900));
menu.add( new Dish( "오뎅" , false , 100));
menu.add( new Dish( "떡볶이" , false , 200));
menu.add( new Dish( "김밥" , false , 300));
menu.add( new Dish( "돼지족발" , false , 200));
menu.add( new Dish( "매운떡볶이" , false, 600));
//500칼로리 이상의 요리만 담을래
HashSet<Dish> myMenu = new HashSet<Dish>();
for(Dish d : menu){
if( d.getCalories() > 500){
myMenu.add( d);
}
}
for(Dish m : myMenu){
System. out.println( m);
}
/*결과화면____________
* Dish [name=매운떡볶이, isVegeterian=false, calories=600]
Dish [name=피자, isVegeterian=false, calories=700]
Dish [name=치킨, isVegeterian=false, calories=900]
*/
}
}
성능 개선
IO를 어떻게 줄일것이냐 파일 입출력, DB 셀렉트를 어떻게 인덱스를 태워 성능을 개선할 것이냐
동시 접속자가 엄청나게 많은 사이트라면 객체 생성 및 포문을 어떻게 쓸것인지 이러한 성능 개선을 생각해볼 필요가 있다.
동시 접속자가 엄청나게 많은 사이트라면 객체 생성 및 포문을 어떻게 쓸것인지 이러한 성능 개선을 생각해볼 필요가 있다.
package collection;
public class Employee {
private int empNo; //사원번호
private String name ; //사원명
private int salary; //월급
private String dept ; //부서명
private String position ;//직위
//기본 생성자
public Employee(){}
//매개변수 5개짜리 생성자
public Employee( int empNo, String name, int salary, String dept,
String position) {
super();
this. empNo = empNo;
this. name = name;
this. salary = salary;
this. dept = dept;
this. position = position;
}
public int getEmpNo() {
return empNo;
}
public void setEmpNo( int empNo) {
this. empNo = empNo;
}
public String getName() {
return name;
}
public void setName(String name ) {
this. name = name;
}
public int getSalary() {
return salary;
}
public void setSalary( int salary) {
this. salary = salary;
}
public String getDept() {
return dept;
}
public void setDept(String dept ) {
this. dept = dept;
}
public String getPosition() {
return position;
}
public void setPosition(String position ) {
this. position = position;
}
//tostring 재정의
@Override
public String toString() {
return "Employee [empNo=" + empNo + ", name=" + name + ", salary="
+ salary + ", dept=" + dept + ", position=" + position + "]";
}
}
package collection;
import java.util.HashSet;
public class EmployeeDemo {
public static void main(String[] args){
//직원정보를 여러개 담을래
HashSet<Employee> employee = new HashSet<Employee>();
Employee e1 = new Employee(1, "길동" , 800, "총무부" , "차장" );
Employee e2 = new Employee(3, "순신" , 300, "전산부" , "대리" );
Employee e3 = new Employee(6, "유신" , 200, "전산부" , "사원" );
Employee e4 = new Employee(8, "감천" , 300, "전산부" , "사원" );
Employee e5 = new Employee(8, "감천" , 300, " " , "사원" );
employee.add( e1);
employee.add( e2);
employee.add( e3);
employee.add( e4);
//전산부에서 월급 300이상 받는사람
HashSet<Employee> temp = new HashSet<Employee>();
for(Employee e : employee){
//비교할값을 앞에넣고 비교할 조건을 뒤에 넣는다. null포인터 익센셥에러가 날수있다.
if( "전산부" .equals(e .getDept()) && e.getSalary() >= 300){
temp.add( e);
}
}
for(Employee e : temp){
System. out.println( e);
}
}
}
package work;
public abstract class Device {
// Device 클래스를 정의하세요
// 번호, 상품명, 가격, 수량
// getter/setter, toString() 재정의
// OrderManager 클래스를 정의 하세요.
private int num;
private String productname;
private int price;
private int quantity;
public Device(){}
public Device( int num, String productname, int price, int quantity){
this. num = num;
this. productname = productname;
this. price = price;
this. quantity = quantity;
}
public int getNum() {
return num;
}
public void setNum( int num) {
this. num = num;
}
public String getProductname() {
return productname;
}
public void setProductname(String productname) {
this. productname = productname;
}
public int getPrice() {
return price;
}
public void setPrice( int price) {
this. price = price;
}
public int getQuantity() {
return quantity;
}
public void setQuantity( int quantity) {
this. quantity = quantity;
}
@Override
public String toString() {
return "Device [num=" + num + ", productname=" + productname
+ ", price=" + price + ", quantity=" + quantity + "]";
}
}
package collection.set;
import java.util.ArrayList;
public class ListDemo {
public static void main(String[] args){
ArrayList<String> names = new ArrayList<String>();
names.add( "홍길동" );
names.add( "김유신" );
names.add( "강감찬" );
names.add( "이순신" );
names.add( "홍길동" );
names.add( "권률" );
//저장된 데이타의 갯수 조회
int cnt = names.size();
System. out.println( "갯수는" + cnt );
System. out.println( names);
//지정된 번지 삭제
System. out.println( names.remove(3));
//지정된 위치의 데이터 꺼내기
System. out.println( names.get(2));
for(String n : names){
System. out.println( n);
}
/*결과______________________
* 갯수는6
[홍길동, 김유신, 강감찬, 이순신, 홍길동, 권률]
이순신
강감찬
홍길동
김유신
강감찬
홍길동
권률
*/
}
}
package collection.set;
import java.util.Stack;
import java.util.Vector;
public class VectorDemo {
public static void main(String[] args){
//백터
Vector<Integer> numbers = new Vector<Integer>();
numbers.add(23);
numbers.addElement(43);
numbers.add(34);
int size = numbers.size();
int capacity = numbers.capacity();
System. out.println( "데이타갯수:" + size );
System. out.println( "용량:" + capacity );
System. out.println( numbers);
System. out.println( "______________________" );
//스택
Stack<String> s = new Stack<String>();
s.push( "홍길동" );//하나씩 밀어넣는다.
s.push( "김유신" );
s.push( "강감찬" );
System. out.println( s.pop()); //하나씩 꺼낸다.
System. out.println( s.pop());
System. out.println( s.pop());
System. out.println( s);
/*결과_____________________
* 데이타갯수:3
용량:10
[23, 43, 34]
______________________
강감찬
김유신
홍길동
[]
*/
}
}
package collection.set;
import java.util.HashSet;
public class SetDemo {
public static void main(String[] args){
//set은 중복을 허용하지 않는다.
HashSet<String> s = new HashSet<String>();
//HashSet에 데이터 저장하기 집합의 특징을 가지고 있음
s.add( "이순신" );
s.add( "김유신" );
s.add( "강감찬" );
s.add( "홍길동" );
s.add( "홍길동" );//갯수가 5개가 되지 않는다. 같은것은 들어가지 않음
//hashset에 저장된 데이타의 갯수 알아내기 hashset은 인덱스가 없다.
int size = s.size();
System. out.println( size);
//포함하고 있는지
System. out.println( "강감찬을 포함하고 있는지" + s.contains( "강감찬" ));
//똑같은게 안들어가게 하려면 hash코드를 사용함
for(String name : s){
System. out.println( name);
}
//있는지 없는지 체크
System. out.println( s.isEmpty());
//결과_______________________
// 4
// 강감찬을 포함하고 있는지true
// 홍길동
// 김유신
// 강감찬
// 이순신
// false
}
}
package collection.set;
import java.util.HashMap;
public class MapDemo {
public static void main(String[] args){
//키는 인티져 값은 스트링
HashMap<Integer, String> map = new HashMap<Integer, String>();
//HashMap() 값 저장하기 put(key값, value값)
map.put(23, "홍길동" );
map.put(34, "김유신" );
map.put(54, "이순신" );
//HashMap에서 key 값에 해당하는 값 꺼내기
String value1 = map.get(23);
String value2 = map.get(54);
String value3 = map.get(67);
System. out.println( value1);
System. out.println( value2);
System. out.println( value3);
System. out.println( "___________________" );
//이름을 붙여서 담아놓고 꺼낼수 있기 때문에 arraylist hashlist -> 순서대로 들어있음 반복 돌면서 id가 이런거 부서가 이런거 등 정보를 찾아야 하는데
//이놈은 값을 담을때 이름표를 담아놨기 때문에 이름을 찾으면 나온다. 이름표를 붙여서 붙이는대신 이름을 외우고 알고 있어야 함. 오타의 위험이 존재함.
HashMap<String, Contact> contacts = new HashMap<String, Contact>();
}
}
1. 클래스와 객체가 무엇인지
클래스 : 객체를 정의한 것으로 클래스에는 객체의 모든 속성과 기능이 정의 되어 있다.
객체 : 클래스로부터 객체를 생성하면 클래스에 정의된 속성과 기능을 가진 객체가 만들어 진다.
2. 객체를 사용하는 이유
재사용과 확장성을 위해서
기능이 수정 되거나 기능이 추가가 되면 매번 새로 기능을 만들어야 하지만
있던 기능을 확장하여 사용하기 위해서이다.
3. 클래스의 구성요소인 속성과 기능이 무엇인지
속성은 값을 담으려고 만들었으며 기능은 그값을 조작하여 기능을 만드는것
4. 메소드 중복정의와 메소드 재정의 차이점
중복정의 같은 클래스내의 매개변수를 다르게 하기위하여
메소드 재정의는 기능을 추가하거나 마음이 안들어 바꾸고 싶을때
5. 상속을 사용하는 이유
상속을 받게 되면 기존의 공통된 기능을 바로 사용할수 있고 추가적으로 공통 기능외에 기능은 정의하여 추가 기능을 편하게 쓸수 있다.
6. 클래스의 형변환
타입 변환시 객체를 바라보는 위치가 상속관계에 있으면서 부모와 자식 간의 클래스에서 타입이 더작은 단위의 상속 및 낮은 위치의 타입이라면 강제 형변환을 해주어야 형변환이 가능하다.
7. "매서드 재정의"를 사용하는 이유
기존에 부모요소에 정의된 매서드 기능이 정책에 의해서 기능이 변경이 될경우는 자식 요소에서 메서드 재정의를 통하여 새롭게 기능을 추가하거나 변경이 되기 때문에 새로 정의할 필요가 없다.
8. 추상화와 인터페이스를 사용하는 이유
추상화를 사용하게 되면 반드시 자식에서 구현해줘야함
자주사용하는 기능을 정의하여 추가되는 기능들을 확장 할때 유용하기 때문이다.
인터페이스는 다중 상속을 지원하나 추상 클래스는 단일 상속만가능하다
추상 클래스에서는 메소드의 부분적인 구현이 가능하지만 인터페이스에서는 오직 메소드 선언만 있을수 있다.
9. 생성자의 역할
객체가 생성이 될때 변수를 담기위해 사용 하는것
10. this와 super
this 매개변수와 객체 자신이 가지고 있는 변수 이름을 구분하기 위해사용
super 자식 클래스에서 부모의 클래스의 변수와 메소드를 접근하기 위해 사용
Student클래스를 정의하세요
- 속성 : 학번, 학과, 이름, 국어, 영어, 수학, 총점
- 기능 : getter/setter, toString()
기본 생성자, [학번,학과,이름,국어,영어,수학] 초기화 하는 생성자
총점을 계산하는 생성자
학생정보를 출력 하는 기능
package student;
public class Student implements Comparable<Student> {
private String studentid;
private String lesson;
private String name;
private int language;
private int english;
private int meth;
private int total;
/*Student클래스를 정의하세요
- 속성 : 학번, 학과, 이름, 국어, 영어, 수학, 총점
- 기능 : getter/setter, toString()
기본 생성자, [학번,학과,이름,국어,영어,수학] 초기화 하는 생성자
총점을 계산하는 생성자
학생정보를 출력 하는 기능
*/
public Student(String studentid, String lesson, String name, int language,
int english, int meth) {
super();
this. studentid = studentid;
this. lesson = lesson;
this. name = name;
this. language = language;
this. english = english;
this. meth = meth;
this. total = language + english + meth;
}
public String getStudentid() {
return studentid;
}
public void setStudentid(String studentid) {
this. studentid = studentid;
}
public String getLesson() {
return lesson;
}
public void setLesson(String lesson) {
this. lesson = lesson;
}
public String getName() {
return name;
}
public void setName(String name) {
this. name = name;
}
public int getLanguage() {
return language;
}
public void setLanguage( int language) {
this. language = language;
}
public int getEnglish() {
return english;
}
public void setEnglish( int english) {
this. english = english;
}
public int getMeth() {
return meth;
}
public void setMeth( int meth) {
this. meth = meth;
}
public int getTotal() {
return total;
}
public void setTotal( int total) {
this. total = total;
}
@Override
public String toString() {
return "Student [studentid=" + studentid + ", lesson=" + lesson
+ ", name=" + name + ", language=" + language + ", english="
+ english + ", meth=" + meth + ", total=" + total + "]";
}
public void StudentInformation(){
System. out.println( "성적정보_________" );
System. out.print( "이름 : " + name );
System. out.print( "\n국어 : " + language );
System. out.print( "\n영어 : " + english );
System. out.print( "\n수학 : " + meth );
System. out.print( "\n총점 : " + total );
System. out.print( "\n평균 : " + total / 4);
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
return ( this. total - o. total);
//return ( o.total - this.total);
}
}
StudentDemo클래스를 정의하세요
- 학생정보 저장하기 위한 ArrayList 만들기
- 학생정보 10명 저장하기
- 특정학과의 학생 성적 정보를 출력하기
- 성적별로 정렬된 학생정보 출력하기
<-- Collection.sort(리스트)를 활용하면 됩니다.
<-- Student 클래스가 Comparable 인터페이스의 compareTo()를 구현하도록 하세요 예제가 있었음.
package student;
import java.util.ArrayList;
import java.util.Collections;
public class StudentDemo {
public static void main(String[] args){
ArrayList<Student> student = new ArrayList<Student>();
student.add( new Student( "1111111111" , "컴퓨터 공학" , "아이유" , 88, 96, 65));
student.add( new Student( "2222222222" , "패션 공학" , "AOA" , 77, 86, 55));
student.add( new Student( "3333333333" , "핸드폰" , "달샤벳" , 66, 76, 45));
student.add( new Student( "4444444444" , "그래픽 디자인" , "김예원", 55, 66, 35));
student.add( new Student( "5555555555" , "탤런트" , "A핑크" , 44, 56, 25));
student.add( new Student( "6666666666" , "모델" , "소녀시대" , 33, 46, 15));
student.add( new Student( "7777777777" , "탤런트" , "투애니원" , 22, 36, 5));
student.add( new Student( "8888888888" , "연예" , "씨스타" , 22, 44, 6));
student.add( new Student( "9999999999" , "탤런트" , "티아라" , 11, 55, 65));
student.add( new Student( "0000000000" , "경영" , "미스에이" , 12, 45, 95));
for(Student s : student){
System. out.println( s); //정렬전
if( "탤런트" .equals(s .getLesson())){
s.StudentInformation(); //탤런트 과에 대한 아이들의 성적을 출력함
}
}
Collections. sort( student); //정렬후 객체안의 값을 정렬 하려면 compareTo인터페이스를 재정의해야함
System. out.println( "____________________" );
for(Student s : student){
System. out.println( s); //정렬전
}
}
/*
StudentDemo클래스를 정의하세요
- 학생정보 저장하기 위한 ArrayList 만들기
- 학생정보 10명 저장하기
- 특정학과의 학생 성적 정보를 출력하기
- 성적별로 정렬된 학생정보 출력하기
<-- Collection.sort(리스트)를 활용하면 됩니다.
<-- Student 클래스가 Comparable 인터페이스의 compareTo()를 구현하도록 하세요 예제가 있었음.
*/
//출력결과______________________
// Student [ studentid=1111111111, lesson=컴퓨터 공학, name=아이유, language=88, english=96, meth=65, total=249]
// Student [ studentid=2222222222, lesson=패션 공학, name=AOA, language=77, english=86, meth=55, total=218]
// Student [ studentid=3333333333, lesson=핸드폰, name=달샤벳, language=66, english=76, meth=45, total=187]
// Student [ studentid=4444444444, lesson=그래픽 디자인, name=김예원, language=55, english=66, meth=35, total=156]
// Student [ studentid=5555555555, lesson=탤런트, name=A핑크, language=44, english=56, meth=25, total=125]
// 성적정보_________
// 이름 : A핑크
// 국어 : 44
// 영어 : 56
// 수학 : 25
// 총점 : 125Student [ studentid=6666666666, lesson=모델, name=소녀시대, language=33, english=46, meth=15, total=94]
// Student [ studentid=7777777777, lesson=탤런트, name=투애니원, language=22, english=36, meth=5, total=63]
// 성적정보_________
// 이름 : 투애니원
// 국어 : 22
// 영어 : 36
// 수학 : 5
// 총점 : 63Student [ studentid=8888888888, lesson=연예, name=씨스타, language=22, english=44, meth=6, total=72]
// Student [ studentid=9999999999, lesson=탤런트, name=티아라, language=11, english=55, meth=65, total=131]
// 성적정보_________
// 이름 : 티아라
// 국어 : 11
// 영어 : 55
// 수학 : 65
// 총점 : 131Student [ studentid=0000000000, lesson=경영, name=미스에이, language=12, english=45, meth=95, total=152]
// ____________________
// Student [ studentid=7777777777, lesson=탤런트, name=투애니원, language=22, english=36, meth=5, total=63]
// Student [ studentid=8888888888, lesson=연예, name=씨스타, language=22, english=44, meth=6, total=72]
// Student [ studentid=6666666666, lesson=모델, name=소녀시대, language=33, english=46, meth=15, total=94]
// Student [ studentid=5555555555, lesson=탤런트, name=A핑크, language=44, english=56, meth=25, total=125]
// Student [ studentid=9999999999, lesson=탤런트, name=티아라, language=11, english=55, meth=65, total=131]
// Student [ studentid=0000000000, lesson=경영, name=미스에이, language=12, english=45, meth=95, total=152]
// Student [ studentid=4444444444, lesson=그래픽 디자인, name=김예원, language=55, english=66, meth=35, total=156]
// Student [ studentid=3333333333, lesson=핸드폰, name=달샤벳, language=66, english=76, meth=45, total=187]
// Student [ studentid=2222222222, lesson=패션 공학, name=AOA, language=77, english=86, meth=55, total=218]
// Student [ studentid=1111111111, lesson=컴퓨터 공학, name=아이유, language=88, english=96, meth=65, total=249]
}
-
반응형