본문 바로가기
자바 풀스택 공부

Day23.

by seung_nari 2022. 2. 3.

StringBuffer클래스 & StringBuilder클래스

String클래스는 인스턴스를 생성할 때 지정된 문자열을 변경할 수 없지만,

StringBuffer클래스는 변경이 가능하다.

내부적으로 문자열 편집을 위한 버퍼(buffer)를 가지고 있으며,

StringBuffer인스턴스를 생성할 때 그 크기를 지정할 수 있다.

 

StringBuffer클래스의 인스턴스를 생성할 때, 적절한 길이의 char형 배열이 생성되고, 이 배열은 문자열을 저장하고 편집하기 위한 공간(buffer)으로 사용된다.

 

public class StringBufferTest {
	public static void main(String[] args) {
		String str = "a";
		str += "b";
		str += "c";
		str += "d";
		str += "e";
		str.concat("f");
		
		System.out.println(str);
		
		StringBuffer sb = new StringBuffer("a");
		sb.append("b");
		sb.append("c").append("d").append("e"); // method chaining
		
		sb.append("f");
		System.out.println(sb);
		
		System.out.println(str.equals(sb.toString()));
	}
}

 

멀티쓰레드로 작성된 프로그램이 아닌 경우, StringBuffer의 동기화는 불필요하게 성능만 떨어뜨리게 된다.

그래서 StringBuffer에서 쓰레드의 동기화만 뺀 StringBuffer가 새로 추가되었다.

 

StringBuffer도 충분히 성능이 좋기 때문에 성능향상이 반드시 필요한 경우를 제외하고는 기존에 작성한 코드에서 StringBuffer를 StringBuilder로 굳이 바꿀 필요는 없다.

 

public class StringMethodEx {
	public static void main(String[] args) {
		String str = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=%EA%B3%A0%EC%96%91%EC%9D%B4";
		
		String protocol = str.substring(0, str.indexOf(":"));
		String domain = str.substring(str.indexOf("://") + 3, str.indexOf("/", str.indexOf("://") + 3));
		String fileName = str.substring(str.lastIndexOf("/") + 1, str.indexOf("?"));
		String parameters = str.substring(str.indexOf("?") + 1);
		
		System.out.println(protocol);
		System.out.println(domain);
		System.out.println(fileName);
		System.out.println(parameters);
		
		String[] params = parameters.split("&");
		System.out.println(Arrays.toString(params));
		
		for(String s : params) {
			System.out.println("key : " + s.split("=")[0]);
			System.out.println("value : " + s.split("=")[1]);
			
		}
	}
}

 


래퍼(wrapper) 클래스

객체간의 비교가 필요할 때 등등의 경우에는 기본형 값들을 객체로 변환하여 작업을 수행해야 한다.

이 때 사용되는 것이 래퍼(wrapper) 클래스이다.

8개의 기본형을 대표하는 8개의 래퍼클래스가 있는데, 이 클래스들을 이용하면 기본형 값을 객체로 다룰 수 있다.

 

public class WrapperTest {
	public static void main(String[] args) {
		int i = 10;
		Integer integer = new Integer(20);
		
		System.out.println(i + integer);
//		i.
//		integer.
		System.out.println(Integer.toBinaryString(-1));
		System.out.println(Integer.MAX_VALUE);
		System.out.println(Integer.MIN_VALUE);
		System.out.println(Long.SIZE);
		System.out.println(Long.BYTES);
		
		
		Integer i2 = 20;
		Integer i3 = new Integer(20);
		
		System.out.println(i2.equals(i3));
		System.out.println(i2 == i3);
		
		System.out.println("=========");
		
		// long String
		long l = 10;
		String s = l + "";
		l = Long.parseLong(s);
		char[] c = s.toCharArray();
		char r = (char)Integer.parseInt(s);
		System.out.println(c);
		System.out.println((int)r);
	}
}

이미지맵

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <img src="images/kids.jpg" usemap="#favorites">
    <map name="favorites">
        <area shape="circle" coords="85, 105, 100" href="https://cafe.naver.com" target="_blank">
        <area shape="poly" coords="10, 10, 380, 200, 380, 10" href="https://www.google.co.kr">
        <area shape="rect" coords="220, 10, 380, 200" href="https://www.facebook.com" target="_blank">
    </map>
</body>
</html>

 

저거를 다 외우고 있는 것은... 무리!!!

그래서 간단하게 할 수 있는 방법!!

밑에 있는 링크를 통해 이미지에 넣고 싶은 이미지맵의 좌표를 알려준다잉

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=aaaahana&logNo=220507533473

'자바 풀스택 공부' 카테고리의 다른 글

Day 25.  (0) 2022.02.07
Day 24.  (0) 2022.02.04
Day 22.  (0) 2022.01.28
Day 21.  (0) 2022.01.28
Day 20.  (0) 2022.01.28

댓글