일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ㅔㄴ션
- 2 > /dev/null
- 추후정리
- Query
- appspec.yml
- 서브쿼리
- subquery
- AuthenticationEntryPoint
- WeNews
- 예약
- 적용우선순위
- 테스트메소드
- 참조키
- docker명령어
- 커밋메세지수정
- EC2
- ubuntu
- appspec
- MySQL
- 컨테이너실행
- application.yml
- 검색
- 테스트
- 외부키
- foreignkey
- 메소드명
- 메세지수정
- 포트
- querydsl
- 네이티브쿼리
- Today
- Total
제뉴어리의 모든것
[Section1][JAVA] 기초 본문
자바의 특징
- 운영체제에 독립적
JRE으로 인해 (디테일 하게는 JVM으로 인해) 어떤 OS에서든지 한번 작성된 JAVA 프로그램은 별도의 변환이나 수정이 필요없이 구동이 가능하다 - 객체지향 언어
자바는 모든 기능들이 클래스화 되어 있다. 그러므로 객체지향 프로그래밍이 효율적으로 가능하다 - 함수형 프로그래밍 지원
자바8부터 람다식과 스트림이 추가 되어 보다 효율적으로 함수형 프로그래밍 가능하다 - 자동 메모리 관리
쓰여지지 않는 데이터는 가비지 컬렉터에서 자동으로 메모리를 수거해간다.
JVM
자바 언어로 프로그래밍된 소스를 컴파일러가 바이트코드로 변환하고 이 바이트 코드를 JVM이 OS에 알맞는 기계어로 변환하여 준다. 그러므로 어떠한 OS 환경에서도 개발자는 OS에 따라 다르게 개발할 필요가 없다. 다만 JAVA 프로그램은 JVM을 거치기에 속도는 C, C++d과 같은 언어로 개발된 프로그램에 비해서 속도면에서 느릴수 있지만 최근 JVM 내부의 JIT 컴파일러의 최적화로 인해 많이 개선되어지고 있다
JDK
JRE : JVM + 표준 클래스 라이브러리
JDK : JRE + 개발에 필요한 도구
함수와 메서드의 차이
함수 : 코드들의 집합
메서드 : 클래스내에 존재하는 함수
변수
값이 변할 수 있는 데이터를 임시로 저장해두는 공간으로써 이름을 붙여 사용하는것
RAM이 곧 메모리이고, 메모리에는 1byte 크기의 데이터를 저장할 수 있는 셀들이 존재하고 이 셀들에게 고유값들이 존재한다.
그리고 그 고유값들이 메모리의 주소이다.
상수
재할당이 금지된 메모리공간(일종의 변수)
상수의 사용 이유:
1. 재할당이 필요 없는 변수이기때문에
프로그래머가 재할당 하는 실수를 방지
2. 코드 가독성을 위해
상수명으로 등록된 코드로 인해 가독성이 높아짐
3. 편리한 유지보수 위해
변수와 달리 코드의 어디 부분에서든지 고정된 값이 사용될것이라는 것을 알기에 해당 값을 수정 하기 위해서는
선언부분에서만 데이터를 변경해주면 되기 때문에
타입
데이터를 저장할 수 있는 메모리의 크기를 결정.
값이 저장되는 형식을 규정.
타입은 기본타입과 참조형타입으로 나뉨.
각 크기는 타입에 따라 다름.
- 기본타입 : 실제 값이 저장됨
- 참조타입 : 메모리의 주소값이 저장됨 (기본형을 제외한 모든 타입)
리터럴
표현된 그 자체의 값
정수타입
byte, short, int, long. (1byte, 2byte, 4byte, 8byte)
정수형 오버플로우, 언더플로우
- 오버플로우
자료형이 표현할 수 있는 최대값을 초과하여 표현 한 경우.
초과하면 최소값으로 순환한다. - 언더플로우
자료형이 표현할 수 있는 최소값을 미만하여 표현 할 경우.
실수타입
float, double (4byte, 8byte) (7자리, 15자리)
float 형 변수에 들어가는 리터럴은 꼭 끝에 f 추가. (double은 실수형 타입의 기본형이기 때문에 d 생략가능)
실수형 오버플로우와 언더플로우
- 오버플로우
값이 음의 최소범위, 양의 최대범위를 벗어난 경우 발.
이때 값은 무한대가 됨 - 언더플로우
값이 음의 최대값을 초과하거나 양의 최소값을 넘어갔을 때 발생. 이때의 값은 0.
논리타입
단순히 true, false 의 값만 가지는 타입이기에 1bit만도 가능하지만 jvm이 다룰 수 있는 최소 데이터 단위가 1byte이기에 1byte를 가짐
문자타입
2byte 크기의 데이터형.
오직 하나의 문자만을 저장할 수 있음. 작음 따옴표 'a' 사용.
타입변환
타입간의 변환을 의미한다
명시적 형변환과 자동 형변환이 있다
boolean은 제외된다.
- 자동형변환
타입 크기가 작은 것 -> 타입 크기가 큰것
표현 정밀도가 작은것 -> 표현 정밀도가 큰것
그러므로
byte(1byte) -> short,char(2byte) ->int(4) -> long(8) -> float(4) -> double(8) 과 같이 자동 형변환이 가능하다.
당연히 byte에서 int, long도 가능하다.
long이 float보다 큼에도 float이 표현 가능한 수의 범위가 더 크므로 자동 형변환의 원칙을 기반하여 가능. - 명시적 형변환 (Casting)
(int), (byte) 와 같이 변수 앞에 명시적으로 입력하면 된다.
String 클래스의 메서드
- String 클래스의 메서드
인자값 위치의 문자를 반환 - String.CompareTo(인자)
사전 편찬 순으로 비교.
쉽게 말해 비교할 두 문자열에서 문자가 다른 지점(인덱스)을 찾은뒤 해당 두 문자의 유니코드 값의 차이값을 출력한다.
ex:
abcd 와 zd 비교
차이가 다른 지점은, abcd 에서 a와 zd 에서 z이다.
그러므로 두 문자 a와 z의 유니코드값 차이를 출력한다.
a유니코드값- z유니코드값 - String.concat(인자)
인자로 보내진 문자열을 concat 메소드를 호출한 문자열 뒤에 추가하여 결과 문자열을 반환 - String.indexOf(인자)
인자로 보내지는 문자 혹은 문자열이 indexOf를 호출한 문자열 객체가 가르키는 문자열에서 최초 등장하는 위치의 인덱스를 반환한다. 문자열에 포함되어있지 않다면 -1 - trim()
문자열의 앞뒤 공백 제거하여 반환 - toLowerCase(), toUpperCase()
소문자, 대문자로 반환하여 줌
참조 : https://www.javatpoint.com/understanding-toString()-method
StringTokenizer 클래스
특정 구분자로 문자열을 쪼개줌.
구분자를 안 넣을 경우 그냥 빈칸이 구분자가 된다.
여기서 Token이란,
구분자로 구분되어진 문자열 하나 하나를 말한다.
- 사용 방법
StringTokenizser stn = StringTokenizer(String 쪼갤대상, String 구분자); - 멤버 메서드
- int countTokens()
남아있는 token의 개수를 반환합니다. 전체 token의 개수가 아닌 현재 남아있는 token 개수입니다.
- boolean hasMoreElements(), boolean hasMoreTokens()
두 메서드의 성능적인 차이는 없습니다. 둘다 동일한 값을 반환합니다. 메서드는 현재 위치 뒤에 있는 문자열에서 하나 이상의 토큰을 사용할 수 있는 경우 true를 반환하고 그렇지 않으면 false를 반환합니다.
- Object nextElement(), String nextToken()
이 두 메서드는 다음의 토큰을 반환합니다. 두 가지 메서드는 같은 객체를 반환하는데 반환형은 다릅니다. nextElement는 Object를, nextToken은 String을 반환하고 있습니다.
StringBuilder
- 관련 메서드
append(String) : 문자열 더하기
StringBuffer
기본적으로 여유버퍼 16을 항상 더 가지고 있음.
문자열을 저장할 수있는 Buffer를 가지고 있음.
일반적인 문자열에 + 문자열 방식으로 사용하면 속도가 느려짐.
그에 비해 StringBuffer는 문자열 결합에 효율적.
- 관련 메서드
- append(String)
문자열 끝에 더하기
- capacity()
버퍼의 크기 출력
- delete()
1. deleteCharAt(int) : 특정 위치의 문자 하나만 삭제 가능
2. delete(int, int) : 첫 인자값부터 두번째 인자값 위치 앞까지 포함하여 삭제
- insert(int, String)
첫번째 인자값 위치에 두번째 인자값 문자열을 추가함
연산자
나누기, 나머지 연산자의 우항에는 0이 올 수 없음.
- 연산도중 형변환
피연산자의 타입이 서로 다르다면
우선 형변환 (실수 데이터형이 가장 우선순위, 그다음 더 큰 크기의 데이터형 우선) 을 먼저 처리하고 연산함
유니코드, 아스키코드
유니코드 초반에 아스키코드와 동일하다
즉, 유니코드 안에 아스키코드가 포함 되어있다
'코드스테이츠 > 정리 블로깅' 카테고리의 다른 글
[Section1][Java] 객체지향 프로그래밍 기초 - 1 (0) | 2022.07.07 |
---|---|
[Section1][JAVA] 기초 - 2 (0) | 2022.07.05 |
[Section1][Git] 기초 [추후 보완] (0) | 2022.07.02 |
[Section1][Linux] 기초 [추후 보완] (0) | 2022.06.30 |
[Section1][Publishing] HTML, CSS - 2 [추후 추가 정리 필요] (0) | 2022.06.30 |