Language

일반적인 Arrys.sort()를 사용하면, 컴퓨터는 배열에 대해 정렬을 수행한다. 이는 컴퓨터의 내부적인 정렬이 아닌 각 자료형의 래퍼 클래스(Integer, String... etc)들이 Comparable 인터페이스를 구현함으로서 정렬이 가능한 것이다. 정렬 기준을 만드는데 있는 인터페이스에는 Comparable뿐만아니라 Comparator도 있다. 두 인터페이스 모두 객체를 비교한다는 같은 기능을 목적으로 고안된 것이다. 이 두 인터페이스는 Java Collection Framework에 소속되어있다. Comparator Document : https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Comparator.html C..
람다식이란 람다식이란 간단히 말해 메소드를 하나의 '식'(expression) 으로 표현한 것이다.람다식은 함수를 간략하면서도 명확하게 표현할 수 있다는 장점이 있다. 메소드를 람다식으로 표현하면, 메소드 이름, 반환타입이 없어지므로 익명함수(Anonymous Function)이라고도 부른다.예를들어 아래와 같이 사용할 수 있다. int[] arr = new int[5]; Arrays.setAll(arr,(i) -> (int)(Math.random() * 5) + 1); 람다식 작성하기 람다식의 기본 형태는 아래와 같이 생겼다 (매개변수 선언) -> {문장들} 다만 여기서 반환값이 있는경우에서 두가지 경우로 작성해줄 수 있다. return문을 포함한 람다식 (statement가 된다. ;를 붙여야 된다...
Maven? Maven은 Java용 프로젝트 관리 툴이다. Apache Ant를 대체하기 위해 만들어 졌으며, 컴파일,테스트, Javadoc생성, 테스트 리포트 생성, 프로젝트 사이트 생성, JAR생성, 서버에 Deploy(전개 / 배포) 등의 기능들을 가지고 있다. pom.xml의 태그에 프로젝트에서 사용할 JAR라이브러리 이름, 버전을 지정함으로서 외부 사이트에서 관리되고 있는 JAR을 자동으로 다운로드하고, 로컬에서 빌드가 가능하다. Maven설치하기 1. brew install gcc 2. Maven 설치하기 : brew install maven은 openjdk가 같이 설치되므로아래 링크로 들어가서 Binary tar.gz archive를 다운로드해줍니다. https://maven.apache.o..
· Language/GO
슬라이스 슬라이스란 Go언어에서 제공하는 동적배열이다. 동적배열이란 자동으로 배열 크기를 증가시키는 자료구조이다. 슬라이싱 기능을 이용해 배열의 일부를 나타내는 슬라이스를 만들 수 있다. 슬라이스 선언 var (변수명) [](자료형) 배열과 비슷하지만, 배열과 달리 배열 요소 최대 개수를 적지 않는다. 슬라이스를 초기화하지 않으면 길이가 0인 슬라이스가 만들어진다. 슬라이스 길이를 초과해 접근하면 런타임 에러가 발생한다. 슬라이스에 대한 인덱싱은 배열과 동일하다. package main import "fmt" func main() { var slice []int fmt.Println(slice[1]) } /* /private/var/folders/bv/hfxy36vd6_5f_4959zpp0lp40000g..
· Language/GO
개요 Go언어는 클래스개념이 존재하지 않는다. 대신 구조체를 클래스 같이 사용하고, 메소드를 구조체 밖에 선언하는 형태로 사용한다.이 외 특징으로는 OOP특성중 하나인 상속성(inheritance)를 지원하지 않고, 인터페이스(interface)를 지원한다. 우선 이 포스트에서는 구조체, 메소드에 대해서 알아보자 구조체 구조체 기본 메소드를 알기 전에 구조체를 알아야 한다. C언어를 했다면 구조체를 접했을 것이다. 구조체는 여러 필드를 묶어서 작성한다. 배열이 같은 타입 값들을 변수 하나로 묶어주었다면, 구조체는 여러 타입의 값들을 변수 하나로 묶어주는 기능을 한다. 기본적인 선언은 아래와 같다. type (type name) struct{ (field name) (field value type) } 예..
· Language/GO
배열 선언 방법 var t [5]float64 var 변수명 [요소개수]타입 형태로 선언하면 된다. 배열 초기화를 위해서는 아래와 같은 형태로 초기화하면된다. 또한 배열의 indexing은 일반적인 다른 언어와 동일하다(배열[index]) var t [5]float64 = [5]float64{24.0, 25.9, 27.8, 26.9, 26.2} package main import "fmt" func main() { var t [5]float64 = [5]float64{24.0, 25.9, 27.8, 26.9, 26.2} for i := 0; i < len(t); i++ { fmt.Println(t[i]) } } 배열 요소의 개수를 '...'를 이용해 생략할 수 도 있다. 이때 정해지는 배열 요소 개수는 ..
· Language/GO
GO의 함수 선언하기 // func (함수명)(매개변수)(반환타입) func Add(a int, b int) int { } 함수 선언시 주의할점 두가지는 아래와 같다 함수명 첫 글자가 대문자이면 함수는 패키지 외부로 공개된다 반환값이 없는경우(void) 비워둔다 멀티 반환함수 함수는 값을 여러개 반환할 수 있다. 반환값이 여럿일 경우 반환타입들을 소괄호로 묶어 표현한다. package main import "fmt" // 함수명 첫글자가 대문자이므로 패키지 외부로 공개된다. func Divide(a, b int) (int, bool) { if b == 0 { return 0, false } return a / b, true } func main() { c, success := Divide(9, 3) fm..
· Language/GO
표준 입출력 프로그램과 사용자는 입력 / 출력 을 통해 상호작용을 한다 이는 운영체제가 제공하는 표준 입출력스트림(Standard I/O)를 통해 이루어 진다. Go언어에서는 fmt 패키지를 이용해서 처리할 수 있다. 표준 출력 3가지 표준 출력에는 총 3가지 함수가 있다. Print() : 함수 입력값들을 출력한다 Println() : 함수 입력값들을 출력하고 개행(\n)한다 Printf() : format에 맞도록 입력값을 출력한다. package main import "fmt" func main() { var a int = 10 b := 20 var f float64 = 327999.8297 fmt.Println("a : ", a) fmt.Print("b : ", b) fmt.Printf("a : ..
· Language/GO
패키지 패키지는 Go언어에서 코드를 묶는 가장 큰 단위이다. main 패키지 main패키지는 프로그램 시작점을 포함한 패키지이다. 운영체제는 프로그램을 실행하기 위해 프로그램을 메모리에 옮기고(이러한 작업을 load라고한다) 한줄한줄 시작하게 된다. 시작하는 점이 main()함수가 되는것이다. 이외 패키지 하나의 프로그램은 main패키지 이외 다른 패키지를 가질 수 있다.(장고가 프로젝트 디렉토리 이외에 여러가지 애플리케이션을 가질수 있는것과 비슷) 내장 패키지도 있지만, 오픈 소스로 공개된 여러 패키지와 유료 패키지 등 가져다가 사용할 수 있는 패키지도 많다. 패키지를 검색하려면 아래 두가지 방법을 사용하면 된다 표준 패키지 : https://pkg.go.dev/std 개발자들이 많이 사용하는 패키지(..
제네릭스란? 제네릭스란 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스 컴파일시 타입 체크를 해주는 기능이다. 객체 타입을 '컴파일 시' 체크하므로 안정성을 높이고 형변환의 번거로움이 줄어든다. 타입 안정성을 높인다는것은 의도하지 않은 타입의 객체가 저장되는것을 막는다는 소리이다. 정리해보면 제네릭스의 장점은 아래와 같다. 타입 안정성을 제공한다 타입 체크와 형변환을 생략할 수 있으므로 코드가 간결해진다. 제네릭을 적용한 제네릭 클래스 선언을 해보자 package generic; class Box{ T item; void setItem(T item){ this.item = item; } T getItem(){ return this.item; } } Box에서 'T'를 타입변수라고 하며 T가 아닌 다..
1. Collection Framework? 컬렉션 프레임웍이란 데이터군을 저장하는 클래스들을 표준화한 설계를 의미한다. 여기서 프레임웍이란 표준화된 프로그래밍 방식을 의미한다. 2. 컬렉션 프레임웍의 핵심 인터페이스 컬렉션 프레임웍의 핵심 인터페이스는 세가지가 존재한다. List : 순서가 있는 데이터 집합, 데이터 중복을 허용한다 (ArrayList, LinkedList, Vector, Stack) Set : 순서가 유지되지 않는 집합, 데이터 중복을 허용하지 않는다.(HashSet, TreeSet) Map : 키 - 값 쌍으로 이루어진 데이터 집합. 순서는 유지되지 않으며 키는 중복을 허용하지 않고, 값은 중복을 허용한다 주의할 것은 위 세가지 모두 '인터페이스'라는 것이다. 그리고 여기서 공통점이..
· Language/GO
변수 변수는 값을 저장하는 메모리 공간을 가리키는 이름이다. Go에서 변수 선언은 아래와 같은 형태로 선언한다 var (변수명) (자료형) = (초기화값) 변수의 4가지 속성 이름 : 프로그래머는 이름을 통해 값이 저장된 멤리 공간에 쉽게 접근이 가능하다 값 : 변수가 가리키는 메모리 공간에 저장된 값이다 주소 : 변수가 저장된 메모리 공간의 시작 주소를 말한다. 변수 이름이 메모리 시작 주소인 것이다. 타입 : 변수값의 형태를 말한다. 정수타입, 실수타입, 문자열타입 등 다양한 타입이 있다. 대입연산자는 다른 프로그래밍 언어와 동일하게 '='이다. 그리고 Go언어의 자료형 종류에는 아래 링크를 참조하자 https://hcnam.tistory.com/9 [GoLang] 자료형, 변수, 상수 자료형 Go ..
Hoplin
'Language' 카테고리의 글 목록