[java] 기초(1)

세상을 바꾸는 개발자·2023년 2월 22일
0

LikeLion

목록 보기
1/5

public static void main()

프로그램 시작점
psvm 으로 빠르게 작성 가능
public : 누구나 접근 가능
void : 리턴 하지 않음


System.out.println

System.out 은 표준출력(모니터)이고, .의 의미는 '~의'이다.

print() : 줄바꿈 없이 출력
printl() : 출력 끝에 줄바꿈
printf() : 포맷에 따라 출력

package org.example;

public class Main {
    public static void main(String[] args) {
        // 프로그램의 시작점
        System.out.println(1); // 숫자는 " 로 감싸지 않아도 됩니다.
        System.out.println("2");
        System.out.println("3");
        System.out.println("사");
        // 프로그램의 끝점
        
        // 프로그램의 실행은 위에서 부터 순서대로 한줄, 한줄 실행됩니다.
    }
}



변수

변수가 = 왼쪽에 있을 때, 저장 공간으로 취급
이외에는 값으로 취급

int x; //변수 선언
x = 5; //x는 '변수'로 취급
System.out.println(x+5); //x는 '값'으로 취급



조건문

int age = 20;
System.out.println("당신의 나이 : " + age);

if (age >= 20) { // age = 20 : true
	System.out.println("성년");
} else { // if (age < 20) 과 같음, age = 20 : false
	System.out.println("미성년");
}

비교연산자

&& and
true && true => true
true && false => false
false && true => false
false && false => false

|| or
true || true => true
true || false => true
false || true => true
false || false => false

! inverse
!true => false
!false => true

^ xor
true ^ true => false
true ^ false => true
false ^ true => true
false ^ false => false



기본 자료형 8종

boolean, byte : 1byte
char, short : 2byte
int, float : 4byte
long, double : 8byte

// 논리계열
boolean b = true; // or false

// 문자계열(사실 숫자가 저장됨, 왜냐하면 문자는 사실 숫자이다.)
char c = 'a'; // 'a' 는 사실 97 이다. (아스키코드)

// 정수계열
byte bt = 1;
short s = 2;
int i = 3;
long l = 4L; // 자동형변환에 의해서 4라고 써도 됨

// 실수계열
float = 5.5f;
double = 5.5;



기본형변수와 참조형변수의 차이

기본형변수가 아니면 참조형변수.
대표적으로 String이 참조형변수이다.
참조형 변수에는 실체를 조종할 수 있는 리모콘이 저장된다.
자바에서 리모콘의 크기는 모드 같다.
그래서 모든 참조형 변수의 크기는 8바이트 이다.(JVM 마다 다름, 딱히 중요하지 않음)

// 아래 기본형 변수들은 실제로 숫자를 가지고 있다.
boolean b = true;
char c = 'a'
byte bt = 1;
shjort s = 2;
int i = 3;
long l = 4L;
float = 5.5f;
double = 5.5;



String s;
s = "안녕" + "하세요.";

엄밀히 말하면 s 에는 "안녕하세요." 가 들어있지 않다.
s 에는 "안녕하세요." 라는 문자열 객체를 조종할 수 있는 리모콘이 들어있다.


String s1 = "하하";
String s2 = "하하하하하하하";

s1과 s2의 크기는 같다.
1과 s2가 각각 가리키는 객체들은 서로 크기가 다르다.


배열

참조형 변수

int a = 50;
int b = a;

50은 2군데에 저장되어 있다.(a와 b)


int[] arr1 = new int[3]; // 객체가 힙에 생성되고 그 객체의 리모콘이 arr1 변수에 저장된다.
int[] arr2 = arr1; // 객체가 2개가 된게 아니라 같은 리모콘만 2개가 되었다.(int[3]을 가리킴)

new : 객체 생성
int[3] : 설계도(자바에서 기본적으로 제공)
arr1 : int[3]의 주소를 가리키는 리모콘


지역변수와 객체가 삭제되는 시기

지역변수 : 함수 안에 지정된 변수
지역변수 - 함수가 다 끝나면 삭제
객체 - 외톨이가 될 때 가비지 컬렉터에 의해 삭제(객체를 가르키고 있는 게 없을 때)

  • 객체는 폴더라고 할 수 있다. 객체로 특정 변수들을 하나로 묶을 수 있다.

객체 없는 버전

int person1_0 = 1; // 사람 1의 번호
int person1_1 = 20; // 사람 1의 나이
int person1_2 = 170; // 사람 1의 키

int person2_0 = 2; // 사람 2의 번호
int person2_1 = 30; // 사람 2의 나이
int person2_2 = 180; // 사람 2의 키

객체 있는 버전

int[] person1 = new int[3]; // 객체(인스턴스)가 생긴다.
person1[0] = 1; // 사람 1의 번호, 인스턴스 변수
person1[1] = 20; // 사람 1의 나이, 인스턴스 변수
person1[2] = 170; // 사람 1의 키, 인스턴스 변수

int[] person2 = new int[3]; // 객체(인스턴스)가 생긴다.
person2[0] = 2; // 사람 2의 번호, 인스턴스 변수
person2[1] = 30; // 사람 2의 나이, 인스턴스 변수
person2[2] = 180; // 사람 2의 키, 인스턴스 변수

<단어 정리>
객체 == 인스턴스 == 폴더
클래스 == 인스턴스 설계도 == 폴더 설계도 == 설계도
객체변수 == 인스턴스변수

profile
초심 잃지 않기

0개의 댓글