일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JSON
- C programming
- stream
- Serialization
- 윤성우 열혈자료구조
- 이스케이프 문자
- 이것이 자바다
- buffer
- Stack
- Algorithm
- Graph
- 혼자 공부하는 C언어
- s
- 알기쉬운 알고리즘
- datastructure
- Selection Sorting
- coding test
- C 언어 코딩 도장
- insertion sort
- R
- 윤성우의 열혈 자료구조
- list 컬렉션
- 메모리구조
- Today
- Total
목록Programming Language (94)
Engineering Note
String은 내부적으로 char[]로 이루어져 있다. 다시 말해서 문자배열이라는 뜻이다. 배열은 연속된 데이터를 저장하는 자료구조인데, 그렇다면 인덱스를 통해서 값을 추출할 수도 있고, 반대로 값으로 인덱스를 찾을 있어야 할 것이다. 이러한 기능을 제공하는 메서드가 있는데, charAt과 indexOf이다. charAtcharAt의 메서드 선언부는 이렇게 생겼다.public char charAt(int index) => 메서드의 매개변수로 인덱스를 전달하면, String 에서 인덱스에 위치한 문자를 반환한다. indexOf다음은 indexOf 메서드의 선언부이다.public int indexOf(int ch) => 매개변수로 문자를 전달하면, 전달받은 문자가(내부적으로 숫자라서 int 타입) Str..
char Java의 기본형 타입이다. ''를 이용해서 문자 하나를 저장할 수 있는데 내부적으로는 유니코드에 해당하는 숫자로 저장된다. 특이하게 char는 문자면서 숫자이기 때문에 int랑 연산을 할 수 있다. 'a'는 아스키코드로 97이라서 'a'에 1을 더하고 출력하면 98이 출력된다. 그래서 출력을 위해서 공백을 추가해서 가독성을 높일 때 주의할 점이 있다. " "를 중간에 넣어주면 전체적으로 연산 순서에 따라서 형변환이 다르게 일어나서 원하는 결과가 나오지 않을 수도 있다.예를 들면 " " + 'a' + 1;을 한다고 했을 때 " " + 'a' 앞 연산에 의해서 'a'는 " a"가 되기 때문에 String + int 연산이 되면서 String이 된다.그리고 String은 모든 연산을 String으로..

배열은 생성하면 기본적으로 데이터 타입에 해당하는 기본값으로 초기화 된다. int 배열은 0으로, String 배열은 null로, boolean 배열은 false로 int[] nums = new int[]; //0으로 초기화됨String[] words = new String[] //null로 초기화됨boolean[] check = new boolean[] //false로 초기화됨 그런데 기본값이 아닌 다른 값으로 초기화를 할 경우가 있다. 그럴때는 for문을 이용해서 인덱스 길이만큼 순회하면서 초기화할 수 있다.int[] nums = new int[26];for(int i = 0; i 하지만 Arrays 객체의 fill 메서드를 사용하면 같은 방식으로 초기화 할 수 있다.int[] nums = ne..

먼저 Java가 컴퓨터에 설치가 되어 있어야 한다. java --version 명령어가 실행된다면 자바가 잘 설치 된거다.vi나 nano 에디터 파일을 열어서 java 파일을 만들어준다.나는 vi 에디터로 아래와 같이 작성해주었다. HelloWorld.java 이때 .java 파일명과 class 명은 동일 해야 한다. java 파일을 만들었다면, javac 명령어로 컴파일해준다. 컴파일을 해주면 .class 파일이 생성된다. ls 명령어로 확인한 HelloWorld.class 파일 생성 컴파일한 .class은 java명령어로 직접 실행할 수도 있다.

C언어, Python, Java를 배울 때 C언어가 어렵다는 말이 많은데 오히려 나는 Java가 초심자들에게는 배우기 가장 어려운 언어 같다. OOP라는 다소 철학적인 개념도 나오고 접근제어자 등 이해해야 할 개념이 많기 때문이다. 그 중에서 맨처음에 Hello World를 찍으면서 나중에 정리해야지 했던 개념을 다시 정리해보려고 한다. 그중에서 아래 개념은 Java를 처음 접하고 좌절을 안겨주었던 내용이다. public static void main(String[] args) public public은 우선 접근제어자로 정보의 캡슐화 등을 위한 설정 키워드다. Java는 기본적으로 객체지향의 철학을 바탕에 둔 프로그래밍 언어라서 '프로그램세계는 객체들 간의 협력으로 이루어지고, 객체는 각자 역할과..
문자 연산, 그리고 숫자문자를 숫자로 변환하기컴퓨터는 내부적으로 0과 1밖에 모른다. 그런데 우리는 숫자보다 일반 문자가 편하다. 숫자를 문자로 변환해야 한다. char는 16바이트고 int는 32바이트를 저장할 수 있다. char, int 타입은 둘 다 숫자를 저장하는데 char는 ''를 통해 하나의 문자를 담는데 이때 ''에 남긴 문자를 유니코드(문자, 숫자 변환 표로 정해놓은 규칙)에 따라 숫자로 바꾸어서 저장한다.그리고 char는 숫자처럼 연산할 수 있다. 'A'는 유니코드로 65인데 'A' - 2를 하면 63이 되고 int에 형변환 없이 저장할 수 있다. (=> char + char는 int)그래서 '2' 숫자 처럼 보이는 '2' 문자를 진짜 2로 변환하려면 '2' - '0'을 해주면 2로 변환..
String 클래스의 공백 제거 메서드는 두 가지가 있다. trim()과 strip()strip()은 Java 11부터 추가된 메서드다. trim은 아스키 코드 기반의 whitespace만 제거가 가능한데 비해 strip()은 유니코드기반까지 포함한다. 공백에는 \t, \n " " 등이 있는데 유니코드에는 \u2002, \u00A0, \u3000 등고 공백이고 trim으로는 이런 공백은 제거할 수 없다.공백 기준으로 문자열을 나눌 때도 주의할 사항이 있는데, split()메서드에서 split(" ");를 사용하면 " "공백 하나를 기준으로 문자열을 나누기 때문에 정규표현식을 사용하면 좋다. 공백을 나타내는 정규표현식은 \s이다. 쌍따옴표 안에서 사용하려면 \\s로 사용할 수 있고 연속된 공백은 \\s+로..
5.2 메모리 사용 영역Java 명령어로 JVM이 구동되면 JVM은 운영체제에서 할당받은 메모리 영역을 다음과 같이 구분해서 사용한다. 메소드 영역바이트코드 파일을 읽은 내용이 저장되는 영역으로 클래스별로 상수, 정적 필드, 메소드 코드, 생성자 코드 등이 저장된다. ⇒ 바이트 코드 파일의 내용이 저장되는 영역. 힙 영역객체가 생성되는 영역.객체의 번지는 메소드 영역과 스택 영역의 상수와 변수에서 참조할 수 있다.스택 영역메소드를 호출할 때마다 생성되는 프레임이 저장되는 영역.메소드 호출이 끝나면 프레임은 자동제거 된다.프레임 내부에는 로컬 변수 스택이 있다.Java의 문자열은 String 객체로 생성된다. String 변수 name과 hobby 변수에 “홍길동”, “여행” 문자열을 생성하여 저장하면 ..