공부/Java
Java ClassMethod
726582776982
2022. 4. 22. 11:07
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
package j04_array;
import java.util.*;
public class Ex04_Lottos02 {
public static void main(String[] args) {
// 1) 배열 생성 : lotto
int[] lotto = new int[6];
// 2) Random으로 배열 초기화
Random rn = new Random();
for (int i=0; i<lotto.length; i++) {
// random number추출 & 배열에 담기
lotto[i]=rn.nextInt(45)+1; // 정수/45 -> 나머지값의 범위 0 ~ 44
System.out.println(""+lotto[i]);
// 3) 중복값 확인하기
for (int j=0; j<i; j++) {
if (lotto[i]==lotto[j]) {
--i; break;
} //if
} //for_j
} //for
// 4) 출력
System.out.println("** Lotto => "+Arrays.toString(lotto));
// 5) 오름차순 정렬 -> 최솟값 정렬 // 내립차순 정렬 -> 최댓값 정렬
// => 순차정렬 (Sequence Sort)
// => 정렬 알고리즘에서 가장 간단하고 기본이되는 알고리즘으로
// 배열의 처음과 끝을 탐색하면서 차순대로 정렬하는 가장 기초적인 정렬 알고리즘
// ** 정렬 알고리즘 : 삽입(insert)정렬, 합병(Merge)정렬, 퀵(Quick)정렬...
// => https://blog.naver.com/tepet/221690306235
int temp=0;
for(int i=0;i<lotto.length;i++) {
for(int j=i+1;j<lotto.length;j++) {
//if(lotto[i]>lotto[j] // ** 내림차순 => i보다 큰 j가 있으면 서로 맞바꾼다.
if(lotto[i]>lotto[j]) { // **오름차순 => i보다 작은 j가있으면 서로 맞바꾼다.
temp = lotto[i];
lotto[i] = lotto[j];
lotto[j] = temp;
}//if
}//for j
}//for i
System.out.println("** Lotto2 => "+Arrays.toString(lotto));
// 6) WrapperClass : Arrays
// => toString(), sort(), equals( , )// equals 안에 데이터값이 같은지를 비교
int[] myLotto = {13,7,5,2,19,34};
Arrays.sort(myLotto);
System.out.println("** my Lotto => "+Arrays.toString(myLotto));
if(Arrays.equals(lotto, myLotto))System.out.println("당첨!!!");
else System.out.println("다음기회에 ....");
}//main
}//class
|
cs |
저번 예제 포스팅 ++ 이다.
Class Method
//** 클래스, 객체, 인스턴스(instance : 사례, 경우)
//클래스와 인스턴스는 설계도와 제품이라고 할수있다.
//그럼 객체는 클래스일까 인스턴스일까?
//Java 프로그래밍에서는 설계도인 클래스가
//메모리상의 구체적인 실체인 인스턴스가 되었을때 객체라고 부른다.
//보통은 구체적인 코드상에서 나타는 객체를 인스턴스라고 부르고,
//로직을 설계할때 나타나는 인스턴스를 객체라고 부른다.
//그러므로 클래스와 인스턴스는 구별되고, 클래스와 객체도 구별되지만,
//객체와 인스턴스는 구분없이 포괄적으로 객체라는 말을 쓰기도 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public class Ex01_Car {
// ** 맴버변수, 필드(field) : 속성
// => 클래스의 전역변수
// 클래스내에서는 모든 메서드에서 사용가능
public int speed=100; //속도
public int mileage=120; //주행거리
public String color="white"; //색상
//color="Yellow"; // 실행문 -> 메서드 내부에만 작성가능
// ** 맴버메서드 (function, procedure)
// => 동작 또는 기능을 구현
public void speedUp() {
// ** 지역변수
// => 메서드내부에서만 사용가능
// => 전역변수와 동일명 가능 (내부에서는 지역변수 우선)
int price = 3000;
String color = "Blue" ;
System.out.println("** speedUp: price="+price+" color="+color);
speed+=100;
mileage+=10;
}
public void speedDown() {
speed-=100;
}
// String (return Type) : 문자열을 반환(return) -> 메서드 처리 결과로 문자열을 제공
// toString (메서드명) : 객5체의 속성(맴버필드,맴버변수) 의 값을 문장열로 제공하는 역할에 주로 사용됨
public String toString() {
return "[ 속도:"+speed+" 주행거리:"+mileage+" 색상:"+color+" ]";
}
} //class
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
public class Ex01_CarUser {
public static void main(String[] args) {
// ** 객체 생명주기
// => 생성 -> 사용 -> 소멸
// => 생성: 인스턴스화 한다 또는 인스턴스를 생성한다 라고함
Ex01_Car myCar = new Ex01_Car(); // 객체의 인스턴스화
Ex01_Car yourCar = new Ex01_Car(); // 객체의 인스턴스화 = 생성자
myCar.speed = 130;
myCar.mileage = 100;
myCar.color ="violet";
myCar.speedUp();
myCar.speedDown();
System.out.println("** myCar => "+myCar.toString());
System.out.println("** toString 의 장점 =>"+myCar);
// =>출력문에서 인스턴스명만 사용했을때 자동호출됨
// => toString 메서드를 정의하지 않으면 인스턴스의 주소값을 제공함
// => 인스턴스도 참조형 변수다.
Ex01_Car fCar = myCar;
// => myCar와 동일한 주소를 가짐
System.out.println("**fCar=> "+fCar);
// ** 소멸 : 메모리청소
// => 더이상 사용되지않는 값들은 자동제거해줌
// => Garbage Collector (쓰레기수집기)
// => 정해진 알고리즘에 의해 작동됨 ( 일정시간동안 더이상 참조되지않는등등... )
// => 참조형 변수에 null 값을 주면 소멸(더이상 참조되지않음)
// => 더이상 사용되지않는 값들은 자동제거해줌
// => Garbage Collector (쓰레기수집기)
// => 정해진 알고리즘에 의해 작동됨 ( 일정시간동안 참조되지않음 )
북마크 참조.
myCar = null; // null -> 값 없음
//myCar.color="pink";// 컴파일 오류는 없으나.
System.out.println("**fCar2=> "+fCar);
//java.lang.NullPointerException: Cannot assign field "color" because "myCar" is null
//런타임 오류 발생
yourCar.speed = 10;
yourCar.mileage = 120;
yourCar.color = "while";
yourCar.speedDown();
System.out.println("** yourCar => "+yourCar.toString());
}
}
|
cs |
//** 맴버 메서드 (method) : 함수(Function), 프로시져(Procedure)
//1) 정의 , 실행
//2) return 값
//=> return 이 있으면 Type 을 지정, 없으면 무조건 void
//=> 메서드 실행결과 return Type에 해당하는 결과값을 제공
//=> return 명령어를 void 메서드 에서 사용하면 메서드 종료
//3) 매개변수 전달 방법
//=> 매개변수(Argument, 인자), Parameter
//=> 메서드의 지역변수이며, 모든 타입 가능
//=> 매개변수의 값 전달방법
//CallByValue (기본자료형, String -> 매개변수의 값 전달)
//CallByReference (참조자료형: 배열,인스턴스 -> 주소전달)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
import java.util.*;
public class Ex02_Method {
//1. 종류별 메소드 정의
//2. return 값 테스트
// => return 값 활용 (main 에서 Test)
int price = 5000; // 전역(멤버)변수
//1) 매개변수, return 값 없음
public void juiceCafe() {
System.out.println("무슨 쥬스를 원하시나요 ? ");
}
//2) 매개변수는 있고, return 값 없음
//=> 매개변수는 지역변수와 동일하다.
public void juiceCafe2(String s,int n) {
//s = "홍길동";
//n = 100;
if((n<5)||(s.contains("불량"))) {
System.out.println("주문오류입니다. \n");
return ;
}
//CallbyValue Test
s = "사과";
System.out.printf("** %s 쥬스는 %d잔 이상 주문 \n",s,n);
}
//3) 매개변수는 없고, return 값 있음
public String juiceCafe3() {
return "쥬스 1잔은" + price + " 원 입니다.";
}
//4) 매개변수도 있고, return 값도 있음.
public int juiceCafe4(int n, String s) {
System.out.printf("** %s 쥬스 %d잔 주문 \n",s,n);
return n*price;
}
//5) 매개변수도 있고, return 값도 있는
// 참조 자료형Test
public int carTest(Ex01_Car car,int speed) {
System.out.println("** car => "+car);
System.out.println("** car_color => "+car.color);
System.out.println("** car_mileage => "+car.mileage);
car.color = "Pink";
return speed+car.speed;
}
public static void main(String[] args) {
// ** 메소드 호출(Call)
// => 같은 클래스에서도 메소드에 접근하기 위해서는 인스턴스가 필요하다.
Ex02_Method cafe = new Ex02_Method();
Scanner sc = new Scanner(System.in);
//String kind = "오렌지";
Ex01_Car mycar = new Ex01_Car();
System.out.println("** before color => "+mycar.color);//참조자료형 Test
System.out.println("** call carTest => "+cafe.carTest(mycar, 50));//참조자료형 Test //인스턴스를 넣어도 가능
System.out.println("** After color => "+mycar.color);//참조자료형 Test
// ** 매개변수 생성 비교
// => 매개변수 위치에서 바로 생성해도 됨
// => Car 를 일회성 매개변수로만 사용하는 경우 적당
System.out.println("");
System.out.println("** Call carTest2 => "+cafe.carTest(new Ex01_Car(), 100)); // 해당 클래스를 객체화해도 가능하다.
cafe.juiceCafe();
String juices = sc.nextLine();
System.out.printf("몇잔을 주문하시나요 ? ");
int juices1 = sc.nextInt();
cafe.juiceCafe2(juices, juices1);
System.out.println("juiceCafe3 => "+cafe.juiceCafe3());
System.out.println(cafe.juiceCafe4(juices1, juices)+"원");
sc.close();
} // main
} // class
|
cs |