[JAVA](11)
-
TDD란? - Test-Driven-Development
TDD란? 테스트 주도 개발(Test-driven development TDD)은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. TDD는 단순한 설계를 장려하고 자신감을 불어 넣어 준다. 프로그래밍 순서 빨강 - 실패하는 작은 테스트를 작성한다. 처음에는 컴파일조차 되지 않을 수 있다. 초록 - 빨리 테스트가 동과하게끔 만든다. 이를 위해 어떤 죄악을 저질러도 좋다. 리팩터링 - 일단 테스트를 통과하게만 하는 와중에 생겨난 모든 중복을 제거한다. 원칙 1. 실패하는 단위 테스트를 작성할 때까지 구현 코드(production code)를 작성하지 않는다. 2. 컴파일은 실패하지 않으면서 실행히 실패하는 정도로만 단위 테스트를 작성한다. 3. 현재 실패하는 테스트를 통과할 정도로만..
2022.01.28 -
[JAVA ] Static이란? 정적 변수 정적 메소드에 관하여
1. Static Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미한다. 이를 정확히 이해하기 위해서는 메모리 영역에 대한 이해가 필요. [Static의 메모리] 일반적으로 개발자가 만든 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성된다. 객체의 생성시에 할당된 Heap영역 메모리는 GC(Garbage Collector)를 통해 수시로 관리를 받는다. 하지만 Static 키워드를 통해 Static영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만, Garbage Collector의 관리 영역 밖에 존재하므로 Static을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된..
2021.11.17 -
[Java] 인터페이스와 추상클래스의 차이
추상클래스란? 일반적으로 Java에서 클래스는 2가지로 구분된다. (일반 클래스와 추상 클래스) 추상 클래스는 0개 이상의 추상메소드(아직 구현되지 않은 자식이 구현할)를 가지고, 일반 메소드, 일반 변수 또한 가질 수 있다. 그렇기에 인터페이스 역할도 하면서, 구현체도 가지고 있는 돌연변이 같은 클래스이다. 선언 시 키워드는 abstract 키워드를 사용한다. - 추상클래스는 인스턴스화 할 수 없다. 즉 추상클래스는 상속을 의미함으로써 물려주는 개념이 된다. 그렇기에 부모-자식 관계인 계층 구조를 나타낸다. abstract class Animal { abstract void bark(); void feed(){ } } 인터페이스란? 인터페이스는 쉽게 말하면 껍데기라고 말할 수 잇고, 설계도 또는 명세서..
2021.11.16 -
[JAVA] String 문자열과 StringBuilder, StringBuffer의 비교
Java에서 문자열을 다루는 클래스는 String, StringBuilder, StringBuffer가 있다. 문자열의 연산이 많이 발생할 때를 생각하면 위 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해야 한다. String과 StringBuffer/StringBuild 클래스의 가장 큰 차이점은 String은 불변(immutable)의 속성을 갖는다는 점이다. String str = "Hello"; str+=" world"; 위의 코드를 보면 문자열 str이라는 변수가 Hello world로 변경된 것으로 착각할 수 있다. 하지만 기존에 "Hello"값이 들어가 있던 String 클래스의 참조변수 str이 "Hello world"라는 값을 가지고 있는 새로운 메모리영역을 가리키게 변경되고..
2021.11.16 -
[Java] Java파일의 컴파일 과정
자바는 OS에 독립적인 특성을 가지고 있다. 그게 가능한 이유는 JVM(Java Virtual Machine) 때문이다. JVM의 어떤 기능 때문에 OS에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 통해 알아보자. 자바 컴파일 순서 1. 개발자가 자바 소스코드(.java)를 작성합니다. 2. 자바 컴파일러가 자바 소스코드(.java)파일을 읽어 바이트코드(.class)코드로 컴파일 합니다. 바이트코드(.class)파일은 아직 컴퓨터가 읽을 수 없는 JVM(자바 가상 머신)이 읽을 수 있는 코드입니다. (java - > class) 3. 컴파일된 바이트코드(.class)를 JVM의 클래스로더(Class Loader)에게 전달합니다. 4. 클래스 로더는 동적로딩(Dynamic Loading)을 통해 ..
2021.11.16 -
[Java] 직렬화(Serialization)
직렬화를 알아보기 전에 Primitive Type과 Reference Type을 간단히 알아보자. Primitive Type은 원시 자료형으로 int, bool, char, short, double과 같은 자료형을 말한다. Reference Type은 Primitive Type을 제외한 타입들이 모두 Reference Type이다. 클래스 타입, 인터페이스 타입, 배열 타입, 열거 타입 등이 있다. 필자는 시리얼라이제이션을 데이터 클래스를 직렬화 할 때 사용한다. 그 이유는? 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트 형태로 데이터를 변환해야 하기 때문이다. 각자 PC의 OS마다 서로 다른 가상 메모리 주소 공간을 갖기 때문에, Reference ..
2021.11.16 -
[Java 진법 변환]2진수-10진수 8진수-10진수 16진수-10진수
String binary = Integer.toBinaryString(127); // 10진수 127을 2진법String으로 String octal = Integer.toOctalString(127);// 10진수 127을 8진법String으로 String hex = Integer.toHexString(127);// 10진수 127을 16진법String으로 System.out.println(binary); System.out.println(octal); System.out.println(hex); 결과값 : 1111111 177 7f int b = Integer.parseInt(binary, 2); // (10진법으로 바꾸길 원하는 문자열, 원래 몇 진법인지) int c = Integer.parseInt..
2021.11.11 -
[Java String 클래스] String 클래스 완벽 정리 substring,split ..
Java String 클래스에 포함된 메소드를 어떻게 사용하는지 알아보겠습니다. 1. startsWith String str = "apple"; boolean startsWith = str.startsWith("a"); System.out.println("startsWith : " + startsWith); 결과값 : true startsWith("a") 해당 문자열이 a로 시작하는지 확인하고 boolean타입으로 반환하는 메소드 2. endsWith String str1 = "abcdefg"; boolean endWith = str1.endsWith("g"); System.out.println("endsWith : " + endWith); 결과값 : true endsWith("g") 해당 문자열의 끝이..
2021.11.11 -
[JAVA 배열의 정렬] 자바 Array, ArrayList 배열의 오름차순, 내림차순 정렬과 Wrapper와 Primitive는 무슨차이가 있을까?
이번엔 간단한 배열의 선언과 정렬 또 Wrapper클래스와 Primitive 기본 자료타입의 차이가 무엇인지 정리합니다. 1. Wrapper VS Primitve 배열을 만들 때 문득 드는 생각이 있습니다. int arr[] = {1,2,3,4}; arr 배열 선언 Integer arr[] = {1,2,3,4}; arr 배열 선언 엥 도대체 뭐가 다르지? 라는 생각. int는 Primitive 기본 자료타입이고 Integer는 Wrapper 클래스입니다. 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어집니다. 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, interfa..
2021.11.09 -
[Java 형변환의 모든 것] Long to Int, String to Int, Int to String 등..
이번에는 Java 형변환의 모든것 !! Kotlin은 그냥 to~로 다해결 되는데 자바는 조금 귀찮다... 그래도 화이팅..!! 공통점을 찾아보자면 String 자료형은 String.valueOf() 메소드로 다 변환 가능하다 ! int, double, long같은경우는 (자료형)으로 표현 되더라 ! 결과 char형은 당연해서 안올리긴 했는데,,, 혹시 필요하신 분이 계실까봐..!!
2021.11.09