변수: "단 하나의 값을 저장할 수 있는 메모리 공간."
변수의 초기화 : "변수를 사용하기 전에 처음으로 값을 저장하는 것"
// 두 변수의 값 교환하기
package com.pr01;
public class VarEx2 {
public static void main(String[] args) {
int x = 10, y = 20;
int tmp = 0;
System.out.println("x:" + x + " y :" + y);
tmp = x;
x = y;
y = tmp;
System.out.println("x :"+ x + " y:"+ y);
}
}
상수와 리터럴 : 상수[constant]는 변수와 마찬가지로 '값을 저장할 수 있는 공간'이지만 변수와 달리 한번 값을 저장하면 다른 값으로 변경할 수 없다. 변수의 타입 앞에 키워드 'final' 을 붙여주기만 하면 된다.
리터럴[literal] : 그 자체로 값을 의미하는 것으로 기존에 알고있던 '상수'의 다른 이름일 뿐이다.
println() : 사용하기엔 편하지만 변수의 값을 그대로 출력하므로, 값을 변환하지 않고는 다른 형식으로 출력할 수 없다.
printf() : '지시자(specifier)'를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력하는 기능을 가지고 있다.
%b : boolean형식으로 출력 / %d[decimal] : 10진 정수의 형식으로 출력 /%o[octal] : 8진 정수의 형식으로 출력 /% x, %x : 16진[hexa-decimal] 정수의 형식으로 출력 / %f[floating-point] : 부동 소수점 형식으로 출력 / %c : 문자[character]로 출력 / %s : 문자열{String]로 출력
Scnnaer :
package com.pr2;
import java.util.Scanner; // scanner클래스를 사용하기 위해 추가
public class ScannerEx {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scanner클래스의 객체 생성
System.out.println("두자리 정수를 하나 입력해주세요.>");
String input = scanner.nextLine(); // 입력받을 내용을 input에 저장 ,
//nextInt() 같은 변환없이 숫자로 바로 입력받을 수 있는 메서드들이 있지만
//화면에서 연속적으로 값을 입력받아서 사용하기에 까다롭기 때문에
// 모든 값을 nextLine() 으로 입력받아서 적절히 변환하는 것이 더 낫다.
int num = Integer.parseInt(input); // 입력받은 문자열을 숫자로 변환
System.out.println("입력내용 : " +input);
System.out.printf("num = %d%n", num);
}
}
문자를 코드로 변환하는 것을 '문자 인코딩[encoding], 그 반대로 코드를 문자로 변환하는 것을 '문자 디코딩[decoding]'이라하며, 문자를 저장할 때는 인코딩을 해서 숫자로 변환해서 저장하고, 저장된 문자를 읽어올 때는 디코딩을 해서 숫자를 원래의 문자로 되돌려야 한다.
형변환{casting] : 변수 또는 상수[리터럴]의 타입을 다른 타입으로 변환하는 것
-> 변수나 리터럴의 앞에 변환하고자 하는 타입을 괄호와 함께 붙여주기만 하면 된다. : (타입)피연산자
package com.pr2;
public class CastingEx1 {
public static void main(String[] args) {
double d = 85.4;
int score = (int)d;
System.out.println("score="+score);
System.out.println("d="+d); //형변환 후에도 피연산자에는 아무런 변화가 없다.
}
}
연산자의 우선순위 : 1.산술 > 비교 > 논리 > 대입 2.단항[1] > 이항[2] > 삼항[3] 3. 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행 방향은 왼쪽에서 오른쪽이다.
Array.toString(배열이름)() 메서드를 이용해서 [첫번째요소,두번째요소....]와 같은 형식의 문자열로 만들어서 반환한다.
배열의 복사에서 자신을 가르키는 참조변수가 없는 배열은 사용할 수 없다. 배열은 참조변수를 통해서만 접근할 수 있기 때문에 , 쓸모없게 된 배열은 JVM의 가비지 컬렉터에 의해서 자동적으로 메모리에서 제거된다.
배열의 복사:↓
for(int i=0; i < num.length; i++) {newNum[i] = num[i]; }
for문을 arraycopy()로 바꾼것 1 -> 3
System.arraycopy(num, 0, newNum, 0, num.length);
num[0]에서 newNum[0]으로 num.length개의 데이터를 복사
tocharArry() : 이 인스턴스의 문자를 유니코드 문자 배열에 복사한다.
2차원 배열 : 행[row]와 열[column]으로 구성되어있다.
2차원 배열의 초기화
int[][] arr = new int[][] { {1,2,3} , {4,5,6} };
int[][] arr = { {1,2,3} , {4,5,6} };
int[][] arr = {
{1,2,3},
{4,5,6}
};