2023. 12. 5. 22:06ㆍDaily Codig Reminder
배열복사
int []xxx =Arrays.copyOf(num2, num2.length);
for (int i : xxx){
sysout(i);
}
int [] xxx2 = Arrays.copyOf(num2,3);
for (int i : xxx2) {
sysout(">>>"+i);
}
클래스
중요★ ★ ★ ★ ★
지정자 class 정의
[인스턴스 변수정의]
[메소드 정의]
[생성자 정의]
현실 세계의 학생 개체에서 뽑은 학생클래스
public class Student {
1. 멤버 변수, 인스턴스 변수
1) 선언위치 : 함수 안이 아닌 클래스 블럭
2) 반드시 클래스 new 객체 생성 후 사용
3) 객체 생성시 각 타입으로 자동 초기화
int => 0, 실수 => 0.0, char => 공백, boolean=> false ,참조변수 => null
4) 변수의 사용은 new 에 사용한 참조변수 , 멤버변수 명으로 사용
public String name; // 어느 패키지 에서나 자유롭게 변수 사용가능
public int age;
public String adress;
public class TestStudent {
public static void main(String [] args){
//클래스명 변수명 = new 클래스명 ();
//1. 클래스 객체 생성
Student stu = new Student();
System.out.println(stu);
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.address);
//2. 참조변수를 이용한 멤버변수 저장
stu.name="홍길동";
stu.age=20;
stu.address="서울";
System.out.println(stu);
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.address); //학생 1번 객체 저장완료
Student stu2 = new Student();
stu2.name="이순신";
stu2.age=44;
stu2.address="전라";
System.out.println(stu2);
System.out.println(stu2.name);
System.out.println(stu2.age);
System.out.println(stu2.address); //학생 1번 객체 저장완료
Student stu3 = new Student();
stu3.name="유관순";
stu3.age=19;
stu3.address="경기";
System.out.println(stu3);
System.out.println(stu3.name);
System.out.println(stu3.age);
System.out.println(stu3.address);
stu=stu3;
System.out.println(stu);
System.out.println(stu.name);
System.out.println(stu.age);
System.out.println(stu.address); } }
//객체 생성시 멤버 변수 초기값 설정
String name="설정안됨";
String address="주소설정안됨";
int age =1;
4.3 생성자 (constructor)
//생성자 (constructor) 영역- 객체 생성시 멤버변수의 초기화 및 설정시 사용
/함수영역, 메소드 영역
sysout("기본생성자호출");
this.name="기본 생성자에서 설정한 name";
this.address="기본 생성자에서 설정한 address";
this.age=1;
-> 여기서 설정하나 위에서 설정하나 상관없음 대신에 설정안하면 초기값으로 돌아감.
String name= "미정";
int age= 1;
public Student 2(){
sysout("기본 생성자 호출");
int age= 10;
name ="미정";
this.age =1; //멤버변수 사용
}
private name =" 미정";// 깉은 클래스 안에서만 사용 가능
public class Student {
String name;
int age;
String address;
public Student(){
sysout("기본 생성자 호출");
}// 기본생성자
//1. 동일 이름의 생성자 에러
//2. 오버로딩 : 동일 이름의 생성자에 매개변수를 다르게 선언하여 구분함 . 에러아님
public Student (String name, int age, String address){
}}
public class Student {
//이름, 나이 생성시 총해 설정 , 주소는 "서울"로 설정
String name;
int age;
String address="서울";
public Student (String name, int age, String address){
sysout ("3개짜리 생성자 호출");
this.name= name;
this.age=10;
this.address=address;
}
public Student (String name) {
System.out.println("1개짜리 생성자 호출");
this.name=name;
this.age=10;
//this.address="서울";
} public Student(String name ,int age) { → age name 순서 바꿔도 ㄱㅊ
System.out.println("2개짜리 생성자 호출");
this.name=name;
this.age=age;
//this.address="서울";
} public Student () {
System.out.println("기본생성자 호출"); } }
public class TestStudent {
public static void main (String[]args){
Student stu = new Student();
sysout(stu.name+"\t"+stu.age+ "\t"+stu.address);
Student stu1= new Student("홍길동");// 기본생성자 호출
System.out.println(stu1.name+"\t"+stu1.age+"\t"+stu1.address) ;
Student stu2= new Student("홍길동1", 20);// 기본생성자 호출 System.out.println(stu2.name+"\t"+stu2.age+"\t"+stu2.address);}}
→
기본생성자 호출
null 0 서울 1
개짜리 생성자 호출
홍길동 10 서울
2개짜리 생성자 호출
홍길동1 20 서울
메소드
[지정자] 리턴타입 메서드명 ([파라미터]){
//메서드가 처리하는 실행문
[return 결과값],
}
public class Student{String name;int age;String address;public Student(){sysout("기본생성자호출");}
//함수영역//new 객체생성 후 참조변수 함수이름으로 호출 사용//호출 함수 종료 후 호출한 곳으로 돌아가 나머지가 수행됨//접근 제한자 리턴타입 (리턴이 없을 경우 void) 함수명 (매개변수){}
//1.리턴없고 매개변수 없음 => 단수 호출public vooid test1(){sysout("test1 호출됨");}
//2. 리턴 없고, 매개변수 있는경우public void test2(int a){
sysout("test2 a="+a);
//3. 리컨없고 매개변수 여러개인 경우public void test3(int a, int b, String symbol){// +,- 판단 후 연산결과 출력String mesg="";if(symbol.equals("+"))mesg="test3 a+b="+(a+b);
else if (symbol.equals("-")) {
mesg="test3 a+b="+(a+b);
} else mesg="다른 연산자를 적어주세요.";
System.out.println(mesg); //test3에서 출력 } } }
public class Test {
public static void main(String[] args) {
// 객체 생성
System.out.println("main시작");
Student stu = new Student();
stu.test1();
stu.test2(10);
System.out.println("main종료"); } }
//4. 리턴값(리턴타입과 일치시켜야 함) 이 있고 매개변수 없음
public int test4(){
int data =100;
sysout("test4 호출");
return data; //호출 곳으로 리턴 = 리턴타임과 일치해야 됨.
//sysout("test4 호출"); // 사용못함
}
public int test41() {
int data=100;
int data2=200;
System.out.println("test41 호출");
return data; //호출항 곳으로 리턴 = 리턴 타입과 일치해야 됨.
//System.out.println("test4 호출"); //사용못함 }
//4.1 public String test5() {
String data="hello";
System.out.println("test5 호출");
return data; }
//5. 리턴타입 있고 매개변수가 있는경우
public String test6 (int a, int b, String symbol){ {
String mesg="";
if (symbol.equals("+"))
mesg ="test2 a+b="+(a+b);
else if (symbol.equals("-")) {
mesg="test3 a+b="+(a+b);
} else
mesg="다른 연산자를 적어주세요.";
System.out.println(mesg);
return mesg; } }
//6. 리턴없고 매개변수가 객체인경우
public void test7 (Person p1) {
System.out.println("test7 호출");
System.out.println(p1.pname+"\t"+p1.pgender);
}
//8. 객체리턴, 매개변수가 없는경우
public Person test8() {
System.out.println("test 호출");
Person p = new Person("홍길동", "남");
return p; }
//9. public Person test9(String name, String gender) {
System.out.println("test9 호출");
Person p = new Person(name, gender);
return p;
} public Person test9() {
return null;
}
// public void test9() {
// // } -> 안됨.
//int receivedata = stu.test4();
//String receivedata2 = stu.test5();
//System.out.println("main안에서 "+ receivedata);
//System.out.println("main안에서 "+ receivedata2);
// String mesg= stu.test6(10,20,"+");
//7.
// Person p = new Person ("홍길동","남");
// stu.test7(p);
// //8.
// Person p1=stu.test8();
// System.out.println(p1.pname+"\t"+p1.pgender);
// System.out.println("main종료");
//9. test9
//메인에서 홍길동, "남"을 인자로 저장
//test9는 받은뎅터로 Person객체 생성후 리턴
//메인에서 Person 객체 정보 출력
Person p1=stu.test9("홍길동", "남");
System.out.println(p1.pname);
System.out.println("main종료"); }
public class Test {
public static void main(String[] args) {
Student s = new Student ("A", 10, "서울","1111");{
System.out.println(s);//주소
System.out.println(s.toString());
//참조변수 s == s.toString ()으로 자동코드가 생성됨. } } }
public void setAge(int age){
System.out.println("setage 호출");
if (age<120) this.age=age;
else System.out.println("잘못된 나이입니다.");
} → 이렇게 해서 나이를 150으로 결정하면 150으로 안나오고 원래 나이로 나옴.
public class Student {
//1. 멤버변수영역 → set get 각 하나씩해서 6개
String name;
int age;
String addr;
//2. 생성자영역 public Student(String name, int age, String addr) {
super();
this.name = name;
this.age = age;
this.addr = addr;
}
public Student() {
super();
// TODO Auto-generated constructor stub }
//3. 함수영억 public void setName(String name) {
System.out.println("setname 호출");
this.name=name;
}
public void setAge(int age){
System.out.println("setage 호출");
if (age<120) this.age=age;
else System.out.println("잘못된 나이입니다.");
} public void setAddr(String addr){
System.out.println("setaddr 호출");
this.addr=addr;
} //getXXX 영역
public String getName() {
System.out.println("getname 호출");
return this.name;
} public int getAge() {
System.out.println("getage 호출");
return this.age;
} public String getAddr() {
System.out.println("getaddr 호출");
return this.addr;
} @Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", addr=" + addr + "]";
} } Student s =new Student("A", 10, "서울");
System.out.println( s.getName()+"\t" +s.getAge()+"\t" +s.getAddr());
public class Student {
//1. 멤버변수 영역
private String name;
private int age;
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Student() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
public void setName(String name) {
System.out.println("setname 호출");
}
public void setAge(int age) {
System.out.println("setage 호출");
}
public String getName() {
System.out.println("getname 호출");
return this.name;
}
public int getAge() {
System.out.println("getage 호출");
return this.age;
}
}
public class Test {
public static void main(String[] args) {
Student s1 = new Student("홍길동", 10);
System.out.println(s1.getName() + "\t"+s1.getAge());
s1.setName("김길동");
System.out.println(s1);
Student s2 = new Student("이순신", 20);
System.out.println(s2);
s2.setAge(30);
System.out.println(s2.getName() +"\t"+ s2.getAge()); }}
'Daily Codig Reminder' 카테고리의 다른 글
static, 클래스들의 관계 (1) | 2023.12.06 |
---|---|
메소드 (1) | 2023.12.06 |
배열 (0) | 2023.12.04 |
문장 (1) | 2023.11.30 |
식별자와 데이터형, 연산자 (0) | 2023.11.29 |