java 10

toString 오버라이딩에 대해

class temp{ private String str; temp(String s){ str=s; } } public class Main { public static void main(String args[]) { temp t1=new temp("zz"); System.out.println(t1.toString()); } } //Devide_And_Conquer.temp@7c30a502 인스턴스의 내용을 print하고싶을때가 있습니다. 그럴때 이렇게 쓰면 내용이 아니라 클래스네임 @ 객체주소 해쉬코드 가 반환됩니다. 따라서 내용을 출력하고싶을때는 이때 temp 클래스의 toString을 오버라이딩하면됩니다. 1. toString 은 접근지시자가 protected이므로 , public 으로 오버라이딩해야합..

java 2024.03.15

제너릭 Generic

제너릭은 일반화 라는 의미를 가집니다. 그리고 그 일반화는 자료형에대한 일반화입니다. 만약 Box라는 클래스에 사과와 바나나를 넣어야한다면 1. 사과Box 와 바나나Box 클래스를 따로 작성할수 있습니다. 이렇게되면 코드가 많이 길어질 수 있습니다. 또한 사과Box 나 바나나Box나 제공하는 메소드가 같으므로 많이 겹치게 됩니다. 2. Object형을 인스턴스로 가지는 Box를 생성. 사과와 오렌지뿐아니라 뭐든지 담을 수 있는 박스가 만들어졌습니다. 하지만 이런경우 상자에 사과나 바나나를 꺼낼때 계속해서 형변환을 해주어야합니다. 3.제너릭 사용 제너릭을 사용하면 자료형에 의존적이지 않은 클래스를 정의할 수 있습니다. 이를 제네릭 클래스라고 부릅니다. class Box{ //타입매개변수 T를 사용하겠습니다..

java 2024.03.15

Array 사용법

1. 배열의 비교 1-1. 기본자료형에대한 배열의 비교 package Devide_And_Conquer; import java.util.Arrays; public class Main { public static void main(String args[]) { int[]a= {1,2,3,4}; int[]b= {1,2,3,4}; System.out.println(a==b); System.out.println(a.equals(b)); //위 둘은 참조값을 비교 //false //false int[]c=Arrays.copyOf(a,a.length); //Arrays 의 copyOf메소드는 새로운 배열을 생성하는 메소드이다 마찬가지로 System.out.println(a==c); System.out.println..

java 2024.03.13

Object 클래스

== 연산자는 참조변수의 참조값, 즉 reference 를 비교한다. class man{ String name; man(String str){ name=str; } } public class Main { public static void main(String args[]) { man m1=new man("minseok"); man m2=new man("minseok"); man m3=m1; System.out.println(m1==m2); System.out.println(m1==m3); } } //false //true 따라서, 인스턴스의 내용이 같은지 확인하려면 다른방법을 사용해야한다. Object 클래스의 equal 메소드는 ==와 마찬가지로 레퍼런스를 비교한다. 하지만 equals는 내용을 비교하..

java 2024.03.12

interface 정리

interface printable{ //프린터기와 윈도우를 연결하는 역할을 하는 마소에서 제공하는 인터페이스 //"컴퓨터에서 프린터는 이렇게 돌아가요~" int WIDTH=800; //인터페이스 내에 선언되는 변수의 특징은 다음과 같습니다. int HEIGHT=2000; //public, static, final void print(String doc); //추상메소드 >> body 즉 구현 implement가 빠짐 //모든 메서드는 public이 선언된것으로 간주합니다. } class printerA implements printable{ //implement //삼성에서 만든 프린터 드라이버 ver1 @Override public void print(String doc) { System.out.pr..

java 2024.03.11

super ? 상속의 규칙

class man{ //상위 클래스 String name; public man(String str){ name=str; } public void whatisName(){ System.out.println(name); } } class student{ //하위 클래스 String school; int phone; public student(Str name,String str,int p){ super(name); //상위 클래스의 생성자를 호출합니다. school=str; phone=p; } } UML상에서 하위클래스 -> 상위클래스 방향으로 관계를 표현합니다 Student -> Man 상속의 규칙은 다음과 같습니다. Student st=new Student("Peter","Chung-Ang",25); 1...

java 2024.03.08

클래스 변수,메소드 와 인스턴스 변수,메소드의 차이?

static 선언을 붙여서 선언하는 클래스 변수는 왜 필요할까 ? 인스턴스 변수 > 인스턴스 생성 전에 초기화가 되기때문 } } class Main{ public static void main(String[] args){ System.out.println("PI값 : " + Circle.PI); //인스턴스 생성 없이 바로 접근했다 } } 보면 Circle의 인스턴스 생성 없이 바로 PI에 접근했다. 이말은 클래스 변수는 인스턴스 생성 이전에 메모리공간에 존재한다는 말이고, 해당 클래스 정보가 가상머신에 읽히는 순간 메모리공간에 할당되고 초기화된다. 클래스 메소드도 마찬가지다 >>인스턴스 생성 이전부터 접근이 가능하다 >>어느 인스턴스에도 속하지 않는다 class Printer(){ private int..

java 2024.03.07

Short-Circuit Evaluation

JAVA뿐만아니라 C++에서 논리연산자를 사용할 때가 많습니다. 알고리즘 문제를 풀때.... 논리연산자 AND 를 의미하는 && 와 논리연산자 OR 을 의미하는 || 를 사용할때 주의할점이 있습니다 함수 boolean functionA boolean functionB 가 있을때, boolean X=functionA || functionB 일때, 만약 functionA가 true를 반환하면 functionB가 true인지 false인지 상관없이 그냥 functionB를 보지 않습니다. 마찬가지로 booleanX=functionA && functionB 일때, functionA = false를 반환하면 functionB를 보지않습니다.

java 2024.03.06