티스토리 뷰
■변수 : 저장공간
x | = | 10 |
저장공간의 이름 | 대입연산자 | 값(상수) |
대입 =
같다 ==
RAM 기억장치(메모리) : 휘발성 - 전기신호가 흐를 때 기억 / 속도가 하드디스크보다 훨씬 빠름
프로그램을 실행하면 메모리에 올라감 / 정보를 DB에 저장하고 필요할 때마다 끌어다 씀
비휘발성 : HDD(하드디스크), SSD
메모리에 변수가 할당됨
x라는 저장공간이 메모리에 할당됨(allocation)
메모리에 할당되면 고유한 주소값이 생김
■주소값 쓰는 이유
빠른 검색
영역을 넘나들 수 있음
고유한 주소값, 중복X
메모리에 영역을 나눠서 제작함(꺼내기 쉽게 하기 위해서)
영역에 맞게 저장공간이 할당됨
■자료형(type, 종류) : 저장공간의 종류 : 알맞은 저장공간에 알맞은 값을 저장하기 위해서
자료형 | type(키워드) | byte | 값 |
정수형 | int | 4 | 0, -1, 2147483647, ... |
실수형 | float | 4 | 3.1F, 0.0F, -12.05F, ... |
double | 8 | 3.1, 0.0, -12.05, ... | |
문자형 | char | 2 | 'a', '0', '가', ... |
문자열 | String | ? | "a", "0.0", "가나다", ... |
정수형 : byte(1byte) short(2) int(4)(기본 자료형) long(8)
용량을 아껴써야 하니까 값의 범위에 따라서 그에 맞는 자료형을 쓰자~ 의미로 나눠지게 됨
1byte 8bit, 전구 8개
1개 > 단위 > bit
빅데이터 : 페타바이트부터 빅데이터(테라바이트 다음)
운영체제 32bit(2의 32비트만큼 처리 할 수 있음) / 62bit(2의 62비트만큼 처리 할 수 있음)
실수 : 0.1 >> 0따로 1따로 저장되야 함 >> 4+4 = 8 >>한번에 저장하려고 double이 기본자료형
컴퓨터 만든 이유
2차 세계대전에서 전쟁에서 이기려고
■변수의 선언
자료형 변수명 = 값;
자료형 변수명;
예) int x = 10;
x라는 이름의 저장공간이 메모리에 할당되고 그 안에 10이 들어간다
선언을 할 때 처음 넣는 값 > 초기값
초기값을 넣는 작업 > 초기화
■RAM(메모리)
OS Kernel space | : 드라이버 |
Stack | : 지역변수, 매개변수 |
Heap | : 동적 메모리 |
BSS | : 직접 초기화되지 않은 전역변수 |
Data 영역 | : 전역변수, 정적변수 |
Text 영역 | : 상수, 코드 |
int x = 10;
x라는 이름의 저장공간이 RAM에 할당되고 10이라는 값이 들어간다.
■주소
int x = 10;
x라는 이름의 저장공간이 RAM에 할당되면 고유한 값이 주소값이 부여된다.
계속 실행되거나 종료되는 프로그램이 있기 때문에, 주소값이 변경될 수 있으나
중복은 없다.
C언어는 주소에 직접 접근 가능, 수정된 것도 확인할 수 있다
■변수의 사용
int data = 20; // 저장공간
앞에 자료형 또는 뒤에 대입연산자가 있으면 저장공간이다! 그래야 값을 담으니까!
data = 30; // 저장공간
뒤에 대입연산자가 있으니까 저장공간이다
System.out.print(data + 9); //값
String[] args // args는 저장공간
data = data + 7; // 저장공간, 값
data - 9; // 값
■변수 선언 시 주의사항
1. 같은 이름의 변수로 선언할 수 없다
2. 초기화를 해준다
3. 되도록 선언부에 한꺼번에 선언한다(영역 상단)
■변수명 주의사항
1. 문자로 시작해야 한다.
2. 특수문자는 사용할 수 없다. 단, _는 허용한다.
3. 되도록 소문자만 사용한다.
4. 공백을 사용할 수 없다.
goodBoy : 카멜 표기법 > java
good_boy : 파스칼 표기법, 스네이크 표기법, 팟홀 표기법 > DB
5. 되도록 한글은 사용하지 않는다. > 많이 깨짐
6. 명사로 사용한다.
7. 뜻이 있는 단어를 사용한다.
a, b, c, d, ... (X)
data, number, num, age, name, ... (O)
■변수를 사용하는 이유
1. 반복되는 값을 쉽게 관리할 수 있다.
2. 의미없는 값을 하나의 정보로 만들기 위해서 사용한다(자료구조)
----------------------------------------------
■서식문자(format)
반드시 따옴표 안에서 작성한다.
%d decimal(10진수 정수)
%o octal(8진수 정수)
%x hexadecimal(16진수 정수)
%f float(실수) / double 포함
%c character(문자)
%s string(문자열)
Q.정수의 종류에 대해서 설명해주세요
개발자) 2진법, 8진법, 10진법, 16진법.. 이런게 있습니다
일반인) 양의정수, 0, 음의정수
■출력메소드
printf() : 서식문자를 사용하여 출력할 수 있으며, 자동으로 줄바꿈되지 않는다.
==============================================================================
PM
■상수
항상 그대로인 수
값을 변경할 수 없도록 한다
final 자료형 상수명 = 값;
//final을 쓰면 변수가 상수로 바뀜
//자바jdk 4버전부터 상수는 대문자로 표시하기로 함. 약속.
■형 변환 > 자료형을 바꾸자
자료형:정수형, 실수형, 문자형, 문자열
■자동 형 변환(암묵적)
정수 + 정수 = 정수
정수 + 실수 = 실수
3 + 0.0 = 3.0
문자 + 정수 = 문자
■강제 형 변환(명시적)
(자료형)값
(double)3
일반자료형끼리
■문자열 형변환
1.다른 자료형을 문자열로
문자열과 다른 일반 자료형을 연결하면 결과는 항상 문자열이 된다
문자열""+문자열"" = 문자열""
문자열""+3 = 문자열""3
'문자열'과 '+' >> 연결!!
2.문자열을 다른 자료형으로
일반 자료형은 일반 자료형끼리만 형변환이 가능하다
문자열 타입은 클래스타입이므로, 일반 자료형의 클래스타입의 도움을 받아야 한다
Integer.parseInt(""); => 문자열에서 변환된 정수값
Float.parseFloat(""); => 문자열에서 변환된 실수값
Double.parseDouble(""); => 문자열에서 변환된 실수값
일반자료형의 클래스 타입의 도움이 필요함(Integer, Float, Double)
Integer.parseInt(); // 인티저클래스 안에 파스인트 메소드
. > ~안에 라는 연산자
==============================================================================
■입력 상태
커서가 깜빡이고 있는 상태
■입력
입력하기 전에 출력을 통해 어떤 값을 입력해야할 지 사용자에게 알려주어야 한다
■입력 클래스
Scanner sc = new Scanner(System.in); //대입연산자 뒤에는 값
String name = "김지연"; //대입연산자 뒤에는 값
■입력 메소드(콘솔창에서 커서를 깜빡여주기 위해 사용)(입력상태를 만들기 위해 사용)
next()
사용자가 입력한 문자열 값
사용자가 입력한 값 중 공백 또는 줄바꿈 문자를 구분점으로 각 문자열을 분리한다
첫 번째 문자열을 첫 번째 next()에 담고
두 번째 문자열은 두 번째 next()에 담는다
공백이나 줄바꿈을 구분점으로 사용
구분점을 기준으로 각각의 값을 따로 받음
nextline()
사용자가 입력한 문자열 값
공백 또는 줄바꿈 문자도 값으로 취급하기 때문에 그대로 입력받는다
■클래스에 있는 메소드를 사용하는 방법
1. 클래스명.
2. 변수명.
임포트 단축키
ctrl + shift + 알파벳 o
저장
ctrl + s
한번에 이름 변경
해당이름 alt+shift+r
변수 선언 시 초기화를 하자
처음에 들어갈 값을 모를 때 >> 넣는 값을 초기값
■초기값 : 어떤 값을 넣을 지 아직 모를 때
정수 : 0
실수 : 0.0
문자 : ' ' //띄어쓰기
문자열 : null 또는 ""
중간중간 변수들을 사용해서 코드를 줄이는 게 나음!
'2022 > java 2' 카테고리의 다른 글
day06[클래스, 객체화, 생성자] (0) | 2022.08.08 |
---|---|
day05[2차원배열,메소드] (0) | 2022.08.08 |
day04[반복문(while),배열] (0) | 2022.08.08 |
day03[연산자,조건문(if,switch),반복문(for)] (0) | 2022.08.08 |
day01[about JAVA,install,출력메소드] (0) | 2022.08.08 |