일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- securityconfig
- HttpSecurity
- 스프링시큐리티
- Spring Security
- ㅇㅇㅇㄴㅇ
- WebConfigurerAdapter
- ㅂ
- 스프링 #스프링 시큐리티 #spring security
- WebSecurity
- Session1이 그 모든 클라이언트의 저올
- Today
- Total
다오의 개발일지
TIL-9 자바 기초 변수, 문자열, 형변환 본문
프로그램 언어란?
사람이 컴퓨터와 소통하기 위해 만든 도구 컴퓨터는 0과1만을 이해할 수 있다.
A언어
핵심기능 입/출력, 문맥
*시스템 : input과 output이 있는 것
B언어
A언어 기능 + 기계식 데이터 타입, 연산기능, 메서드
*메서드 : 행동을 정의한 것
C언어
B언어 기능에 다향한 데이터타입을 정의하고 자료구조에 담을 수 있는 언어
Java
C언어 기능+ 공통 실행환경, 클래스, 객체
C언어 기능에 여러 기기에서 실행가능 하도록 도와주는 공통실행환경, 그리고 데이터와 메서드를 담은 클래스를 통해 객체를 만들 수 있는 언어
공통 실행환경이 있어서 여러 기기에서 실행 가능합니다.
여러 기기의 운영체제에서 실행할 수 있는 언어
특히 앱개발에 적합
- 자바는 세상과 닮아있는 개발언어라서 코드를 이해하기 쉽고 유지 보수가 쉽다.
- 안정성이 높아 오류 방지하고 보안상 안전
- 대규모 앱 개발이 가능
- 자바를 배우면 다양한 개발 도구와 라이브러리를 사용 가능
JVM이란?
Java Virtual Machine 자바 가상 머신
여러가지의 기기위에 자바프로그램을 실행 시킬 수 있는 가상의 기기를 만들어주는 걸 의미한다.
어디서든 어떤 환경에서든 자바코드를 구동할 수 있게 되었다.
바이트 코드 = .class 파일, 운영체제가 읽을 수 있는 코드
Java 컴파일러 = .java를 .class로 변환해주는 파일
인터프리터 = 운영체제가 읽은 바이트코드(.class)를 기계가 실행할 수 있는 기계어로 번역
JIT 컴파일러
인터프리터의 효율을 높여주는 서포터 해석기
메모리 영역
Java 데이터를 저장하는 영역
운영체제로부터 JVM이 할당 받은 메모리 영역
클래스 로더
Java .class 바이트 코드를 메모리 영역으로 담는 운반기
JVM으로 .class 파일을 불러와서 메모리에 저장함
가비지 컬렉터
Java 쓰레기청소기
메모리영역에서 안 쓰는 데이터를 주기적으로 흡수해가는 청소기
Runtime = 프로그램이 실행중인 상테
Runtime System = 프로그램이 실행중인 상태를 관리하는 시스템


JVM을 설치하기 위해선 JRE를 설치해야한다.
하지만 이는 자바 프로그램을 실행만 시킬 수 있다. (.class파일만 실행가능)
JDK가 javac 명령을 통해 .java파일을 실행가능한 .class파일로 변환해준다.
JDK?
Java Development Kit 즉, 자바 개발 키드
JDK는 JRE(JVM)의 기능을 포함하고 있다.
.java 파일을 .class파일들로 변환해주는 자바 컴파일러 기능이 있다.
코드를 디버깅하는 jdb 등 기능이 있다.
JDK의 디버깅
내가 작성한 코드 라인에 '중단점'을 설정하고 디버그 모드로 프로그램을 실행하면 프로그램이 중단점의 코드라인을 수행할 때 프로그램 흐름이 일시정지되며 변수들을 볼 수 있게 도와준다.
정리.
JDK
compiler : .java -> .class 변환해주는 번역기
JRE : Java Runtime Environment
JDB : 디버깅
main 메서드 : 자바 프로젝트는 제일 먼저 클래스의 main 메서드를 실행시킨다 = JVM 약속
public : 제어자, 어디까지 접근하게 할지를 정한다. 공공의 공통의, 어디서든 접근 가능하다. 외부에서도 실행 시킬 수 있다.
static : 프로그램이 실행될 때 무조건 실행이 된다.
void : output이 없는 메서드
객체 : 특징(속성, 변수), 행동(메서드)
System.out.println()
.은 하위요소를 표현할 때 사용하는 것
데이터타입에는 크게 2가지가 있다 기본형과 참조형
기본형 : 숫자형, 문자형, boolean 등
참조형 : 어딘가에 별도로 저장한 주소 값을 참조하는 식
기본형 변수
문자형 변수 : char
정수형 변수 : byte short int long
실수형 변수 : float, double
실수는 표현범위가 매우 넓어서 정수형 변수에서 담지 못할 수 있다.
부동소수점 : 1.xxx * 10^n
고정소수점 : 2.125
Float 가 long보다 더 넓은 범위를 표현하기 때문에 자동 형변환이 안된다.
참조형 변수
공간에 대한 주소값을 저장해 놓는 곳
문자열 변수 : String
Object, Array,List 등
래퍼 클래스 변수 : 기본형 변수를 랩핑(감싸)변수 라고 생각하면 된다.

