언어/Java

언어/Java

[Java] 가변인자 ... 표현

오늘은 Java의 ... 표현에 대해서 알아보려고한다. 이 표현을 최근에 접해보면서 알게되었는데, 생각해보면 가끔 코딩을 하다가 파라미터를 받을 때 ... 같은 표현을 본 적이 있는 것 같다. ​ 이 표현의 이름은 ellipsis 뜻 풀이 하자면 생략이다. (가변길이 파라미터 또는 가변인자라고도 불린다) 같은 유형의 타입을 여러개 받아도 처리 할 수 있게 해주는 역할을 해준다. ​ 이렇게 말하면 살짝 이해가 안될 수도 있을 것 같아 예제 코드를 살펴보자. public class Main{ public static void main(String[] args) { String[] name = {"GG", "_", "BB"}; print("GG_BB"); System.out.println("\n"); prin..

언어/Java

[Java] Static import

오늘은 static import에 대해서 알아보려고 한다. 그동안 개발을 하면서 들어본 적이 없었기에 매우 편리한 기능이라고 생각되었다. 어떤 기능인지 한 번 살펴보자. public class Main{ public static void main(String[] args) { System.out.println("GG_BB"); } 쉽게 알아보기 위해서 누구나 한번 쯤은 써봤을 println을 예제로 사용하겠다. 위 코드는 그저 GG_BB라는 구문 하나를 출력하기 위한 코드이다. 이 코드에 static import를 적용시켜보겠다. import static java.lang.System.*; public class Main{ public static void main(String[] args) { out...

언어/Java

[Java] 컬렉션 프레임워크

이번 글에선 컬렉션 프레임워크에 대해서 정리해보려고 한다. 컬렉션 프레임워크는 프로그래밍에 있어서 필수불가결한 요소라고 생각한다. 저번에 설명한 스트림도 컬렉션을 활용할 수 있는 것이고, 기본적으로 배열같은 데이터는 실무에서나, 혼자 코딩할 때나, 코딩테스트를 할 때도 거의 항상 들어가기 때문이다. 그렇기에 더 자세히 이해하고 활용할 수 있어야겠다는 생각을 하게 되었다. 그렇다면 한번 시작해보자. ​ 일단 컬렉션에 대해 설명하기 전에 사진을 보며 종류에 대해서 살펴보자. ​ 컬렉션 프레임워크는 인터페이스로 구현되어있다. 그 인터페이스(컬렉션)으로 구현되어있는 것들이 List, Set, Map인데 이 컬렉션 인터페이스들을 통해 구현한 것들(ArrayList, HashMap 등)을 컬렉션 클래스라고 불린다...

언어/Java

[Java] - Lambda 표현식과 Stream

이번 글에서 다룰 주제는 Java SE 8버전에서 추가된 Lambda(람다) 표현식과 Stream API에 대해서다. 나는 애석하게도 Lambda 에 대한 것이나 Stream 을 배워본 적이 없어서 활용해보질 못했었다. 그렇기에 더욱 더 제대로 공부해야겠다고 생각이든다. ​ 이번 글에서 설명할 람다 표현식과 스트림을 이용하면 많은 장점이 있다. 기존의 불필요한 코드를 줄여주고, 가독성을 높여주며 효율 면에서도 좋은 효과를 줄 수 있다. 대체 어떤 방식이길래 그러는지 정리해보겠다. ​ 1. Lambda 표현식 람다 표현식은 식별자 없이 실행이 가능한 함수를 만들 때 쓰인다. 이 한줄을 보면 식별자가 없는데 어떻게 실행을 하지? 라는 생각이 들 수도 있다. 자바스크립트를 해봤다면 변수에 함수를 넣어서 익명함..

언어/Java

[Java] 자바 프로그램의 구조

오늘은 자바 프로그램의 기본 구조에 대해서 정리해보려고 한다. 오늘 설명하는 내용은 기본적인 내용이기도 하지만, 면접질문에도 많이 나오고, 객체지향에 대한 중심이 담겨 있다고 생각한다. 얼핏하면 헷갈리는 것들도 정리해서 잘 기억할 수 있도록 해야겠다. ​ 자바 프로그램의 기본 구조 ​ 우리가 자바 코딩을 하기 위해 무언가를 추가할 때, 많은 선택지가 있다. Class, Interface, Enum, Annotation 까지... Class와 Interface 까지는 들어봤어도 Enum? Annotation?? 할 수도 있을 것 같다. 하지만 그리 어렵지는 않은 개념들이니 정확히 알아두고 활용해보는 게 좋을 것이다. ​ 1. Class 첫 번째로는 자바를 처음 배우게 되면 맞이하게 되는 클래스이다. 클래스..

언어/Java

[Java] - 자바란?

Java의 기본다지기를 해보려고한다. 아무래도 기본이 조금 부족한 걸 여러모로 느껴서, 처음 시작하는 느낌으로 돌아가 Java에 대한 걸 처음 부터 시작해서 끝까지 모르는 것이 없을 정도로 하나하나 이해하면서 넘어 갈 생각이다. ​ 오늘의 기본은 조금 고리타분하게 들릴 수도 있는 Java에 대해서이다. ​ JAVA? 자바언어는 객체 지향적 프로그래밍 언어이다. 객체지향(Object-Oriented Programming, OOP)은 명령어들이 합쳐져 만들어진 컴퓨터 프로그램을 하나의 독립된 단위로 보는 것을 말한다. 각 객체들(각 기능들)은 메시지를 주고받고 데이터를 처리하여, 프로그램을 유연하고 용이하게 변경할 수 있게 한다. 쉽게 말하자면 개발한 요소(클래스) 하나하나가 객체가 되고 그 요소끼리 상호작..

언어/Java

[Java] Overriding, Overloading

오늘은 자바의 overriding, overloading 에 대해서 설명하려고 한다. 객체지향언어인 자바에서은 매우 중요한 개념이기도 하니 확실히 이해하면 좋을 것 같다. ​ 1. overriding 오버라이딩은 말그대로 덮어쓰기를 뜻한다. 다른 말로 표현하자면 메소드를 다시 정의하는 것이라고 말할 수 있다. class Member{ void printCN() { System.out.println("Member"); } } class Member_sub extends Member { void printCN() { System.out.println("Member_sub"); } } 위와 같이 같은 이름의 메소드를 다시 정의하는걸 overriding 이라고 한다. 재정의를 했을 때는 @Override를 통해..

언어/Java

[Java] 접근제어자(제한자)

오늘은 접근제어자에 대해서 정리해보려고 한다. 옛날에 코딩할 때는 중요성을 못 느끼고 무분별하게 사용만을 했는데, 접근제어자를 적절히 사용하면 위험요소들을 줄일 수 있다. ​ 자세한 예를 들어 이해와 기억에 도움이 되도록 작성해 보려고한다. ​ 접근제어자에는 public, protected, default, private 가 존재한다. 일단 아래와 같은 test 패키지에 변수들이 있다고 가정하겠다. package test; public class Am_Member { public String pub_name = "pub_GG_BB"; protected String pro_name = "pro_GG_BB"; private String pri_name = "pri_GG_BB"; String name = "d..

언어/Java

[Java] Optional

오늘은 Optional에 대해서 알아보려고 한다. 그동안 개발을 해보면서 Optional이라는 걸 본 적이 없었기에, 처음 보는 만큼 자세히 이해해야겠다. ​ Optional 이란 개발을 하면서 흔히 볼 수 있는 NullPointerException을 방지 할 수 있도록 도와주는 클래스이다. null 값이 들어올 수 있는 값을 감싸는 클래스로써, 참조하더라도 오류가 나지 않도록 도와주는 역할을 한다. ​ 어떻게 사용이 되는지 보자면 // Member Class private final name = "GG_BB"; public void getName() { return name; } public void setName(String name) { this.name = name; } //////////////..

언어/Java

[Java] 클래스, 객체, 인스턴스

오늘은 클래스, 객체, 인스턴스에 대해서 설명해보려고한다. 어떤 느낌으로 사용되는지는 대충 알지만 남에게는 설명하지 못할 것 같아서 정리해보게 되었다. ​ 밑에 코드를 보면서 이해하면 더 좋을 거 같아 넣어보았다. public class Member() { String name = "GG_BB"; public static void Mem_print() { System.out.println(""); } } 1) 클래스 (Class) 변수와 메서드의 집합이며, 객체를 만들기 위한 설계도라고 생각하면 될 것 같다. ​ 2) 객체 (Object) 소프트웨어에 구현할 대상을 뜻한다. 좀 더 쉽게 말하자면 만들고자하는 기능이라고 생각하면 될 것 같다. 클래스의 인스턴스라고도 부른다. ​ 3) 인스턴스 (Instan..

언어/Java

[Java] static 변수

이번엔 static 변수에 대해 알아보려고 한다. 아예 몰랐던 지식은 아니지만 정확히는 어떤 역할을 하는지 알지 못하는 거 같아서 정리하게 됬다. ​ 대충 메소드나 변수를 만들 때 쓰이고 메모리는 고정되지만 값만 바뀌게 할 수 있는 키워드라 생각하고 있었다. ​ 하지만 정확히 설명하자면 메모리에 고정적으로 할당되어, 프로그램이 종료될 때 해제되는 변수를 static 변수라고 말한다. ​ 이해를 돕기위한 예제를 가져와보자면 public class Member { private String name = "BB_GG"; } 다음과 같은 클래스가 있을 때, 이 클래스를 통해 다른 클래스에서 n개의 Member를 생성하면 "BB_GG"라는 값을 가지는 메모리가 n개가 생겨버린다, 이는 메모리 효율에 매우 좋지않은..

언어/Java

[Java] Iterator 사용

Iterator란 우리가 흔히 사용하는 그룹 데이터들(Set, List, Map)을 읽어오는 데 도움을 줄 수 있다. 그러면 사용법을 한 번 알아보도록 하자. ​ Iterator 없이는 다음과 같이 코드를 짜고 읽어와야 한다. ArrayList list = new ArrayList(); list.add(1); list.add(5); list.add(9); for(int i = 0; i = 5){ System.out.println("5보다 크거나 같습니다."); }else{ System.out.println("5보다 작습니다."); } } 5보다 작습니다. 5보다 크거나 같습니다. 5보다 크거나 같습니다. 라는 결과를 얻을 수 있..

ppusda
'언어/Java' 카테고리의 글 목록