본문 바로가기
반응형

java4

[JAVA] 얕은 복사, 깊은 복사 - Shallow Copy, Deep Copy [JAVA] 얕은 복사, 깊은 복사 Java에서 객체를 복사하는 유형으로 깊은 복사와 얕은 복사가 있습니다. 깊은 복사(Deep Copy) 경우, 객체의 실제값을 새로운 객체로 복사하는 것이고, 얕은 복사(Shallow Copy)는 여러 객체가 같은 주소를 참조하기 때문에 하나의 값을 변경해버리면, 다른 대상의 값 또한 바뀌어 버리는 문제 등이 발생합니다. 메모리 측면에서는 깊은 복사를 할 경우에, 비효율적이게 될 수도 있습니다. 얕은 복사 (Shallow Copy) public class Array_Copy{ public static void main(String[] args) { int[] a = [ 1, 2, 3, 4 ]; int[] b = a; } } a배열을 b배열로 = 연산자를 활용하여 대입하.. 2021. 7. 6.
[JAVA] String, StringBuffer, StringBuilder [JAVA] String, StringBuffer, StringBuilder Java에는 문자열을 다루는 클래스로 String, StringBuffer, StringBuilder라는 3가지 클래스가 있습니다. String 객체는 한번 생성되면 할당된 공간이 변하지 않지만, StringBuffer, StringBuilder의 경우 객체의 공간이 부족해지는 경우 버퍼의 크기를 유연하게 늘려줍니다. String은 불변(immutable), StringBuffer, StringBuilder는 가변(mutalbe) 이라고 합니다. StringBuffer - StringBuilder StringBuffer, StringBuilder 클래스는 둘 다 크기가 유연하게 변하는 가변적인 특성을 가지고 있으며, 제공하는 메.. 2021. 7. 6.
[JAVA] 문자열 비교 - ==, equals() 차이점 [JAVA] 문자열 비교 - ==, equals() 차이점 Java에서 일반적으로 데이터 타입의 비교는 == 이라는 연산자를 사용하여 비교합니다. String을 비교할 때에는 ==이 아닌 equals() 라는 메소드를 사용하여 비교합니다. String 변수 생성 시 주소할당 String 변수를 생성할 때는 두가지 방법이 있습니다. - 1. 리터럴을 이용한 방식 - 2. new 연산자를 이용한 방식 위 두가지 방식에는 큰 차이점이 있습니다. String을 리터럴로 선언할 경우 "string constant pool" 이라는 영역에 존재하게 됩니다 내부적으로 String의 intern()메서드가 호출하게 되는데 -> intern() 메서드는 주어진 문자열이 string constant pool에 존재하는지 .. 2021. 7. 6.
[Java] InputStream, OutputStream 개념 데이터 입출력 : 데이터는 사용자로부터 키보드, 마우스 등을 통해 입력 될 수 있고, 파일 또는 네트워크를 통해 입력될 수 있음. 모니터, 파일 등으로도 출력할 수도 있음. 자바에서 데이터는 Stream을 통해 입출력됨. *Stream은 단일 방향으로 연속적으로 흘러가는 것을 의미, 데이터는 출발지에서 나와 도착지로 흘러간다는 개념 프로그램이 출발지/도착지인지에 따라 스트림의 종류가 결정됨. 데이터를 입력 받을 때 - InputStream 데이터를 출력 할 때 - OutputStream *프로그램이 네트워크상의 다른 프로그램과 데이터를 교환하기 위해서는 양쪽 모두 입력 스트림과 출력스트림이 따로 필요함. 스트림은 단방향 통신을 한다는 특징이 있으므로, 하나의 스트림으로 입출력을 동시에 할 수 없기 때문에.. 2019. 4. 30.
반응형