cf) Edit Plus에서 사용자 도구 > 기본설정 > 사용자도구> run의 동작을 없음 or 캡처로 바꾸기
(1) 참조DT을 저장하는 배열의 사용.
a. 선언
형식) 접근제어자 참DT[ ] 배열명; or 접근제어자 참DT 배열명[ ];
ex)
public String name[ ];
public Car car[ ];
private TV tv[ ];
b. 생성
형식) 배열명 = new 참DT[크기];
ex)
name = new String[3];
car = new Car[5];
tv = new TV[3];
>>>>>> a, b를 동시에..
접근제어자 참DT 배열명[] = new 참DT[크기];
ex)
public String name[ ] = new String[3];
public Car car[ ] = new Car[5];
private TV tv[ ] = new TV[3];
**c. 사용 : 주소값이 할당 (객체가 저장되는 것이 X) //
기본데이터 타입 배열은 생성자를 만들 필요가 없었다(바로 사용),
but, 참조형 데이터 타입 배열은 객체를 생성해줘야 함!!!
형식)
배열명[index] = new ClassName();
ex)
name[0] = new String();
or
name[0] = "홍길동"; -----> String만 이렇게 가능!!
car[0] = new Car("쏘나타");
tv[0] = new TV();
>>>>>> a, b, c를 동시에.. (값이 정해져 있을 때 - 주로 String 클래스에서 사용)
ex)
public String name[] = {"a","b","c"};
public class Car {
String carName;
private int speed;
public Car(String carName) {
this.carName = carName;
}
public int changeSpeed(int speed){
this.speed = speed;
return this.speed; //이게 리턴하는 값만 가지고 사용할 수 있도록 private으로 잡기
}
}
public class CarArray {
public static void main(String[] args) {
Car c1 = new Car("쏘나타"); //자동차를 만든 것
System.out.println("c1의 이름 : " + c1.carName);
Car car[] = new Car[3];//배열 생성 - 자동차를 만든 것이 아니라 3칸짜리 공간만 만든 것
//car[0] = c1; //c1이 주소값이니까 쏘나타 출력
car[0] = new Car("쏘나타");
car[1] = new Car("코란도");
car[2] = new Car("제네시스");
System.out.println("car[0]의 이름 : " + car[0].carName); //NullPointerException error > 무조건 . 앞에가 null일 때 발생
System.out.println("car[1]의 이름 : " + car[1].carName);
System.out.println("car[2]의 이름 : " + car[2].carName);
System.out.println("---------------------------------");
//쏘나타, K5, 제네시스, 테슬라, 마이바흐, 롤스로이스...
String name[] = {"쏘나타", "K5", "제네시스", "테슬라", "롤스로이스"}; //추가되거나 삭제되더라도 가능한 프로그램 만들기
Car mycar[] = new Car[name.length]; //새로운 빈 공간을 만든다.
for (int i=0;i<mycar.length ;i++ ){
mycar[i] = new Car(name[i]); // 차를 하나씩 집어넣기
System.out.println(mycar[i].carName);
}
}
}
---------- run ----------
c1의 이름 : 쏘나타
car[0]의 이름 : 쏘나타
car[1]의 이름 : 코란도
car[2]의 이름 : 제네시스
---------------------------------
쏘나타
K5
제네시스
테슬라
롤스로이스
public class ArrayTest5 {
public static void main(String[] args) {
int[] x = new int[5];
x[0] = 1;
x[1] = 2;
x[2] = 4;
x[3] = 5;
for (int i=0;i<5 ;i++ ){
System.out.println(x[i]);
}
//실수로 빼먹은 3을 x[2]에 삽입.
int idx = 2;
for (int i=x.length-1;i>idx ;i-- ){ //for문 역순, 먼저, x[2], x[3]에 있는 것을 뒤로 미룬 후 대입
x[i] = x[i-1];
}
x[idx] = 3;
System.out.println("삽입후-------------");
for (int i=0;i<5 ;i++ ){
System.out.println(x[i]);
}
}
}
---------- run ----------
1
2
4
5
0
삽입후-------------
1
2
3
4
5
import java.io.*;
public class ArrayTest6 {
private BufferedReader in;
public ArrayTest6() { //프로그램이 시작하자마자 실행
in = new BufferedReader(new InputStreamReader(System.in));
}
private String read() {
String msg = "";
try{
msg = in.readLine();
}catch (Exception e){
e.printStackTrace();
}
return msg;
}
public static void main(String[] args) {
ArrayTest6 a = new ArrayTest6();
int c = 2; //입력횟수
int n = 20;
int cnt = 0;
int[] x = new int[c];
for (int i=0;i<c;i++ ){
x[i] = Integer.parseInt(a.read()); //read로 적은 것은 int로 변환 (4,6입력하기)
}
boolean b[] = new boolean[n+1]; //
for (int i=0;i<c;i++){
for (int k=x[i];k<n+1 ;k+=x[i] ){//4의배수, 6의배수 자체를 true로 만듦
b[k] = true;
}
}
for (int i=0;i<n+1 ;i++ ){
if (b[i]){
cnt++;
}
}
System.out.println(cnt);//7 (겹치는 12는 한 번만 카운팅)
}
}
'Language > Java' 카테고리의 다른 글
19.11.07.(API - String / 기본형 vs Object 객체형 데이터타입) (0) | 2021.02.14 |
---|---|
19.11.06.(API-Java.lang/Wrapper Class/기본DT->String, String->기본DT 변환/ autoboxing / unboxing/ boxing) (0) | 2021.02.14 |
19.11.04.(알고리즘 문제 / 숫자 야구 게임 소스) (0) | 2021.02.14 |
19.11.03. (package/import문/cmd javac/Organize Imports) (0) | 2021.02.14 |
19.11.02. (열거 타입/열거 상수/싱글톤(Singleton)) (0) | 2021.02.14 |