new()와 getInstance()의 차이 new() : 객체를 계속계속 만들 수 있다. getInstance() : 싱글턴패턴, 하나의 인스턴스만 가지고 공유해서 쓴다. 싱글턴패턴 : 생성자를 private로 선언하여 다른클래스에서 해당 클래스의 인스턴스를 new로 생성하지 못하게 하고, getInstance()함수를 통해서 인스턴스를 갖도록 한다. 자바는 클래스들로 이루어져 있고, 매번 새로운 객체를 생성합니다. 하지만 매번 새로운 객체를 생성하는 것이 아닌 한번만 새로운 객체를 생성하고 그후에는 모든 클래스들이 동일한 객체(인스턴스)를 써야 하는 경우가 생긴다면 어떻게 할것인가에 대한 해답이 위에 나온 getInstance()라는 메소드입니다. package what; public class Wh..
변수의 접근제어자가 private 인 경우, 다른 클래스 안에서 변수내용 변경이 불가능하며, 변수값 호출이 불가능하다. private 변수를 다른 클래스에서 불러올수 있도록 하는것이 Getter & Setter 다. - Human 클래스 (Getter & Setter 사용) package animal; public class Human extends Animal{ private String ssn; public String getSsn() { return ssn; } public void setSsn(String ssn) { if(ssn.length() > 12) { this.ssn = ssn; //외부에서 들어오는 ssn을 내꺼에 저장하겠다. } else { //모자란 수만큼 *로 입력해서 저장하기 w..

//응용문제3. //문자와 숫자를 입력받고, 문자에 입력받은 숫자만큼 건너뛴 문자를 출력해라. //예시.cat과 5를 입력 받았다면 hfy가 출력되어야함. 틀린 답안 System.out.println("문자를 입력해라"); Scanner sc = new Scanner(System.in); String ch = sc.nextLine(); System.out.println("숫자를 입력해라"); Scanner scn = new Scanner(System.in); int scn2 = scn.nextInt(); int ea = ch.length(); for(int i=0; i
//진법계 int iNum02 = 017; // 8진법 = 1 2 3 4 5 6 7 System.out.println(iNum02); //15 int iNum03 = 0xf; // 16진법(x+숫자) = 0 1 2 3 4 5 6 7 8 9 A B C D E F System.out.println(iNum03); //15 (f는 15번쨰임) int iNum04 = 0b10; // 2진법(0b+숫자) //0,1,10,11,100,101,110,111 System.out.println(iNum04); //2 //진법변환 System.out.println(Integer.toBinaryString(12)); //12를 2진법으로 System.out.println(Integer.toOctalString(12)); /..
1) String 클래스 데이터 (char[]/문자배열) + 메서드(문자열 다루는데 필요한) 내용을 변경할 수 없는 불변(immutable) 클래스 String a = "a"; String b = "b"; a = a + b; // "ab"문자열이 새로운 객체로 생성되는 것. (a객체가 바뀌는게 아님) 덧셈연산사(+)를 이용한 문자열 결합은 성능이 떨어짐. (계속 새로운 객체가 만들어지니까) 문자열의 결합/변경이 잦은경우, 내용변경 가능한 StringBuffer라는 클래스 사용. 2) 문자열의 비교 - String str1 = "abc"; String str2 = "abc"; // "abc"라는 같은 객체를 str과 str2가 함께 공유 str1 == str2 ? true -> 주소비교 str1.equal..
1) equals() - boolean 타입 - 객체자신(this)과 주어진 객체(obj)를 비교. 같으면 true, 다르면 false. - Object 클래스의 equals()는 객체의 주소를 비교 (참조변수 값 비교) - 인스턴스변수(iv)의 값을 비교하도록 equals()를 오버라이딩 해야한다. ex.예시 int value; Value(int value){ this.value=value; } public boolean equals(Object obj) { //2. Object의 equals()를 오버라이딩 -> 주소가 아닌 value를 비교 if(!(obj instanceof Value)) return false; //4. instanceof로 형변환 가능한지 확인 Value v = (Value)o..
1) hashCode() - 객체의 해시코드(hash code)를 반환하는 메서드 - Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환 ex. 예시 public class Object { public native int hashCode(); // native메서드엔 C언어로된 OS메서드가 적혀져 있는데 // 내용을 볼 수는 없지만 사용은 가능.메서드가 객체주소를 int로 변환해서 반환해줌. - equals()를 오버라이딩하면, hashCode()도 오버라이딩 해야 함. equals()의 결과가 true인 두 객체의 해시코드는 같아야 하기때문! ex. 예시 String str1 = new String("abc"); String str2 = new String("abc"); Sy..

[8-7] 다음은 1~100사이의 숫자를 맞추는 게임을 실행하던 도중에 숫자가 아닌 영문자를 넣어서 발생한 예외이다. 예외처리를 해서 숫자가 아닌 값을 입력했을 때는 다시 입력을 받도록 보완하라. public class Ex8_7 { public static void main(String[] args) { int answer = (int) (Math.random()*100)+1; int input =0; int count =0; do { count++; System.out.println("1과 100사이의 값을 입력해라"); input = new Scanner(System.in).nextInt(); if(answer > input) { System.out.println("더 큰수를 입력해라 : "+inp..
- Total
- Today
- Yesterday