한번 감싸면 래퍼클래스를 통해서 가지고 있는 유용한 기능들(메서드)를 사용할 수 있다.
형변환 등
1byte = 8bit
Bit = 0,과 1을 표현 즉 1byte는 2^8승
숫자와 문자
문자는 어떻게 숫자로 저장할까?
자바에서는 기본적으로 아스키 코드라는 규칙 으로문자를 저장하고 있다.
아래의 중요한 세가지 숫자는 꼭 기억하자
숫자 0 은 아스키코드로 48이다
알파벳 A는 아스키코드로 65이다
알파벳 a는 아스키코드로 97이다
기본형과 참조형의 차이
선언 관점에서 차이점
문자 : 기본형
char alpahabet = 'A' //문자 하나를 저장
문자 뒤에\0(널문자)가 없다
1byte만 쓰기때문에 끝을 알아서 할 필요가 없다.
문자열 : 참조형
String message = "Hello Workld";
문장의 끝에 \0(널문자)가 함께 저장이 된다.
몇 개의 byte를 쓸지 모르기 때문에 끝을 표시해야 한다.
참조형?
참조형 변수 = 주소형 변수?
다른 기본형 변수가 실제 값을 저장하는 저장공간 이라면 참조형 변수는 실제값이 아닌 원본값의 주소값을 저장한다.
다시말해 참조형 변수는 주소값을 조장하는 주소형 변수라고도 한다.
저장관점에서 차이점
기본형 변수 : 원본값이 Stack 영역에 있다.
참조형 변수 : 원본값이 Heap 영역에 있다.

Heap영역은 참조형 변수를 위한 별도 공간이다.

비트&바이트
왜 바이트를 만들어 냈는가?
모든 데이터를 1bit단위로 저장하게 되면 비효율적인 리소스낭비가 되기 때문
Bit
0,1 형태의 2진수 데이터로써 컴퓨터가 저장할 수 있는 최소단위
정수형 값은 10진수 숫자이며 2진수Bit로 표현(저장)한다.
4개의 Bit로 16진수 숫자범위를 2진수Bit로 표현(저장)한다. 0010
Byte
8개의 비트로 구성 되어있다
1Byte내에서 숫자 변수는 Bit 2진수를 10진수로 표현(저장)한다.
10진수로는 0~255까지 표현(저장)한다.
1Byte내에서 문자 변수의 경우만 Bit 2진수를 16진수로 표현(저장)한다.
변수 타입 바꾸기(형 변환)
//실수 -> 정수
double doubleNumber = 10.1010;
float floatNumber = 10.1010f;
Int inNumber;
intNumber = (int) doubleNumber;
// 정수 -> 실수
Int intNumber = 10;
Double doubleNumber = (double)intNumber;
//변수 타입별 크기 순서
Byte(1) -> short(2) -> int(4) -> long(8) -> float(4) -> double(8)
//문자열 -> 정수 or 실수
래퍼클래스로 감싼다음에 형변환이 가능하다.
String value = "10";
Int intNumber;
intNumber = Integer.parseInt(value);
//정수로 나누기
Int intNumber = 10;
Int iResult = intNumber / 4;
답 = 2
//실수로 나누기
Int intNumber = 10;
Double dResult = intNumber/ 4.0
답 = 2.5
//정수 or 실수 -> 문자열
String 클래스로 감싼다음에 형변환이 가능하다.
Int intNumber = 10;
String value;
value = String.valueof(intNumber);
'JAVA' 카테고리의 다른 글
Java.lang 패키지, java,util 패키지에서 자주 사용하는 클래스 (1) | 2023.05.30 |
---|---|
String / StringBuilder / StringBuffer 차이점 & 성능 비교 (0) | 2023.05.29 |
TIL-13 자료구조 활용해 레시피 메모장 만들기 (0) | 2023.05.23 |
TIL-12 컬렉션 Set, Map, List, ArrayList, Queue, Stack (0) | 2023.05.23 |
TIL-11 얕은 복사, 깊은 복사 (0) | 2023.05.23 |