enum Class 를 사용하는 이유 코드가 단순해지며, 가독성 UP 인스 턴스 생성과 상속을 방지, 상수값의 타입 안정성 보장 enum class Direction { NORTH, SOUTH, WEST, EAST } fun main(args: Array) { getDirection(Direction.NORTH) getDirection(Direction.SOUTH) getDirection(Direction.WEST) getDirection(Direction.EAST) } fun getDirection(d : Direction){ when(d){ Direction.NORTH -> println("북쪽") Direction.SOUTH -> println("남쪽") Direction.WEST -> printl..
자바에서 final? final로 선언된 변수는 값을 초기화만 가능, 변경 불가 static? static이 선언된 변수는 클래스의 모든 객체가 공유 가능, 클래스 변수라고도 합니다. new로 클래스 객체생성 없이 호출가능 (호출방법 = '클래스 이름' . '변수') final static double PI = 3.14; 코틀린에서 const val PI: Double= 3.14 코틀린에서 요구 사항 최상위 또는 member of an object 선언 또는 Companion Objects 형태의 값 String또는 원시적 형으로 초기화된다. getter 없음 위 코드를 이해하기 위해서는 아래 코틀린 문법이 필수입니다. 2019/05/19 - [Kotlin] - 코틀린 기초 문법) 1. 코틀린 변수 정의하기
자바에서는 String str = null; 코틀린에서는 var str: String? = null var x: Int? = null 코틀린에서는 기본적으로 Argument(인자)는 null 값을 가질 수 없습니다. 그렇기 때문에 타입 뒤에 ?(물음표)를 이용하여 null 값을 사용가능하게 합니다. 코틀린에서 타입 뒤에 오는 ?(물음표는) nullable라는 뜻을 가집니다. //?(물음표) 제거도 한번 해보세요. var str: String? = null fun main(args: Array) { println(str) println(returnNull(null)) } fun returnNull(sNull: String?) = sNull 결과 null null 위 코드를 이해하기 위해서는 아래 코틀린 문..
1편 스레드 객체생성 및 실행2편 스레드 우선순위와 객체공유 및 동기화3편 스레드 상태 및 제어 =============알아두기싱글코어 cpu를 이용한 멀티스레드 작업은 스레드가 번갈아가며 실행하는 동시성이라 하고멀티코어 cpu에서 개별스레드를 동시에 작업하는것을 병렬성이라한다.============= 스레드 우선순위란?스레드 스케줄링에 의해 스레드들이 짦은 시간에 번갈아가면서 run()메소드를 조금씩 실행하는데 우선순위 설정으로 높은 우선순위가 낮은 우선순위 스레드보다 실행 상태를 더 많이 가지도록 스케줄링하는 것을 말한다.우선순위는 1부터 10까지 있으며 1이 가장 우선순위가 낮고 기본적으로 따로 설정이 없으면 5로 설정이된다. package test; public class Ex2 { public ..
1편 스레드 객체생성 및 실행2편 스레드 우선순위와 객체공유 및 동기화3편 스레드 상태 및 제어 =============알아두기스레드란 한가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어 놓았다고 해서 유래된 이름이다.============= 스레드 객체생성 및 사용방법 package test; public class Ex1 { public static void main(String[] args) { /* * Runnable은 스레드가 실행할 수 있는 코드를 가지고있는 객체고 * 인터페이스타입이라 구현 객체를 만들어 대입해야한다. * run()메소드가 정의되어있어 재정의해 스레드가 실행할 코드를 작성한다. */ // 1.인터페이스 방식 Runnable runnable1 = new Runna..
Math 클래스는 모두 static이라 바로 클래스로 사용이 가능함. public class zzzzz { public static void main(String[] args) { //절대값 결과:1 Math.abs(-1); //올림값 결과:1 Math.ceil(0.1); //버림값 결과:0 Math.floor(0.9); //최대값 결과:9 Math.max(1,9); //최소값 결과:1 Math.min(1,9); //랜던값 결과:0.0
StringBuffer와 StringBuilder의 차이점은 버퍼는 멀티 스레드환경에서 사용할 수있게 동기화가 적용되어 있고 빌더는 단일 스레드 환경에서만 사용할 수 있게 만들어져있다. public class zzzzz { public static void main(String[] args) { //StringBuilder 객체 생성 방법 버퍼도 같음 //16개의 문자를 저장할 수 있는 초기버퍼 StringBuilder sb = new StringBuilder(); //주어진 개수만큼 문자를 저장할수있는 초기버퍼 StringBuilder sb2 = new StringBuilder(20); //매개값을 초기버퍼 StringBuilder sb3 = new StringBuilder("안녕하세요."); sb3...
실행시 코드에대한 오류 처리를 한다. public class zzzzz { public static void main(String[] args) { try{ //예외처리할 코드 입력 method(); }catch(Exception e){ //예외 클래스 입력 //다중 catch 또는 |를 사용하여 멀티 catch 사용가능 //예외발생시 예외처리 코드 입력 }finally{ //예외가 발생되든 안되든 항상 실행해야하는 코드 입력 //항상 실행해야할 코드가 없으면 finally는 만들지 않아도됨 } } //throws를 이용하여 예외 떠넘기기 public static void method() throws Exception{ //예외발생시 메인메소드 catch문을 실행한다. } }
추상클래스란?클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라 한다.객체를 직접 생성하지 못하고 상속(extends) 뒤에만 올수 있는 클래스다.만약 추상메소드를 정의한경우에는 반드시 재정의를 해줘야한다. 용도클래스들의 필드와 메소드의 이름을 통일할 목적으로 사용함공통적인 필드와 메소드를 추상 클래스로 만들어 코드 작성할때 시간을 절약하는 용도로 사용함 public class zzzzz { public static void main(String[] args) { A a = new A("김철수"); //추상클래스를 상속받은 클래스객체생성 a.namePrint(); System.out.println(a.name); a.agePrint(); System.out.println(a.age); } ..