자바에서는 두 변수의 값을 바꿀 때 임시 저장 변수인 temp변수를 이용하여 값을 바꾼다.
아래 코드를 2,3,1로 바꿔보자
public class Temporary {
public static void main(String[] args){
int a = 1;
int b = 2;
int c = 3;
int temp = 0;
//temp 라는 빈공간에 a의 값인 1의 값을 넣는다.
//이제 a 로 아무거나 할 수 있음 (a = 1상태임 아직, 근데 temp도 1임)
temp = a;
a = b; //이때도 b의 값은 b = 2
b = c;
c = temp; //복사해둔 a값을 쓴다.
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
1.제일 먼저 생각할 부분은 첫번째 변수 값을 temp변수에 넣는 것이다.
그럼 temp = a 즉, temp가 a의 값을 가지고 있다. a는 이제 아무거나 할 수 있다.
2.temp에게 값을 준 변수, a에 들어갈 값을 찾아보자 . 2,3,1로 바꾼다고 했으니까
a에 2의 값을 넣어주면 되겠다 a=2 즉 , a=b
3.b의 값은 아직까지 2이다. b를 원하는 변수에 넣어주자 b=c
4.이제 마지막 c마무리 부분에 temp를 넣어준다 c = temp
temp변수와 배열의 관계 ...
temp변수는 주로 배열에서 많이 사용한다.. 주로 인덱스 값을 찾거나, 배열을 순서대로 정렬할 때 쓴다.
1.인덱스 값을 찾는 경우
인덱스 번호가 어디있는지 찾을 때 temp변수를 쓰는 경우이다.
import java.util.ArrayList;
public class Temporary {
public static void main(String[] args){
//지금의 경우는 리스트를 내가 만들어서 인덱스가 몇번인지 알수 있음
//그런데 값만 받고 , 인텍스 몇번인지 모를때, winter가 인덱스값 몇번 값인지 찾아봐야함
ArrayList<String> aespa = new ArrayList<String>();
aespa.add("karina");
aespa.add("winter");
aespa.add("ningning");
aespa.add("giselle");
//1. winter index 값 뽑아내기
/*
temp를 안썼을 때
for(int i = 0;i<aespa.size();i++){
if(aespa.get(i)=="winter"){
System.out.println(i);
}
}
*/
//2.temp , 인덱스 번호를 구하는 것이기 때문에 int 로 타입을 정해준다.
int temp = 0;
for(int i=0; i<aespa.size();i++){
if (aespa.get(i) == "winter") {
temp = i;
}
}
System.out.println(temp);
}
}
2.배열 오름차순으로 정렬 ( 저 -> 고)
가장 많이 쓰는 코드이다. 1,2,5,7 로 배열 정렬하기 !
public class MySortIntArray {
public static void main(String[] args){
ArrayList<Integer> digits = new ArrayList<Integer>();
digits.add(2);
digits.add(5);
digits.add(1);
digits.add(7);
my_sort_int_array(digits);
}
public static void my_sort_int_array(ArrayList<Integer> a){
for(int i = 0; i < a.size(); i++){
int temp = 0;
//a.get(3)까지 체크가 가능함
//밑 if문에 a.get(i+1)을 만들어 놓음 만약 i가 3일 때 if문이 계속 돌아가면
//a.get(4)도 검사해야함 . 범위 밖임 .. 따라서 i+1일 때 나갈 수 있게 해줌
if(i+1==a.size()){
break;
}
if(a.get(i)>a.get(i+1)){
temp = a.get(i);
a.set(i, a.get(i+1));
a.set(i + 1, temp);
//i는 항상 i++로 되기 떄문에 위로에서 내려올 떄 1임 , i를 -1로 해줘야 초기화됨
//a.get(0)상태로 돌아가서 if문 컨디션이 맞을 때까지 계속 돌아준다.
i=-1;
}
}
for(int i = 0; i < a.size(); i++){
System.out.print(a.get(i)+" ");
}
}
}
참고로 i=-1로 하는 이유는 위에서 for문 조건문에 i++가 있기 때문이다.
'Java' 카테고리의 다른 글
인스턴스 변수, 클래스 변수 , static변수 (0) | 2022.01.07 |
---|---|
Arrays.asList()란 (0) | 2022.01.07 |
Try-catch 예외처리 (0) | 2022.01.07 |
Super() 메소드 (0) | 2022.01.07 |
super 키워드 (0) | 2022.01.07 |
댓글