#include #include #include #include #include #define BUFFER_SIZE 1024 #define WORD_MAX 100 int main() { int fd; int length=0, offset=0, count=0; char* fname = "ssu_test.txt"; char buf[WORD_MAX][BUFFER_SIZE]; int i; if((fd=open(fname, O_RDONLY))
BufferedReader 기존에 java에서 입출력을 관리할때는 흔히 Scanner를 사용했다. Scanner는 정수값으로 int, long, short, 부동소수값으로 float, double, 문자열은 String값으로 구분해서 읽을 수 있다. Scanner sc = new Scanner(System.in); int i = sc.nextInt(); long l = sc.nextLong(); short s = sc.nextShort(); float f = sc.nextFloat(); Double d = sc.nextDouble(); String str = sc.next(); String str2 = sc.nextLine(); 반면 BufferedReader는 문자열만을 읽을 수 있기 때문에 Scann..
개요 "자바에서 객체의 동등성 비교를 위해서는 equals() 메서드가 사용되며, equals()메서드를 오버라이딩해줄 경우 hashCode()메서드도 오버라이딩해 주어야 한다. 단, 역은 성립하지 않는다" 자바를 처음 공부했을 때 equals와 hashCode라는 메서드에 대해서 나는 이정도로만 이해하고 있었다. 그런데 여러 프로젝트를 진행하면서도 equals를 오버라이딩 할 일이 없어서 한번 실습하면서 정리해보려고 한다. equals와 hashCode앞서 이야기했듯이 equals는 참조 변수의 동등성을 비교하는 함수이다. 최상위 클래스인 Object 클래스를 들어가보면 equals() 메서드를 확인할 수 있는데, 위와 같이 '=='연산을 통해 단순히 두 객체의 참조(주소)가 같은지를 비교하고 있다. ..
java에서 static키워드를 사용하면 객체를 생성하지 않고 클래스의 필드와 메서드를 바로 사용할 수 있다. 그래서 객체에 할당될 메모리를 절약하거나, 코드의 길이를 줄일 수 있다. 여기까지는 자바 개념만 배우면서도 알 수 있는 내용이다. 그런데 이번에 웹 프로젝트 코드를 짜면서 '어떤 경우에 static으로 사용하고, 어떤 경우에 인스턴스를 생성해서 사용해야 할지 기준에 대한 명확한 이해가 가지 않았다. 내 머리로는 객체지향적 관점에서 클래스명으로 접근한다는 것은 클래스, 즉 설계적 관점에서 접근한다는 의미이고, 인스턴스로 접근한다면 그 '고유한 객체'만의 속성에 접근한다는 의미이지 않을까? 정도까지만 생각이 가능했다. Human.getAgeAvg(); Human human1 = new Human("..
Comparable과 Comparator는 둘 다 객체 비교를 위한 인터페이스이다. 따라서 이것들의 사용을 위해서는 인터페이스 내에 선언된 메소드를 반드시 오버라이드 해주어야 한다. 요즘 정리하고 있는 jpa에서의 값 타입에서 컬럼 분리를 위해서 equalsTo 메소드를 오버라이드 해주는 것과 비슷한 맥락인데, 이 비교를 위한 메소드도 자바에서 primitive type 자료형은 값의 비교가 이루어지고, reference type은 참조 비교가 이루어진다는 사실 때문이다. 풀어서 설명하자면, int나 long같은 primitive type의 경우 부등호를 이용하여 간단하게 비교할 수 있다. int a=1; int b=2; System.out.println(a 0반환 3. 작으면 > 양수값 반환 간단하게 ..