규칙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.2를 10으로 자동 변환하면 데이터 소실)
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 |