본문 바로가기
개발 공부/Java

Java 기초

by momo'sdad 2023. 10. 18.

※ 안드로이드 상에서 출력할때

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값이 같다고 나온다.

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번지를 가리키고 있기 때문에 변한 데이터를 불러들여 결과 값이 변하게 된다.

Call by reference는 메서드 호출 시 사용되는 인자 값의 메모리에 저장되어있는 주소(Address)를 복사하여 보낸다.

반응형