일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 윤성우 열혈자료구조
- Selection Sorting
- coding test
- 이것이 자바다
- JSON
- s
- stream
- 이스케이프 문자
- Graph
- R
- Algorithm
- buffer
- Serialization
- datastructure
- Stack
- C 언어 코딩 도장
- 알기쉬운 알고리즘
- list 컬렉션
- insertion sort
- 혼자 공부하는 C언어
- 메모리구조
- C programming
- 윤성우의 열혈 자료구조
- Today
- Total
목록Programming Language/Java (36)
Engineering Note
문자 연산, 그리고 숫자문자를 숫자로 변환하기컴퓨터는 내부적으로 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 변수에 “홍길동”, “여행” 문자열을 생성하여 저장하면 ..
Java에서 String은 불변 객체다. 아래처럼 String s를 만들고 "world"를 붙이면 "hello world"가 새로 만들어진다.String s = "hello";s = s + " world" StringBuilder는 String과 달리 가변이다.그래서 내부적으로 문자열을 가변할 수 있는 유용한 메서드가 많이 제공된다. 대표적으로 reverse()메서드가 있다. 당연히 받환 타입은 StringBuilder이다. String으로 변환하려면 toString() 메서드를 사용하면 된다.
BOJ에서 문제를 풀려면 입력을 받아야 하는데 그때, Java는 Scanner 객체를 사용해서 입력을 받을 수 있다. 메서드 반환 타입 입력 기준 예시 입력 설명next()String공백 기준hello world → hello다음 "단어" 한 개만 읽음nextLine()String줄 기준hello world → hello world줄 전체를 읽음nextInt()int공백 기준123 456 → 123다음 숫자(int)만 읽음nextDouble()double공백 기준3.14 2.71 → 3.14실수(double)만 읽음nextBoolean()boolean공백 기준true false → true논리값 읽음 Scanner sc = new Scanner(System.in);sc.nextLine(); 이렇게 사..
Generic 개념제네릭이란 결정되지 않은 타입을 파라미터로 처리하고, 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능. Generic을 사용하는 이유Generic은 클래스를 선언할 때, 필드나, 파라미터의 타입을 어떤 타입으로 지정해야할 지 결정할 수 없을 때 사용한다. 예를 들면, Box 클래스의 content 필드를 선언하려고 하는데 String으로 할지, List로 할지 결정 할 수 없을 때, Generic을 사용하면 Box 클래스를 사용할 때 구체적인 타입으로 정할 수 있다.public class Box { public ? Content} 그런데 이런 의문이 들수도 있다. 모든 클래스의 부모 클래스인 Object를 사용하면 자바의 다형성을 이용해서 모든 타입을 담을 수 있는것 아닌..
Object 클래스- Object 클래스는 모든 클래스의 상속계층도의 최상위에 있는 조상클래스이다. 다른 클래스로부터 상속 받지 않는 모든 클래스들은 자동적으로 Object클래스로부터 상속받는다. 만약 다음과 같은 Tv 클래스가 존재한다고 하면, 위 코드를 컴파일 하면 컴파일러는 위의 코드를 자동적으로 'extends Object'를 추가하여 Tv 클래스가 Object 클래스로부터 상속 받도록한다.class Tv { ...} 혹여나 다른 클래스로부터 상속을 받는다고 하더라도 상속계층도를 따라 조상클래스, 조상클래스의 조상클래스를 찾아 올라가다도면 마지막 최상위 조상은 Object 클래스를 만나게 된다.그동안 toString()이나 equals(Object o)와 같은 메서드를 따로 정의하지 않고도 사용..
이스케이프 문자(Escape Character)란?Java에서 문자열 안에서 또는 정규표현식에서 특별한 의미를 가진 문자나 제어 문자를 표현하기 위해 '\'(역슬래시)를 이용해 나타내는 방식. Java뿐 아니라 다른 언어에도 존재한다. 예를 들어 문자열안에서 쌍따옴표(")를 쓰고 싶으면 쌍따옴표앞에 역슬래시를 붙여준다.ex) "나는 \"자바\"를 공부한다."만약 역슬래시를 쓰지 않고 "나는 "자바"를 공부한다." 이렇게 사용한다면 "나는 " 이 하나의 문자열 처럼 인식되면서 문법 오류가 난다.또 다른 예로 문자열 안에서 정규표현식의 진짜 마침표를 표현하고 싶다면, 여기서 진짜 마침표라고 한 이유는 정규표현식에서 마침표는 또다른 의미로 특수한 의미를 가지는 문자이기 때문(정규표현식에서 마침표(.)는 모든 ..