본문 바로가기

Java

[210723~26] 자바 기초

규칙1. 생성된 파일 이름은 클래스 이름과 동일해야 한다.

ex) public class HelloJava workspace 안에 내가 만든 파일 이름 HelloJava.java

 

System.out.print("안녕하세요. \"자바\" 프로그래밍 수업을 시작 합니다.");

// 자바를 감싼 "을 문자로 인식하게 하기 위해 역슬래쉬 삽입

 

abcd\r12 입력 시 실제로 출력 결과는 12cd (abcd 후에 커서가 맨 앞인 a 앞으로 이동 후 1 2 입력)

 

비트(bit) = 데이터의 저장 최소 단위, 2진수 값 하나 (0,1)를 저장할 수 있는 메모리 공간, 컴퓨터는 2진수(bit)로 인지.

바이트(byte) = 문자의 최소 단위, 8bit = 1byte

 

자료형 크기byte (bit) 범위 기본 값
boolean 1 (8) true, false false
char 2 (16) 0~65,535(유니코드문자) '\u0000'
String (참조형)  4    
byte  1 (8) -128 ~ 127 0
short  2 (16) -32,768 ~ 32,767 0
int 4 (32) -2,141,483,648 ~ 2,147,483,647 0
long 8 (64) -9,223,327,036,854,775,808 ~ 9,223,327,036,854,775,807 0L
float 4 (32) +-1.4E-45 ~ 3.4E38 0.0f
double 8 (64) +-4.9E-324 ~ 1.8E308 0.0 또는 0.0d

 

변수의 명명 규칙

 

1. 대소문자가 구분되며 길이 제한이 없다.

2. 예약어를 사용하면 안 된다 ex) true, final, String 등

3. 숫자로 시작하면 안 된다.

4. 특수문자는 _ 와 $ 만을 허용한다. ( _ 는 관례상 사용하지 않는 것이 좋음)

5. 여러 단어 이름은 단어의 첫 글자를 대문자로 한다. 단, 첫 시작글자는 소문자로 하는 것이 관례이다. ex) userName

 

리터럴 literal

 

long l = 10000L (정수는 기본 int로 보기 때문에 형변환 L 작성 해줘야 함) 

float f = 0.123f (실수는 기본 double로 보기 때문에 따라서 형변환 f 작성 해줘야 함) 

primitive type 원시타입 = boolean, char, byte, short, int, long, float, double (이클립스에서 보라색으로 작성 됨)

referance type 참조타입 = String, array, class .... ( 4byte) -형변환 불가

                    하나의 메모리 주소를 참조해서 찾아가기 때문에 참조형 데이터 값이라고 부른다.

 

문자열 초기화

 

다른 자료형 + "문자열" -> 문자열로 인식

"문자열" + 다른 자료형 -> 문자열로 인식

ex) String str = "기차" + 123 + 45;     ->문자열 "기차12345" 

String str = 123 + 45 + "기차";          ->문자열 "168기차" 

string str = new String(“기차”) <-class 초기화

 

long ->float 자동 형변환 가능 반대는 불가능 (당연함 10.210으로 자동 변환하면 데이터 소실)

byte short int long 정수

float, double 은 실수 (조밀한 수)

char는 유니코드 (문자, 그러나 내부적으론 숫자) ex) a=97 A=65

참조형 데이터 값 HEAP 힙에 저장

 

 


RAM 구조 

 

-Static : Static 예약어로 선정된 필드, 메소드가 저장되는 공간. 클래스 변수(=Static 변수) 등

-Heap : new 연산자에 의해 동적으로 할당하고 저장되는 공간. 객체, 배열 등

-STACK : 메소드를 호출하면 자동 생성 메소드가 끝나면 자동 소멸. 지역변수, 매개변수, 메소드 호출 스택 등 

 

STACK

boolean bool = true;
String str1 = HEAP(0X1000); HEAP을 참조할 수 있는 주소가 저장
String str2 = //new String (“Java”); (new) 주소 만들어라 라는 뜻
  • Heap 영역에 생성된 Object 타입의 데이터의 참조값(레퍼런스, 주소)이 할당된다.
  • 원시타입의 데이터가 값과 함께 할당된다.
  • 각 Thread 는 자신만의 stack 을 가진다.
HEAP


0X1000 = “Hello”;


하나의 메모리 주소를 참조해서 찾아가기 때문에 참조형 데이터 값이라고 부르는 것임
  • Heap 영역에는 주로 긴 생명주기를 가지는 데이터들이 저장된다. (대부분의 오브젝트는 크기가 크고, 서로 다른 코드블럭에서 공유되는 경우가 많다)
  • 애플리케이션의 모든 메모리 중 stack 에 있는 데이터를 제외한 부분이라고 보면 된다.
  • 모든 Object 타입(Integer, String, ArrayList, ...)은 heap 영역에 생성된다.
  • 몇개의 스레드가 존재하든 상관없이 단 하나의 heap 영역만 존재한다.
  • Heap 영역에 있는 오브젝트들을 가리키는 레퍼런스 변수가 stack 에 올라가게 된다.

 

참고 : https://yaboong.github.io/java/2018/05/26/java-memory-management/

'Java' 카테고리의 다른 글

[210804] 변수 종류와 개념, 추상화  (0) 2021.09.11
[210730] 배열  (0) 2021.09.11
[210728~29] 반복문 for, while  (0) 2021.09.11
[210727] 연산자, switch문  (0) 2021.09.11
[210726] printf, Scanner  (0) 2021.09.11