Sad Puppy 3 자바 필수 문법 정리 :: 개발자 아지트

 

레퍼런스 타입은 참조형 변수이므로 프리미타입 보다 연산 속도가 느림 

따라서 프리미티브 타입을 주로 사용하는 것을 권장함

 

레퍼런스 타입이란 Integer, Long,Float, Double을 말하고

프리미티브 타입은 int, long, float, double을 말함

 

그러나 레퍼런스 타입에 대해서는 컬렉션 프레임워크 사용시, Integer, Float 타입을 저장할 때 사용하므로 알고는 있어야함. 
*컬렉션 프레임워크: 데이터를 저장하는 자료구조와 알고리즘을 구조화 하여 클래스로 구현해놓은 것을 말함

 

컬렉션 프레임워크

컬렉션 프레임워크는 다양한 자료구조를 직접 구현하지 않고 사용하게 해준다. 

주로 리스트(ArrayList), 스택(Stack), 큐(Queue), 데크(ArrayDeque), 해시맵(HashMap) 등을 사용한다. 

 

배열

import java.util.Arrays;

public class Test {

	public static void main(String[] args) {
		
		int[] array = { 2, 2, 2, 5 };
		
		// 배열을 출력할 때, java.util.Arrays의 toString()을 사용하면 쉽다.
        System.out.println(Arrays.toString(array)); // [2, 2, 2, 5]
		
		
	}

}

 

 

리스트

package Mar0308;

import java.util.ArrayList;

public class Test {	
	public static void main(String[] args) {
    
		// 리스트 객체 생성
		ArrayList<Integer> list = new ArrayList<>();
		
		list.add(1);
		list.add(2);
		
		System.out.println(list.get(1)); // 2
		System.out.println(list); // [1, 2]
		
	}
}

 

해시맵

해시맵은 키와 값 쌍을 저장하는 해시 테이블로 구현되어 있음

 

package Mar0308;

import java.util.HashMap;

public class Test {	
	public static void main(String[] args) {
		
		// 키는 문자열, 값은 정수형을 저장하는 해시맵 선언
		HashMap<String, Integer> map = new HashMap<>();
		
		// 해시맵 값 삽입
		map.put("vanilla cream cold brew", 1);
		map.put("ice americano", 2);
		map.put("ice vanilla latte", 3);
		
		// 해시맵 값 출력
		System.out.println(map); // {vanila cream cold brew=1, ice americano=2, ice vanila latte=3}
		
		
		
		// 해시맵에서 데이터 검색
		String key = "ice americano";
		
		if(map.containsKey(key)) {
			int value = map.get(key);
			System.out.println("key: " + key +  " value: " + value);
		}else {
			System.out.println("can't find");
		}
	
		
		// 해시맵 수정
		
		map.put("ice americano", 100);
		System.out.println(map); // {vanila cream cold brew=1, ice americano=100, ice vanila latte=3}
		
		// 해시맵 삭제
		
		map.remove("ice vanilla latte");
		System.out.println(map); // {vanila cream cold brew=1, ice americano=100}
		
		
	}

}

 

문자열

문자열은 문자들이 배열의 형태로 구성되어 있는 것이고, 이뮤터블 객체(변경할 수 없는 객체)이다. 

시간 복잡도 관점에서 사용시 주의 해야 한다. String의 값을 변경하는 연산이 많을 때는, StringBuilder 클래스나 StringBuffer클래스를 사용하는 것이 효율적이다.  

 

package Mar0308;

public class Test {	
	public static void main(String[] args) {
		
		// 문자열은 큰따옴표를 사용하여 표현한다. 
		String strr = "hi";
		
		// 문자열 추가 및 삭제 
		// 이때, 문자열은 이뮤터블 객체이므로 기존 객체를 수정하지 않고 새로운 객체를 생성하여 반환한다. 
		
		strr += "!!";
		
		// 반환시 기존 객체는 버리고 새로 생성한 객체만 사용함. 
		
		System.out.println(strr); // "hi!!"
		
		// 문자열 수정
		
		// replace(a, b) 
		// a에는 찾을 문자열, b에는 변경할 문자열 넣어 사용
		
		strr = strr.replace("i", "ello"); // "i" 를 모두 삭제함
		System.out.println(strr); // "hello!!"
		
	}
}

 

 

메서드

람다식

다른 말로 익명 함수라고도 한다. 코드에서 딱 한번 실행할 목적으로 사용하거나 함수 자체를 다른 함수의 인수로 전달할 때도 사용할 수 있다. 가독성이 좋아진다. 

 

package Mar0308;

import java.util.Arrays;
import java.util.Comparator;

public class Test {	
	
	private static class Node{
		int dest, cost;
		
		public Node(int dest, int cost) {
			this.dest = dest;
			this.cost = cost;
		}
	}
	
	public static void main(String[] args) {
		Node[] nodes = new Node[5];
		nodes[0] = new Node(1, 11);
		nodes[1] = new Node(2, 21);
		nodes[2] = new Node(3, 16);
		nodes[3] = new Node(4, 6);
		nodes[4] = new Node(5, 26);
        
        // 아래의 람다식과 일반식은 같은 역할을 수행한다...
		
		// 람다식
		Arrays.sort(nodes, (o1, o2) -> Integer.compare(o1.cost, o2.cost));
		
		// 일반식 
		Arrays.sort(nodes, new Comparator<Node>() {
			@Override
			public int compare(Node o1, Node o2) {
				return Integer.compare(o1.cost, o2.cost);
			}
		});
		
		
		System.out.println(Arrays.toString(nodes));
				
	}

}

 

 

 

'[프로그래머스]Java > Java입문' 카테고리의 다른 글

반복문  (0) 2024.07.05
조건문  (0) 2024.07.05
연산자  (0) 2024.07.05
자바 자료구조 구현 - 큐, ArrayDeque  (0) 2024.03.08
자바 자료구조 구현 - 배열, ArrayList(리스트)  (0) 2024.03.08

+ Recent posts