일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백엔드
- 확장 유클리드 알고리즘
- package.json
- 웹 프레임워크
- node.js
- 한국정보보호산업협회
- 디오판투스 알고리즘
- 덧셈 암호
- 한국정보보호산업협회기자단
- 유클리드_알고리즘
- Writeup
- 마감임박
- 백엔드입문
- 개인정보보호위원회
- 가명정보처리
- package-lock.json
- function scope
- 한국산업인력공단
- arrow function
- 개인정보보호교육
- 호이스팅
- pwnable.tw
- 개인정보보호
- 무료교육
- 모듈러 연산
- 포너블
- 개인정보안전성
- 곱셈 암호
- 동적타이핑
- 국가인적자원개발컨소시엄
- Today
- Total
짱짱해커가 되고 싶은 나
Ch3. Fundamental programming structures in Java (2) 본문
3.6 String & substring
character encoding system에서 code point/code position은 code space를 구성하는 숫자 값이다.
Unicode encoding은 1, 114, 112 cod points를 갖고 있다. 0x0~ 0x10FFFF
Unicode code space는 17개의 code planes로 나뉘고, 각 플랜은 65,536개의 code points를 지닌다.
-> Unicode의 total size = 17 * 65,536 = 1,114,112이다.
+) 특정 code space는 다른 인코딩 체계로 인코딩 가능.
ex) UTF-8, UTF-16, UTF-32
a) U+0000 ~ U+007F (128)
- UTF-8(8bit), UTF-16(16bit), UTF-32(32bit)
b) U+0080 ~ U+07FF (1,9200)
- UTF-8(16bit), UTF-16(16bit), UTF-24(32bit)
codePointCount(a,b) : code point의 수 반환
ex) String greeting = "Hello";
int cpCount = greeting.codePointCount(0,greeting.length());
charAt() : string의 특정 위치의 code unit을 반환
ex) char first = greeting.charAt(0); // first = "H"
char last = greeting.charAt(greeting.length()-1); //last = "o"
offsetByCodePoints(a,b) : a에서 b만큼 이동한 위치인 code point 리턴.
codePointAt(a) : a의의 code point 리턴.
codePoints().toArray() : code point 전체 반환
ex) int index = greeting.offsetByCodePoints(0,i);
int cp = greeting.codePointAt(index);
int codePoints = greeting.codePoints().toArray();
String class에는 50개 이상의 함수가 포함되어 있다.
java.lang.String : 매번 새로 생성
java.lang.StringBuffer : 문자열 추가/변경 할 때 사용. memory에 append. 클래스 직접 생성 X
java.lang.StringBuilder : 변경가능한 문자열, synchronization 적용X
3.7 Console Input and Console Ouput in Java
output - System.out.println()
input - java.util.Scanner 클래스에 standard input stream oject를 파라미터로 사용.
ex) import java.util.Scanner;
Scanner in = new Sanner(System.in);
System.out.print("What is your name?");
String name = in.nextLine(); //한 줄 읽기
String name = in.next(); //한 단어 읽기
nextInt(), nextDouble() . . .
System.out.printf(x) : 총 8자 = 앞 공백 + 7자(.도 포함)
System.out.printf("%8.2f",x) : 총 8자 = 소수점 아래 2자리 포함
System.out.printf(String.foramt("%s %s", "korea", "japan")) : korea japan
System.out.printf(String.format("%10s%10s","korea","japan")) : korea japan
Systme.out.printf(String.foramt("%2$10s%1$10s","korea","japan")) : japan korea
System.out.printf(String.foramt("%-10d%-10d", 12345, 67890)) : 12345 67890
File input & Output
import java.io;
import java.nio.path;
파일 읽기 = scanner 객체 생성 -> scanner class의 함수 이용해 읽기
파일 쓰기 = printwriter 객체 생성 -> printwriter class의 함수 이용해 쓰기
3.8 Control Flow
조건문과 반복문 지원.
다음은 C언어와 유사하다.
block scope and nested block(블록 범위, 중첩 범위)
conditional statements
loops
determinate loops
multiple selectoin - switch
statements that break control flow
3.9 Big Numbers
int 및 float type의 정밀도(precision)를 높이려면 java.math 패키지의 BigInteger 및 BigDecimal 클래스 사용.
: + - * / % 등의 연산자 사용 불가, 대신 add(), substract() 등의 함수 이용
3.10 Arrays
한 배열 내에는 같은 type의 많은 요소들이 저장되어 있는 data structure이다.
syntax : <data type><[ ]> <name>;
ex) int[] a; //실제 배열은 생성되지 않음
int[] a = new int[100]; //new operater : heap area에 실제 배열 생성
int[] smallPrimes = {2,3,5,6,11,13}; //new operator 없이 초기화
Traditional for Loop and Enhanced for Loop
ex1 : Traditoinal Loop
for(int i=0; i< a.length; i++)
System.out.println(a[i]);
ex2 : Enhanced Loop
for(int element : a) //syntax : <변수 선언> : <배열/배열을 리턴하는 함수>
System.out.println(element)
new 변수를 만들지 않고 기존배열을 re-initialize 하기 위한 방법
case1) int[] smallPrimes = {2,3,5,7,11,13};
smallPrimes = new int[] {17,19,23,29,311,37};
case2) int[] smallPrimes = {2,3,5,7,11,13};
int[] LuckyNumbers = {17,19,23,29,311,37};
smallPrimes = LuckyNumbers;
Shall copy(call by reference) : 배열 변수를 복사하면 동일한 힙 영역의 배열 객체에 대한 두 개 참조가 스택에 생성.
ex) int[] luckyNumbers = smallPrimes;
Deep copy(call by value) : java.util.Arrays 클래스의 copyOf함수 이용, 힙 영역의 새로운 복사본 객체 생성.
ex) int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length);
Array Sorting
java.util.Arrays 클래스의 sort() 함수 사용.
- static void sort(type[] a);
- static int binarySearch(type[] a, type v);
- static void fill(type[] a, type v);
- static Boolean equals(type[] a, type[] b);
- static type[] copyOf(type[] a, int length);
Multidimensional Arrays
배열의 배열처럼 보이지만 실제로는 하나의 배열만을 갖고 있다.
balances[i][j]가 있다고 했을 때, balances[i]는 original array의 i번째 subarray다.
balances[i][j]는 i번째 subarray의 j번째 요소를 나타낸다.
int[][] magicSquare = {{1,3,4,5},{2,4,2,1},{3,4,6,8}.{4,5,7,6}};
int[][] magicSquare = new int[Rows][Columns];
for(int[] row : magicSquare){
for(int element : row){
}
}
Ragged arrays : row마다 다른 길이를 갖고 있는 배열
ex) int[][] odds = new int[7][];
for(int n=0; n<7; n++)
odds[n] = new int[n+1];
'programming > java' 카테고리의 다른 글
Ch.4 Objects and classes (2) (0) | 2019.10.09 |
---|---|
Ch4. Objects and Classes (1) (0) | 2019.10.09 |
Ch3. Fundamental programming structures in Java (1) (0) | 2019.10.08 |
Ch2. Java programming environment (0) | 2019.10.07 |
ch.1 introduction to java (0) | 2019.10.07 |