본문 바로가기

Java 시작

(21-11-25) [기본 자료형의 형변환 / 문자열과 관련된 명령어 / 배열]

기본 자료형의 형변환

 

숫자 → 숫자 형식 : ( 바뀔타입 ) 값 

                                        ↳ 캐스팅 : 형변환 시 값 앞에 ()로 타입을 지정하는 것 

 

ex) int a = 7;                                
    System.out.println((float)a); = 7.0

위 코드의 출력값은 실수형인 7.0이다. 정수타입의 a가 실수타입으로 타입변환이 됐기때문.

 

 

 

숫자 → 문자열 형식:  타입클래스.toString(값)

 

ex) System.out.println(Integer.toString(4)); = "4"
    System.out.println(Integer.toString(4) + 1); = "41"

위 코드의 출력값은 String타입의 4로 출력된다. 하지만 이것이 제대로 형변환이 되어 나온건지 확인하기위해 +1을 해보자. "문자열" + 숫자 => 문자열 + 문자열이 되기 때문에 4가 제대로 형변환이 되었다면 5가 아닌 41이 나올 것이다.

 

 

문자열 → 숫자 형식 : 타입클래스.parse타입(값)

 

 

ex) System.out.println(Integer.parseInt("4"); => 4
System.out.println(Integer.parseInt("4")+1); => 5

위 코드의 출력값은 정수형 4로 출력된다. 하지만 이것이 제대로 형변환이 되어 나온건지 확인하기위해 +1을 해보자. "문자열" + 숫자 => 문자열 + 문자열이 되기 때문에 4가 제대로 형변환이 되었다면 41이 아닌 5가 나올 것이다.

 

 

외의 문자열과 관련된 명령어

+ → 문자를 이어주는 역할
String s = "Hello World";
System.out.println(s  + "!!");

출력문은 "!!"가 결합되어 Hello World!! 가 나오는 것을 볼 수 있다.

 

.length()  → 문자열의 길이를 나타내주는 역할
System.out.println(s.length());

출력문은 "Hello World!!"의 길이인 13이 나온다. 문자열의 길이는 0부터 센다. 

 

substring(값) → 문자열 인덱스가 값이상부터 자른다
substring(값1, 값2) → 문자열 인덱스가 값1이상부터 값2미만까지 자른다.
System.out.println(s.substring(7,10));

출력문은 String s의 문자열을 7번부터 10까지자른 "orl"이 나온다.

 

replace(값1,값2) : 값1을 값2로 바꾼다.
System.out.println(s.replace("l", "k"));

출력문은 문자열 s의 "l" 들이 "k"로 바뀐 "Hekko Workd!!"가 나온다

 

replaceFirst(값1, 값2) : 값1을 값2로 첫번째 것만 바꾼다.
System.out.println(s.replaceFirst("l", "k"));

출력문은 문자열 s의 첫번째 "l"이 "k"로 바뀐 "Heklo World!!"가 나온다.

 

indexOf(값) : 값의 인덱스 위치를 찾겠다.
indexOf(값,숫자) : 값을 숫자 이상에서부터 시작해서 인덱스 위치를 찾겠다.
** 값이 인덱스안에 없을 경우에는 -1이라 출력. 인덱스는 0부터 시작하기때문에 -1은 나올 수 없는 숫자이기 때문**
System.out.println(indexOf("l"));
System.out.println(indexof("l",3))

출력문은 각각 2, 3이 나온다.

 

lastindexOf(값) : 값의 인덱스 위치를 뒤에서부터 찾겠다.
lastindexOf(값,숫자) : 인덱스 중 숫자 이하에서 값의 인덱스 위치를 찾겠다. 
System.out.println(s.lastIndexOf("l"));
System.out.println(s.lastIndexOf("l",3));

출력값은 각각 9, 3이 나온다.

 

 charAt(숫자) : 인덱스 중 숫자에 해당하는 글자를 가져온다.
System.out.println(s.charAt(6));​

 

인덱스번호가 6에 해당하는 w 가 출력된다.

 

equals(값) : 값과 동일한지 비교해준다. 출력값은 논리값으로 나온다. 문자열 비교는 무조건 equals사용
System.out.println(s.equals("abcd"));

출력문은 당연히 false

 

toLowerCase() : 소문자화
toUpperCase() : 대문자화
System.out.println("ABCD".toLowerCase());
System.out.println("abcd".toUpperCase());

Lower : abcd , Upper : ABCD

 

trim() : 앞뒤 공백 제거 중간 공백은 제거해주지않음
System.out.println("   A B C   ".trim());

출력문은 앞뒤 공백이 제거된 "A B C" 가 나온다 중간 여백은 제거되지않음

 

split(값) : 값을 기준으로 문자열을 자르고 배열로 전환
String s = "가,나,다";
String[] arrs = s.split(",");
for(String t : arrs){System.out.println(t);}

,을 구분자로하여 나누어진 문자열을 출력해서 출력문은 가\n나\n다 가 출력된다

 

배열(Array) - 값을 순차적으로 보관, 크기가 고정

타입[] 변수명 = new 타입[크기];  →  해당 크기의 배열을 생성한다.
타입[] 변수명 = {값1,값2, 값3 ~ 값n} →  값의 개수와 동일한 크기의 배열을 생성하고 값을 할당한다.
int[] arr = {1,3,5};
System.out.println(arr[1]);
arr[0] = 4;
System.out.println(arr[0]);

- 정수형 arr 배열에 0,1,2 번지에 차례대로 1,3,5의 값이 할당된 상태

- 첫번째 출력문에서는 arr[1]에 배정된 3이 출력된다

- 두번째 출력문에서는 arr[0]에 4 값이 덮어씌워져 4가 출력

 

 

for문에서 "순차적"데이터 활용

                     ↶ 1

for(타입 변수명 : 순차적데이터) {

              2                   

      < 내용 >            ⇉  ⇉  3

}

 

순차적 데이터에서 데이터를 가져와 변수에 넣고 내용을 실행하고 다음 데이터가 없으면 반복문 종료.

int arr[] = {1,2,3};
for(int a: arr) { System.out.print(a);}

출력문은 123이 나온다. 순차적으로 값이 변수에 들어가기 때문.

 

 

#실습 _ 배열을 이용하여 오름차순 정렬하기

 

if 만 사용한 코드
public class Exam_arr {

	public static void main(String[] args) {
		
		int[] arr = {60,10,5}; // arr[0] < arr[1] < arr[2]
		int k;
			
			
			if(arr[0] > arr[1]) {
				
			k = arr[0];
			arr[0] = arr[1];
			arr[1] = k;			
			
			}
			if(arr[0] > arr[2]) {
					
					k = arr[0];
					arr[0] = arr[2];
					arr[2] = k;
			}
			if(arr[1] > arr[2]) {
					
					k = arr[1];
					arr[1] = arr[2];
					arr[2] = k;
					
		
			}
			System.out.println(arr[0]); 
			System.out.println(arr[1]); 
			System.out.println(arr[2]); 
            }
     }
중첩 for문을 이용한 코드
int[] arr = {3,2,1}; // arr[0] < arr[1] < arr[2]
		int t;
				for(int i = 0; i < arr.length-1 ; i++) {
					for(int j = i+1; j < arr.length; j++) {
						if(arr[i] > arr[j]) {
							t = arr[i]; 
							arr[i] = arr[j];
							arr[j] = t;
						}	
					}
		
				}
				for(int a : arr) {
				System.out.println(a);
		}
    }
 }

**참조엑셀**