프로그램 시작점
psvm
으로 빠르게 작성 가능
public : 누구나 접근 가능
void : 리턴 하지 않음
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
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의 키, 인스턴스 변수
<단어 정리>
객체 == 인스턴스 == 폴더
클래스 == 인스턴스 설계도 == 폴더 설계도 == 설계도
객체변수 == 인스턴스변수