비슷한 개념이지만 정확히 구별하면 인스턴스가 객체보다 큰 의미이다. 객체는 어떤 클래스를 사용해서 만들어진 것을 의미한다. 그리고 그 객체가 메모리에 할당되어 실제 메모리를 차지하는 것을 인스턴스라고 한다.
String str;
str = new String("Hello world");
System.out.println(str);
위와 같은 코드에서 객체와 인스턴스를 구별해보자.
먼저 str은 String 클래스를 사용하여 객체를 선언한 것이다. 즉 아직 str에 문자열이 할당되어 있지 않은 상태이다.
그리고 다음 라인을 보자. new 키워드를 사용하여 JVM에 데이터가 생성된 것을 보여준다. 이렇게 객체를 실제로 메모리에 할당하는 과정을 인스턴스화(instantiate)라고 한다. 즉 객체 str에 "Hello world"라는 문자열을 할당해서 인스턴화하였다. 그리고 이렇게 인스턴스화된 것을 인스턴스라고 부른다.
public <T> List<T> union(List<T> list1, List<T> list2) {
Set<T> set = new HashSet<T>();
set.addAll(list1);
set.addAll(list2);
return new ArrayList<T>(set);
}
ArrayList 교집합(intersection)
public <T> List<T> intersection(List<T> list1, List<T> list2) {
List<T> list = new ArrayList<T>();
for (T t : list1) {
if (list2.contains(t)) {
list.add(t);
}
}
return list;
}
사용예시
public class ListUtil {
public static void main(String... args) throws Exception {
List<String> list1 = new ArrayList<String>(Arrays.asList("A", "B", "C"));
List<String> list2 = new ArrayList<String>(Arrays.asList("B", "C", "D",
"E", "F"));
System.out.println("교집합" + new ListUtil().intersection(list1, list2));
System.out.println("합집합" + new ListUtil().union(list1, list2));
}
public <T> List<T> union(List<T> list1, List<T> list2) {
Set<T> set = new HashSet<T>();
set.addAll(list1);
set.addAll(list2);
return new ArrayList<T>(set);
}
public <T> List<T> intersection(List<T> list1, List<T> list2) {
List<T> list = new ArrayList<T>();
for (T t : list1) {
if (list2.contains(t)) {
list.add(t);
}
}
return list;
}
}
File 클래스는 파일의 내용을 수정하거나 입력하는 클래스가 아니라, 파일이나 디렉토리 자체를 담는 클래스이다.
즉, File 객체는 파일경로명이나 파일명과 비슷한 것으로 생각할 수 있다. 파일에 입력이나 수정을 하려면 File 객체를 FileWriter 또는 FileInputStream 등의 객체에 전달해서 그 객체에서 사용해야 한다.
import java.io.File;
public class FileTest {
public static void main(String[] args) {
// File 객체 생성(이미 존재하는 파일)
File f = new File("FileTest.txt");
// 현재 프로젝트 폴더내에 생성
File dir = new File("FileTestDir");
if(dir.mkdir()) {
// 폴더가 존재하지 않다면
System.out.println("true");
} else {
// 폴더가 존재한다면
System.out.println("False");
}
// 파일 또는 디렉토리의 절대 경로명
System.out.println(f.getAbsolutePath());
System.out.println(dir.getAbsolutePath());
// 파일 또는 디렉토리 삭제
boolean deletedCheck = dir.delete();
System.out.println(deletedCheck != false ? "삭제 성공" : "삭제 실패");
}
}
public class HelloAndroidActivity extends Activity {
Button _clickBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // 초기에 띄워줄 화면
// 초기화
_clickBtn = (Button) findViewById(R.id.btn_click);
// 이벤트 리스너
_clickBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 매개변수 1 : context 내가 사용할 응용프로그램 자체
// 매개변수 2 : 출력할 문자
// 매개변수 3 : 화면에 보여줄 시간
Toast.makeText(HelloAndroidActivity.this, "test", Toast.LENGTH_LONG).show();
// Toast.makeText(getApplicationContext(), "test",Toast.LENGTH_LONG).show();
// 아래 변수를 생성해주어야만 사용 가능
// final Context thisContext = this.getApplicationContext();
// Toast.makeText(thisContext, "test",Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.hello_android, menu);
return true;
}
}