System.out.println(1+2); //더하기
System.out.println(1*2); //곱하기
System.out.println(1/2); //나누기
System.out.println(1%2); //나머지
//변수를 이용해 연산 가능
int a = 1;
int b = 2;
System.out.println(a+b); //더하기 결과값 : 3
int a = 10; //10을 a에 대입하겠다.
int a = 10;
int b = 8;
int c = 10;
System.out.println(a==b) // 다르다.
System.out.println(a==c) // 같다.
// 기본 자료형은 스택 메모리에서 실제 데이터를
// 비교하기 때문에 이와 같은 결과값을 가진다.
String str1 = new String("안녕");
String str2 = new String("안녕");
System.out.println(str1==str2) // 다르다.
// 참조 자료형은 스택 메모리에서 실제 데이터를
// 비교하는게 아닌 실제 데이터의 번지수를 비교하기
// 때문에 이와 같은 결과값을 가진다.
힙메모리에 새로운 객체를 생성한다.
이 객체의 변수는 힙메모리의 번지수값을 가진다.
자바는 형변환을 자동으로 처리해 주는데 이런한 전환 작업을 자동형 변환이라 부른다.
자동 형변환의 원칙 - 표현범위가 좁은 데이터 타입에서 넓은 데이터 타입으로 변환만 허용된다는 것이다.
byte > short > int > long > float > double
int a = 1;
double b = 3.5;
double c = a + b; //a가 double로 자동 형변환
System.out.println(c);
int a = 1;
double b = 3.5;
double c = (int) a + (int) b;
double d = (int) a + (double) b;
double e = (double) a + (double) b;
System.out.println(c + ", " + d + ", " + e);
Object object = new 클래스();
Object object = (Object)new 클래스(); //모든 클래스는 object의 상속을 받으므로 자동타입을 실행한다.
예제
public class Person{
public String toString(){
return "Person 입니다.";
}
public class Student extends Person{
public String toString(){
return "Student 입니다.";
}
public class Main{
Person person = new Person();
Studnet student = (Student)person; // 다운캐스팅은 명시적형변환이 필요하다.
System.out.println(person); // 결과 : Student 입니다.
}