1.print(Objectobj)
위의 출력문은 무엇을 출력하는가? 나는 obj의 주소를 출력하는 줄 알았다.https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/PrintWriter.html#print(java.lang.Object)All Implemented Interfaces: Closeable , Flushable , Appendable , AutoCloseable public class PrintWriter extends Writer Prints formatted representations of objects to a text-output stream. This class implements all of the print methods found in PrintStream . It does not contain methods for writing… docs.oracle.com 그러나 내가 생각하는 것처럼 전혀 그렇지 않고 위 문서에서 볼 수 있듯이 String.valueOf(object) 결과를 출력한다.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#valueOf(java.lang.Object)All Implemented Interfaces: Serializable , CharSequence , Comparable < String > public final class String extends Object implements Serializable , Comparable < String >, CharSequence The String class represents character strings. All string literals in Java programs, such as “abc” , are implemente…docs.oracle.com 에서 위의 결과는 무엇을 출력할까 생각되면 obj가 null일 경우 null을 반환하고 그렇지 않으면 obj.to String( )을 반환할 수 있다.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html#toString()Constructor Summary Constructors Constructor Description Object () Constructs a new object. Method Summary All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected Object clone () Creates and returns a copy of this object. boolean equals ( Obje…docs.oracle.com 마지막으로 위가 반환하는 값은 문서에서 확인할 수 있도록 대략 getClass().getName ( ) +’@’+ Integer.to HexString (hash Code ())을 반환한다.
위 이미지가 출력을 하던 도중 다른 값이 나와 왜 그런지 찾게 된 이유다.1번의 경우는 위에서 설명하듯이 클래스 이름과 hexString이 출력되고 2번의 경우는 이상한 값이 나왔는데 그 이유는 내가 클래스 안에 toString이라는 메소드를 따로 만들었기 때문이다.따라서 기존의 내장된 to String 메서드가 아닌 클래스 내부의 to String 메서드가 실행되고 1번과는 다른 결과가 출력된다.
2. Array List 사용법
Array.get(intindex): 목록에서 index 위치에 있는 객체를 리턴
Array.remove (intindex): 목록의 index 위치에 있는 아이템 삭제
Array.add(Ee): 목록의 마지막에 인자로 전달된 아이템 추가 http://codechacha.com/ko/java-collections-arraylist-add/ArrayList의 ad( ) 메서드는 인자로 전달된 객체를 목록에 추가합니다. 인자가 다른 두 가지 메소드가 있습니다. ArrayList.add(Ee)는 목록에 인쇄된 객체를 추가합니다. ArrayList.add(intindex, Ee) 인자의 인덱스에 해당하는 위치에 객체를 추가합니다.codechacha.com
3. 스트링, 스트링빌더, 스트링빌더
String은 새로운 값을 할당할 때마다 새로 생성된다.반면 스트링버퍼는 값을 메모리에 append하는 방식으로 클래스를 직접 생성하지 않는다.
클래스가 생성될 때 method와 variable이 생성되지만 String Buffer는 이러한 시간을 사용하지 않아야 한다.
String class 내부를 보면 value[ ]가 private final char로 선언됨을 알 수 있다.이는 외부에서 접근할 수 없음은 물론 바꿀 수 없다는 뜻이다.
스트링빌더와 스트링빌더는 변경 가능한 문자열입니다.스트링빌더는 synchronization이 적용되지 않고 스트링빌더는 multiplethread 환경에서 안전한 클래스입니다.이것이 둘의 가장 큰 차이라고 한다.
정확히 어떤 차이인지는 아직 알 수 없다. 나중에 더 알아봐야 할 것 같다…. http://novemberde.github.io/2017/04/15/String_0.htmlJava에서 스트링, 스트링빌더, 스트링빌더의 차이점 novemberde.github.io