※ 안드로이드 상에서 출력할때
1) System.out.println("출력문구");
2) Log를 통해 띄우기
5라는 정수형 data를 num이라는 변수에 넣자!!
int num = 5;
- java의 기본 자료형
boolean: 논리형
char : 문자형
byte, short, int, long : 정수형
float, double : 실수형
double num1 = 1.1;
double num2 = 2.2;
String.vlaueOf(변환하고자 하는 값)
Log.d("출력", String(num1+num2));
부동 소수점
Java에서 기본 데이터타입(8가지)이 아니다 -> 무조건 Reference Type
레퍼런스타입은 주소, (Call by Value, Call by Reference)
Reference Type의 3가지 용도
1) 배열에 대한 래퍼런스
2) 클래스에 대한 레퍼런스
3) 인터페이스에 대한 레퍼런스
boolean check = true;
boolean check2 = false;
char char1 = 'A';
String name = "박진우";
byte b1 = -128; //-128~127
byte b2 = 127;
int n3 -128;
byte b3 = (byte)n3;
b3 // -127
short s1 = -32768;
short s2 = 32767;
int n1 = 50000;
long n1 = 230000000;
Java의 정수 기본 타입은 int
Java의 실수 기본 타입은 double
long l1 = 23000000000L; // 끝에 long타입 l또는 L 써줘야 함
long l2 = 23000000000l;
float f1 = (float)2.3;
float f2 = 2.3f;
float f3 = 2.3F;
double d1 = 2.3;
정수형 데이터 5개를 넣는 공간
Java에서 Reference 타입 여부를 확인하는 이유
int[] array; // 배열의 선언
array = new int[5]; // 배열의 생성
int[] array2 = new int[5]; // 배열의 선언과 동시에 생성
array[0] = 3;
array[1] = 5;
array[2] = 7;
array[3] = 9;
array[4] = 11;
Log.d("출력", String.valueOf(array[0]));
Log.d("출력", String.valueOf(array[1]));
Java 배열은 생성(new)시 반드시 크기가 지정되어야 함.
String[] drinks = new String[]{"솔의 눈", "데자와", "맥콜"};
String name2 = "박진우";
String[] snacks = {"뿌셔뿌셔딸기맛", "뿌셔뿌셔메론맛"};
Log.d("출력2", drinks[0]);
Log.d("출력2", snacks[0]);
drinks = snacks;
Log.d("출력2", drinks[0]);
Log.d("출력2", snacks[0]);
snacks[0] = "썬칩";
Log.d("출력2", snacks[0]); // 썬칩
Log.d("출력2", drinks[0]); // 뿌뿌딸기맛
- java에서 조건문
int age = 20;
if(age>=20){
Log.d("출력3", "성인입니다");
}
else if(age >= 17){
Log.d("출력3", "고등학생입니다");
}
else if(age >= 14){
Log.d("출력3", "중학생입니다");
}
else if(age >= 8){
Log.d("출력3", "초등학생입니다");
}
else{
Log.d("출력3", "미취학아동입니다");
}
- java에서 반복문
int a = 1;
while(true){
Log.d("출력4", String.valueOf(a));
- 복합 대입 연산자
a +=1;
// a = a+1;
// a++;
if(a == 10){
break; // 루프문 탈출
}
}
for(int i = 1; i<=10; i++){
Log.d("출력5", String.valueOf(i));
}
String[] foods = {"민트초코", "피스타치오", "슈팅스타"};
for(int i =0; i< foods.length; i++){
Log.d("출력6", foods[i]);
}
※ Call by value, Call by reference
함수의 호출 방식에는 Call by value와 Call by reference가 있다.
Call by value
예제
Class CallByValue{
public static void swap(int x, int y) {
int temp = x;
x = y;
y = temp;
}
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("swap() 호출 전 : a = " + a + ", b = " + b);
swap(a, b);
System.out.println("swap() 호출 후 : a = " + a + ", b = " + b);
}
}
결과
swap() 호출 전 : a = 10, b = 20
swap() 호출 후 : a = 10, b = 20
swap() 메서드 호출 시에 사용한 인자 a, b와 swap() 메서드내의 매개변수 x, y는 서로 다르기 때문에 a,b값이 같다고 나온다.
![](https://blog.kakaocdn.net/dn/c4ykwk/btsyHGtIj6g/fknptINPIued5PtkaHKGVK/img.png)
Call by value는 메서드 호출 시에 사용되는 인자의 메모리에 저장되어 있는 값(value)을 복사하여 보낸다.
Call by reference
예제
Class CallByReference{
int value;
CallByReference(int value) {
this.value = value;
}
public static void swap(CallByReference x, CallByReference y) {
int temp = x.value;
x.value = y.value;
y.value = temp;
}
public static void main(String[] args) {
CallByReference a = new CallByReference(10);
CallByReference b = new CallByReference(20);
System.out.println("swap() 호출 전 : a = " + a.value + ", b = " + b.value);
swap(a, b);
System.out.println("swap() 호출 전 : a = " + a.value + ", b = " + b.value);
}
}
결과
swap() 호출 전 : a = 10, b = 20
swap() 호출 후 : a = 20, b = 10
main()에서 선언 된 CallByReference 타입의 변수 a와 b는 각각 객체를 생성하여 0x0001번지와 0x0005번지에 저장된 10과 20의 주소 값을 저장하게 됩니다. 이후, swap() 메서드 호출 시에 인자 a와 b는 메모리에 저장 된 주소 값을 복사하여 매개변수 x와 y의 메모리에 저장한다. 결국 swap() 메서드는 10과 20이 저장 된 0x0001번지와 0x0005번지의 주소를 참조하여 연산하기 때문에, 연산 결과에 따라 원본 데이터가 변하게 된다. main()에서 선언 된 변수 a와 b는 각각 0x0001번지와 0x0005번지를 가리키고 있기 때문에 변한 데이터를 불러들여 결과 값이 변하게 된다.
![](https://blog.kakaocdn.net/dn/kVsaV/btsyDRbVJpL/uhQPJnJAEyiAgLlZ9mOte1/img.png)
Call by reference는 메서드 호출 시 사용되는 인자 값의 메모리에 저장되어있는 주소(Address)를 복사하여 보낸다.