일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹 프레임워크
- 덧셈 암호
- 개인정보보호교육
- package.json
- function scope
- 확장 유클리드 알고리즘
- 한국정보보호산업협회기자단
- 동적타이핑
- 호이스팅
- 디오판투스 알고리즘
- 개인정보안전성
- pwnable.tw
- Writeup
- 마감임박
- 국가인적자원개발컨소시엄
- 포너블
- 모듈러 연산
- arrow function
- 곱셈 암호
- 무료교육
- 백엔드
- 개인정보보호
- node.js
- 백엔드입문
- package-lock.json
- 한국산업인력공단
- 유클리드_알고리즘
- 가명정보처리
- 개인정보보호위원회
- 한국정보보호산업협회
- Today
- Total
짱짱해커가 되고 싶은 나
Ch3. Fundamental programming structures in Java (1) 본문
3.1 a simple java program
public : 다른 클래스에서 접근이 가능
class : 모든 것은 클래스 내에 포함되어 있어야 한다.
FirstSample : 클래스 이름, CamelCase
source code의 파일 이름은 class name으로 저장해야 한다. ex) FirstSample.java
main : JVM이 처음 실행되는 부분
static : Ch.4에서 다루겠음
System.out이라는 객체가 이것의 함수인 println을 호출.
- Java에서 method를 호출하는 snytax : object.method(parameters);
파라미터의 수는 0,1,2 ..
parenthese(괄호)는 파라미터가 없어도 필요함. ex) System.out.println();
Naming Convention
- CamelCase : 단어가 합쳐진 부분마다 맨 처음 글자를 대문자로 표기.
- lowerCamelCase : 맨 앞글자는 소문자
- UpperCamelCase(PascalCase) : 맨 앞글자도 대문자
- snake_case : 단어가 합쳐진 부분마다 _ 을 붙여주는 표기 방법.
Command line
- javac : 컴파일 명령어 (source -> byte code), byte code(.class) source code폴더와 같은 폴더 내에 자동으로 저장됨.
- java : 프로그램 실행 명령어 -> class 함수 중 main함수를 찾아서 JVM 실행
3.2 comments
comment라인은 실행되지 않는다.
1. single-line comments : //
2. multi-line comments : /* */
3. Documentation comments to generate documents automatically : /** @ */
3.3 Data Types
Java : strongly typed language
∴ 모든 변수들은 type이 선언되어야 한다.
8개의 primitive type이 존재한다. 자바는 unsigned type이 존재하지 않는다.
- 6 numeric types
- 4 integral types : int, short, long(L), byte
hex : 0x binary : 0b
- 2 floating-point types : float(F), double(default)
Double.POSITIVE_INFINTY, Double.NEGATIVE_INFINITY, Double.NaN(숫자가 아님)
- character type : char (for Unicode system) , UTF-16 코드 단위를 조작하지 않는 한 사용 비추
Unicode System : 세계의 사용되는 언어들을 표현할 수 있는 전 세계적으로 보편적인 인코딩
UTF-16 encoding에 code unit이 설명되어 있음.
code point : 코드 값 : encoding system에 의해 결정된다.
Unicode standard에서는 code point는 hexademical이면 U+ 로 표시된다.
UTF-16 : 모든 unicode charter는 1/2개의 code unit을 필요로 한다.
: variable length code로 모든 유니 코드 포인트를 나타낸다.
- boolean type : true/false
int type과 Boolean type간의 전환은 없다.
C/C++에서는 number, pointer도 불린 값으로 사용 될 수 있다. ex) 0 = false
String type : primitive type은 아니지만 library에 정의된 클래스이다.
3.4 Declaration of Variables
syntax : <data type> <variable name>
변수는 사용되기 전에 초기화 되어야 한다
final : 한 클래스 내의 한 method에서 local constant로로 사용하도록 하는 keyword.
static final : 한 클래스 내의 모든 method에서 전역으로 사용하도록 하는 keyword.
3.5 Operators
a) usual arithmetic operators : + - * / %
b) prefix and postfix operators : ++ --
c) relational operators : == != < <=
d) logical(boolean) operators : && || !
e) ternary operator : a : b ? c : d
f) bitwise operator : & | ^ ~
java.lang.Math : 다양한 math function 존재
System.out.println과 math 함수 호출의 차이점은 정적/ 동적 함수
- Automatic type conversion(widening)
점선 : 이전 값을 변환하면서 손실 발생
실선 : 손실 허용 X
- Casting : 강제 형변환
Math.round(x) : return long data tye
enum : 서로 관련 있는 상수들을 모아 심볼릭한 명칭의 집합으로 정의한 것(ch.5에서 자세히)
syntax: enum <NameofEnumaration> {nominal1, nominal2 ..};
3.6 Strings and substrings
Java에는 내장된 문자열 유형이 존재하지 않다.
하지만, 표준 library에 String이 정의 된 호출이 포함되어 있다.
-> java.lange.String
Java의 String은 Unicode characters의 연속이다.
ex) String literals "Java\u2122" -> J,a, v, a ,TM(trade mark) \u2122 = U+2122
각 각의 "" string은 String class의 instance이다.
String 클래스의 substing 함수를 이용해 더 큰 문자열에서 하위 문자열을 추출(extract) 할 수 있다.
ex) String greeting = "Hello";
String s = greeting.substring(0,3); == s = "Hel"
(a, b) : position = start~ length-1, last position is excluded.
length = b - a
+ : 두 string을 합치는데 사용 됨.
만약 하나의 operand가 string이 아니라면, string으로 변환된다.
ex) int age = 13;
String rating = "PG" + age; (rating = "PG13")
String 클래에는 기존 문자열에서 문자를 변경하는 방법이 없다.
→ String class의 객체는 immutable(변경 불가) : String 인스턴스는 생성할 때 메모리 힙 영역에 할당되어 변경 불가능
ex) String greeting = "Hello"; //greeting은 stack의 변수고, Hello는 heap의 객체이다.
greeting = greeting.substring(0,3) + p! //greeting = "Hel!p" , 새로운 인스턴스
-> Hello 인스턴스가 바뀐 것이 아니다.
String 객체의 immutablitiy로 인해 두 개의 메모리 공간(stack memory area, heap momory area)을 고려해야 한다.
또, stack memory의 reference variable과 heap memory의 한 클래스의 객체의 차이를 알아야 한다.
StringOne.equals(StringTwo) : 둘이 같으면 1 반환 (대소문자 구별)
StringOne.equalsIgnoreCase(StringTwo) : 대소문자 구별 X
ex) String greeting = "Hello";
"Hello".equals(greeting);
"hello".equalsIgnoreCase(greeting);
※ 문자열 비교를 == 이 아니다.
※ Empthy string(길이가 0) != Null String
empthy string : heap area에 있는 java object다.
null은 스택 영역의 문자열 참조 변수에 해당하는 heap의 객체가 없는 특별한 값이다.
ex) String str =" ";
str.equals(" ");
str.length == 0;
ex) String str = NULL;
str == null; (null의 경우 생성되지 않은 인스턴스이기 때문에 메소드를 사용하는 .equals는 사용 불가능)
'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 (2) (0) | 2019.10.08 |
Ch2. Java programming environment (0) | 2019.10.07 |
ch.1 introduction to java (0) | 2019.10.07 |