본문 바로가기

자바6

jvm구조, 리플렉션 jvm 구조 jvm에는 크게 클래스로더 시스템, 메모리, 실행 엔진등이 있다 클래스 로더 시스템 클래스로더가 .class에서 바이트코드를 읽고 메모리에 저장 클래스로더에는 로딩, 링크(레퍼런스를 연결하는 과정 ), 초기화 작업(static 값들 초기화 및 변수에 할당)이 있다 클래스로더에서 로딩 로더가 .class 파일을 읽고 바이너리 데이터를 만들고 "메소드 영역"에 저장(클래스, 인터페이스이름, 메소드와 변수를 저장) 로딩이 끝나면 해당 클래스 타입의 Class 객체를 생성해서 "힙"영역에 저장 메모리 메모리에는 스택, pc, 힙, 메소드등이있다. 메소드 영역에는 클래스 수준의 정보저장(클래스이름, 부모 클래스 이름, 메소드, 변수), 공유자원이다 힙영역은 객체를 저장, 공유자원 메소드, 힙 영역을 .. 2021. 12. 29.
lambda, stream, innerclass lambda 람다식은 자바에서 함수형 프로그래밍을 구현하는 방식이다. 함수형 프로그래밍이란 순수함수를 구현하고, 외부 자료에 부수적인 영향을 주지 않고 매개 변수만을 사용하도록 만든 함수이다. 밑의 예에서 MyNumber라는 인터페이스가 존재한다, 변수에 람다식을 넣은 것이다. 이후 변수가 인터페이스의 getMaxNumber를 사용한다. 람다식이 간편해보이는데, 자바는 객체지향언어이다. 어떤 작업이든 객체를 생성한다, 그래서 람다식도 내부적으로 객체를 생성하여서 값을 넘겨준다. public class TestMyNumber { public static void main(String[] args) { MyNumber maxNum = (x, y) -> (x >= y) ? x : y; int max = max.. 2021. 12. 22.
split(), StringTokenizer 차이 자바에서 문자열을 구분할 때 split도 있고, StringTockenizer도 있다. spit이 짧아 보이는데 왜 StringTokenizer을 많이 사용하나? split 지정한 구분자로 문자열을 나눠 배열에 저장한다. 만약 "a,b,,c"가 있을 경우 split을 사용하면 결과과 a, b, , c 공백문자열도 포함하여 데이터가 나뉜다. StringTokenizer StringTokenizer는 공백도 포함해서 데이터가 나뉘는 것이아니라 구분자를 통해서 나뉘어진다-> 위에서 a, b, c 딱딱 나뉘어진다. 출처 : https://lnsideout.tistory.com/entry/JAVA-%EC%9E%90%EB%B0%94-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%9E%90%EB%A5%B4.. 2021. 12. 21.
cpp vs java (비교) 최대 최소 cpp에서 최대, 최소 값들을 넣을 때 #include를 선언해서 INT_MIN, INT_MAX를 사용했다. 자바에서는 따로 선언할 필요가 없다 각 클래스마다 MIN_VALUE, MAX_VALUE가 존재한다 예시를 보자 System.out.println(Integer.MIN_VALUE); System.out.println(Long.MIN_VALUE); to_string cpp에서 숫자를 문자열로 바꿀 때 to_string을 사용한다 자바에서는 Integer.toString()을 사용하거나, String.valueOf()를 사용하면된다 예시 1번 String str1 = String.valueOf(intValue1) 2번 String str1 = Integer.toString(intValue1).. 2021. 12. 10.