오늘은 화요일 날씨가 아주 꿉꿉 습하고 덥다 하하하
파일 작성할 때 기본이지만 알아야되는 것들 정리해보면 !!
class Test {
public static void main(String{} args){
}
}
class Sample {
public static void main(String{} args){
}
}
위에 처럼 class 여러개 만드는거는 상관없음. main 메소드는 하나만 존재해야함.
Test.java
public class Test{
int a; // 필드(class 소속)
int b = 10;
int c;
c = 20; //error 밖에있는 필드는 선언만 가능
public static void main(String{} args){
int a; // 지역변수(main 소속)
}
}
class Sample{
}
main 메소드가 없으면 주가 되는 클래스 앞에는 public이 붙어야 함.
방을 하나만 잡으면 변수라고 하는데
변수는 메모리의 일정공간을 잡아달라는 말이다.
방을 만들 때 즉, 변수를 만들 때는 앞에 자료형이 무엇인지 적어줘야한다.
자료형 변수명
int a
여기서 방을 여러개 잡으면 그게 바로 배열이 되는 것이다.
배열에대해서 이제 자세히 들어가 보자 !
* 배열(Array)
- 자료형[ ] 배열명
- 자료형 배열명[ ]
위 두 개 중에 편한대로 쓰면 됨.
int a; int[3] ar; error
int[ ] ar;
ar = new int[3]; //new쓰면 데이터 들어오는게 아닌 주소가 들어옴.
방 3개를 잡고 방 3개 잡은 주소를 줌.
ar은 시작주소만 가지고있기 때문에 의미없음.
방번호를 줘야 안에 들어있는 데이터 알 수 있음.
배열은 연속적인 공간을 잡아준다고 보면 됨.
ar[0] = 25; //방 번호 필수
ar = 25; //error
String a = new String("apple") //new 연산자 썼으면 주소 갖고 들어옴.
* 배열 (개수가 정확함)
-> 연속적으로 잡음.
-> 크기 조정이 안됨.
int형 => 방 3개
4byte 4byte 4byte => 12byte
* Linked (짜투리 공간을 이용하는) (개수가 왔다갔다)
짜투리공간에 방 1개있으면 그 뒤에 주소 매달려있음 /
그 주소는 어디에 뭐가있더라 알려줌 / 내 뒤에 뭐가 있는지 (기차같은 느낌(?))
언제든지 크기 조정이 가능함.
4byte + 4byte(주소) / 4byte + 4byte(주소) / 4byte + 4byte(주소) => 24byte 씀
Collection
-> ArrayList
-> Map
Array01.java
package array;
import java.util.Arrays;
public class Array01 {
public static void main(String[] args) {
int[] ar; //배열 선언
ar = new int[5]; //배열 생성
//배열은 초기값 안줘도됨.
ar[0] = 25;
ar[1] = 36;
ar[2] = 42;
ar[3] = 17;
ar[4] = 95;
System.out.println("배열명 ar = " + ar); //[I@372f7a8d 클래스명@16진수 Integer(클래스)
System.out.println("배열 크기 = " + ar.length); //배열 크기
System.out.println();
for(int i=0; i<ar.length; i++) {
System.out.println("ar[" + i + "] = " + ar[i]);
}//for i
System.out.println();
System.out.println("거꾸로 출력");
for(int i=ar.length-1; i>=0; i--) {
System.out.println("ar[" + i + "] = " + ar[i]);
}
System.out.println();
System.out.println("홀수 데이터만 출력");
for(int i=0; i<ar.length; i++) {
if(ar[i] % 2 == 1) {
System.out.println("ar[" + i + "] = " + ar[i]);
}
}
System.out.println();
System.out.println("인덱스가 짝수인 것만 출력");
for(int i=0; i<ar.length; i++) {
if(i % 2 == 0) {
System.out.println("ar[" + i + "] = " + ar[i]);
}
}
System.out.println();
System.out.println("오름차순으로 정렬");
Arrays.sort(ar); //static 아니므로 new x
// void는 결과값이 없으므로 ?? = Arrays.sort(ar) x
for(int i=0; i<ar.length; i++) {
System.out.print(ar[i] + " ");
}
System.out.println("\n");
System.out.println("확장 for문");
for(int data : ar) { //ar.length를 안 써도 배열크기만큼 for문이 돈다. -> 데이터 전달함.
System.out.print(data + " ");
}
System.out.println();
}
}
배열명 ar = [I@372f7a8d
배열 크기 = 5
ar[0] = 25
ar[1] = 36
ar[2] = 42
ar[3] = 17
ar[4] = 95
거꾸로 출력
ar[4] = 95
ar[3] = 17
ar[2] = 42
ar[1] = 36
ar[0] = 25
홀수 데이터만 출력
ar[0] = 25
ar[3] = 17
ar[4] = 95
인덱스가 짝수인 것만 출력
ar[0] = 25
ar[2] = 42
ar[4] = 95
오름차순으로 정렬
17 25 36 42 95
확장 for문
17 25 36 42 95
배열 기본 실습들이니 기초부터 탄탄히 !
run configuration을 통해서 입력값 받은 상태
호랑이 기린 딸기 25 43.5
Array02.java
package array;
import java.util.Arrays;
public class Array02 {
public static void main(String[] args) {
for(int i=0; i<args.length; i++) { //배열의 크기에는 괄호없음(명령어)
System.out.println("args[" + i + "] = " + args[i]);
//문자열의 크기에는 괄호 o (함수)
System.out.println("문자열의 크기 = " + args[i].length());
// charAt 첫 번째 있는 글자들 뽑아옴.
System.out.println("첫 번째 문자 = " + args[i].charAt(0));
//★★★★★
System.out.println("마지막 문자 = " + args[i].charAt(args[i].length()-1));
System.out.println();
}//for i
System.out.println();
System.out.println("확장형 for문");
for(String data : args) {
System.out.println(data);
}
System.out.println("\n");
System.out.println("오름차순으로 정렬");
Arrays.sort(args);
for(String data : args) {
System.out.println(data);
}
}
}
args[0] = 호랑이
문자열의 크기 = 3
첫 번째 문자 = 호
마지막 문자 = 이
args[1] = 기린
문자열의 크기 = 2
첫 번째 문자 = 기
마지막 문자 = 린
args[2] = 딸기
문자열의 크기 = 2
첫 번째 문자 = 딸
마지막 문자 = 기
args[3] = 25
문자열의 크기 = 2
첫 번째 문자 = 2
마지막 문자 = 5
args[4] = 43.5
문자열의 크기 = 4
첫 번째 문자 = 4
마지막 문자 = 5
확장형 for문
호랑이
기린
딸기
25
43.5
오름차순으로 정렬
25
43.5
기린
딸기
호랑이
* charAt 함수
String 타입의 데이터(문자열)에서 특정 문자를 char 타입으로 변환할 때 사용하는 함수
String sample = "abc";
char target = sample.charAt(0);
위처럼 String 변수에서 사용할 수 있으며,
charAt(i)
i 자리에는 int 형 변수를 넣어서 원하는 위치의 문자를 가져올 수 있다.
for(String data : args) {
System.out.println(data);
}
>> 배열에 있는 데이터를 차례대로 받아올 수 있음.
배열 크기 입력 : 3
ar[0] 입력 : 36
ar[1] 입력 : -25
ar[2] 입력 : 100
36 -25 100
합 = xxx
최대값 = xxx
최소값 = xxx
Array03.java
package array;
import java.util.Scanner;
public class Array03 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("배열 크기 입력 : ");
int size = scan.nextInt();
System.out.println();
int[] ar = new int[size];
int sum = 0;
//입력
for(int i=0; i<size; i++) {
System.out.print("ar[" + i + "] 입력 : ");
ar[i] = scan.nextInt();
sum += ar[i];
}
System.out.println();
//최대값, 최소값
int max = ar[0];
int min = ar[0];
//int max, min;
//max = min = ar[0];
for(int i=1; i<size; i++) {
if(max<ar[i]) max = ar[i];
if(min > ar[i]) min = ar[i];
}
//출력
for(int data : ar) {
System.out.print(data + " ");
}
System.out.println("\n");
System.out.println("합 = " + sum);
System.out.println("최대값 = " + max);
System.out.println("최소값 = " + min);
}
}
배열 크기 입력 : 3
ar[0] 입력 : 36
ar[1] 입력 : -25
ar[2] 입력 : 100
36 -25 100
합 = 111
최대값 = 100
최소값 = -25
[선택정렬]
사진 설명을 입력하세요.
- 주어진 배열 중에 최소값을 찾습니다.
- 그 값을 맨 앞에 위치한 값과 교체합니다. (pass)
- 맨 처음 위치를 뺀 나머지 배열을 같은 방법으로 교체합니다.
- 하나의 원소만 남을 때까지 위의 1~3 과정을 반복합니다.
SelectionSort.java
package array;
import java.util.Arrays;
public class SelectionSort {
public static void main(String[] args) {
int[] ar = {30, 36, 25, 45, 28};
System.out.print("정렬 전 : ");
for(int i=0; i<ar.length; i++) {
System.out.print(ar[i] + " ");
}
System.out.println();
//Selection Sort
int temp;
for(int i=0; i<ar.length-1; i++) {
for(int j=i+1; j<ar.length; j++) {
//if(ar[i]>ar[j]) { //오름차순
if(ar[i]<ar[j]) { //내림차순
temp = ar[i];
ar[i] = ar[j];
ar[j] = temp; //교환법칙 (넘겨주면 받고)
}
}
}
System.out.print("정렬 후 : ");
for(int i=0; i<ar.length; i++) {
System.out.print(ar[i] + " ");
}
System.out.println();
}
}
정렬 전 : 30 36 25 45 28
정렬 후 : 45 36 30 28 25
[버블정렬]
사진 설명을 입력하세요.
BubbleSort.java
package array;
public class BubbleSort {
public static void main(String[] args) {
int[] ar = {30, 36, 25, 45, 28};
System.out.print("정렬 전 : ");
for(int i=0; i<ar.length; i++) {
System.out.print(ar[i] + " ");
}
System.out.println();
//Bubble Sort
int temp;
for(int i=0; i<ar.length-1; i++) {
for(int j=0; j<ar.length-1-i; j++) {
if(ar[j] > ar[j+1]) {
temp = ar[j];
ar[j] = ar[j+1];
ar[j+1] = temp;
}
}
}
System.out.print("정렬 후 : ");
for(int i=0; i<ar.length; i++) {
System.out.print(ar[i] + " ");
}
System.out.println();
}
}
정렬 전 : 30 36 25 45 28
정렬 후 : 25 28 30 36 45
int temp;
for(int i=0; i<ar.length-1; i++) {
for(int j=0; j<ar.length-1-i; j++) {
if(ar[j] > ar[j+1]) {
temp = ar[j];
ar[j] = ar[j+1];
ar[j+1] = temp;
}
}
}
★ j < ar.length-1-i; 이 부분이 키포인트 !!! ★
'JAVA' 카테고리의 다른 글
DAY 3-2 if / Switch (2024.07.05) (0) | 2024.08.13 |
---|---|
DAY 4 - 반복문 (2024.07.08) (0) | 2024.08.13 |
DAY 6 - 다차원 배열 (2024.07.10) (0) | 2024.08.13 |
DAY 7 - 배열 / 클래스(객체) (2024.07.11) (0) | 2024.08.13 |
DAY 7 - HOMEWORK - 클럽 회원관리 (2024.07.11) (0) | 2024.08.12 |