간혹 매우 큰 자리수의 숫자를 저장해서 사용해야 할 때가 있는데, 자바8 버전부터 지원하는 숫자 리터럴(Numeric Literals) 형식을 사용하면 매우 편리하게 표현할 수 있다. 숫자를 끊고 표기하고 싶은 부분에 언더스코어(_)를 첨가해주면 된다. 이러면 한눈에 100만임을 파악할 수 있어서 편리하다. 당연히 코틀린도 지원된다. 여담으로 파이썬, 스위프트, C++, C#, 자바스크립트 등 다양한 언어에서도 지원한다.
보통 로깅을 할 때, 개발을 하다 보면 운영차원에서 System.out.println() 대신 로깅 라이브러리를 사용하도록 권장한다. 왜 그런지 알아보자. 동기화로 인한 성능 저하 println() 함수 내부를 들여다 보면, 이 처럼 write() 함수가 synchronized 블록으로 구성되어 있음을 확인 할 수 있다. 이는 멀티쓰레드 환경에서 write()를 호출할 때, 동기화 되어 한 쓰레드씩만 처리가 가능하고 다른 쓰레드들은 화면에 찍는 과정을 기다리게 된다. (Blocking) 따라서 이 과정에서 많은 수의 요청을 동시 처리하고자 할 때, 성능 저하가 발생할 수 있다. + 연산의 비효율성 문자열에 변수를 포함하기 위해서 + 연산자를 활용하여 다음과 같이 사용한다. mopil = 25를 출력하고 ..
[Any 클래스] - 자바의 Object (최상위 클래스)와 동급 [함수 Unit 타입] - 리턴값이 없으면 : Unit으로 표기함 - 생략해도 됨 [확장함수] - 이미 선언되어있는 객체나 클래스 하위의 함수를 오버로딩, 오버라이딩 가능함 (String 클래스의 새로운 함수 추가하기) [lateinit] 기본 자료형을 제외(String은 가능)하고 객체 생성시 초기화를 하지 않고 변수 선언만 선언할 수 있게 하는 키워드 [타입캐스팅] as 타입으로 타입캐스팅함 [상속] - 디폴트가 상속 불가능임 - 부모 클래스에 open 키워드가 있어야 상속가능 - 오버라이딩도 open이 붙어야 오버라이딩 가능 [init] - 인스턴스를 생성하면서 수행할 메소드나 로직을 담을 수 있음(블록단위) init {} - ini..
콜백 함수는 함수의 인자로 다른 함수를 받아서 실행되는 함수를 말한다. 보통 핸들러 함수를 구현할 때 많이 사용하는 개념이다. 이렇게, 함수를 다른 함수의 인자로 전달하려면 특정 조건을 만족해야 하는데, 그것은 바로 함수가 "일급 객체"이어야 한다는 점이다. # 일급 객체 변수에 할당 가능 함수 인자로 전달 가능 (콜백 함수) 리턴 값으로 지정 가능 함수가 일급 객체인 언어는 보통 동적 언어들이다. 정적 언어 = 변수 타입을 미리 선언해서 사용하는 언어들 (C++, Java) 동적 언어 = 변수 타입을 따로 선언 안 해도 실행 도중 알아서 타입이 매치되는 언어들 (Python, JavaScript) Java의 함수는 일급 객체? 우선, Java의 함수는 일급 객체가 아니다. 왜냐하면 일급 객체의 조건을 ..
Do it! 자바 프로그래밍 입문을 보면서 익힌 객체 지향 기본 개념들을 보기 쉽게 정리 생성자 인스턴스를 생성할 때 초기화시키는 함수 (생성자를 메서드라고 부르진 않음) 생성자의 이름은 해당 클래스와 동일하게 파라메터만 다르게 해서 여러 개의 생성자를 만들 수 있음(오버로딩) 클래스 내에 생성자가 하나라도 없으면 JVM이 프리 컴파일 단계에서 알아서 만들어서 넣어줌 public class Student { String name; int grade; public Student() {} //default 생성자 //오버라이딩해서 새로만든 생성자 public Student(String name,int grade) { this.name = name; this.grade = grade; } } *this는 해..