전체 글406 출력 스트림 FileOutputStream 활용 3 개발일지/자바 2022. 10. 5. 출력 스트림 FileOutputStream 활용 2 개발일지/자바 2022. 10. 5. 출력 스트림 FileOutputStream 활용 1 입력 스트림의 반대인 출력 스트림이다. 출력 스트림이란!!! 파일에 값을 출력하는 것이다. (파일에 값을 집어 넣는것) 데이터를 출력하기위해서는 파일에 값을 써야하는 것이므로 .Write를 사용한다. 밑에 코드를 보면 Write()를 하나 하나 사용하면서 1바이트씩 넣어주는 코드이다. .Write()에 매개변수값을 아스키코드(정수)와 문자를 넣을수가 있다 만약에 파일에 값을 넣어 줘야하는데 파일이 없다? 그러면 파일을 만들어서 값을 넣어주게된다. 개발일지/자바 2022. 10. 5. 입력 스트림 (FileInputStream) 활용 2 **AutoCloseable 인터페이스 - java 1.7 에서부터 사용됨 => 일정시간동안 사용하지 않으면, 자동으로 Close 해주는 메소드를 소유한 인터페이스 이 인터페이스가 implements 클래스는 close()하지 않아도 자동으로 연결해제 됩니다. 매번 출력으로 한글자씩 데이터를 가져왔다면 이번엔 while문을 이용하여 가져오는 방법이다. 이때 try문을 사용할때 다른방법으로 사용한다 중괄호가아닌 일반괄호를 사용하는 것이다. try괄호안에서 FileInputStream 초기화를 해주면서 파일명 써줌으로써 한줄에 코드를 작성 할 수 있다. while문의 조건은 true & flase로 줄수가있다. while문이 돌면서 데이터를 읽었을때 아스키코드가 -1이 아닐때까지 계속 데이터를 계속 읽어낸다.. 개발일지/자바 2022. 10. 5. 입력 스트림 (FileInputStream) 활용 ※※※※※ 파일에서 1바이트씩 데이터 읽기 ※※※※※※ 파일안에 있는 문자를 읽기위해서는 FileInputStream 을 사용한다. 전역에서 FileInputStream을 null값으로 초기화를 해주고나서 try / catch 안에서 FileInputStream 객체 생성 해준다. 이때 FileInputStream 생성시 매개변수로 파일명을 넣어준다. 여기까지가 1바이트씩 데이터를 읽어올 파일을 지목한 상태이다. 그럼 읽기 위해서는 .read를 사용해서 1바이트씩 출력해주면된다 이때 char(문자)로 형변환을 해주지않으면 아스키코드로 읽어오기때문에 형변환은 꼭 해주자!!! [Close()] => Java 코드가 메모리에 생성한 것이 아닌 것과 작성을 할 때는 사용이 끝나면 사용이 종료 되었다는 것을알려주.. 개발일지/자바 2022. 10. 5. 입력 스트림 활용 - System.in.read() 밑의 그림 코드의 흐름을보면 정수타입에 값을 while문이 도는 동안 계속 입력을 받고있는중이다 그런데 조건이 '\n'(엔터키) 아닐때까지 돈다는 의미이다. 즉 엔터키가 눌러지면 while문을 종료를 시키는 흐름이다. abc를 입력을받고 엔터키를 누르게 되면 입력받은 값이 모두 인코딩된 코드값을 볼수가 있다. 마지막에는 엔터키의 아스키코드 값 13도 잘 출력이 되는걸 볼수가있다. 개발일지/자바 2022. 10. 5. 입력 스트림(System.in.read()) ※※※※※※※※ System.in.read() : 1바이트씩 읽는다 ※※※※※※※ 입력 스트림이란 말그대로 입력을 받아주는 통로라고 생각하면 된다. 밑에 코드를 실행하게 되면 흐름이 System.in.read(); 부분에서 in -> 입력 // read -> 읽다 라는 뜻이다. 즉 키보드에 입력을 받은걸 읽어서 out -> 출력을 해주는 것이다. 출력 결과에서보면 System.in.read();은 키코드(아스키 코드)의 값을 인지한다 그래서 7의 아스키코드 값은 55가 출력이 되는것이다. 개발일지/자바 2022. 10. 5. Lambda(람다식) 람다식을 활용한 두 수 비교하기 1. 먼저 두 수를 비교를 하는 기능을 편하게 쓰기위해서 인터페이스를 생성해준다 2. 두 수를 받을수있도록 메소드를 만들어 매개변수를 받아준다. 3. 인터페이스를 선언해 괄호안에 매개변수를 넣어주고나서 화살표 함수를 써주고 중괄호를 써준다 메소드의 선언부에서 반환자료형이 int로 되었다 즉 리턴을 해줘야하므로 중괄호안에 두 수를 비교해주는 식을 써주면 된다. 4. 그럼 언제든지 빠르게 두수를 비교하는 함수를 간편하게 반복적으로 사용이 가능하다. 하지만 단점이 있다 가독성이 떨어지는 단점이다 개발일지/자바 2022. 10. 5. Lambda(람다식) 활용 람다식(Lambda expression) 함수형 프로그래밍과 람다식 자바 객지 지향 프로그래밍 : 기능을 수행하기 위해서 객체를 만들고 그 객체 내무에 멤버 변수를 선언해서 수행하는 메소드를 구현 한다. 자바 8 부터는 함수형 프로그래밍 방식을 지원하고 이름 람다식이라고 한다. 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식 함수형 프로그래밍 함수형 프로그래밍(Functional Programming : FP) 함수형 프롷그래밍은 순수함수를 구현하고 호출함으로써 외부 자료에 부수적인 영향 주지 않도록 구현하는 방식 입니다 순수 함수란 매개변수만을 사용하여 만드는 함수라고 보면 된다. (pure function) 즉, 함수 내부에서 함수 외부에 있는 변수에 영향을 주지 않습니다. *** 람다식 문법 *.. 개발일지/자바 2022. 10. 5. List 사용법 List의 특징 (C R U D) 1. 인덱스가 있다. 2. 순서가 있고, 중복이 가능하다. 선언하는 방법(정수 타입 리스트) ( ) 꺽쇠 안에는 어떠한 데이터를 리스트에 담느냐에 따라 정해진다. 값 추가 하는 방법 값을 추가할때 .add(); 를 사용하면된다. add(추가) 할때마다 순서대로 값이 리스트안에 담겨진다. 지정 인덱스값 위치에 값 추가하는 방법 인덱스 0번째 지정해서 값을 추가하는 것도 가능하다 그리고 따로 인덱스값을 주지않고 null을 사용하게되면 리스트의 맨뒤에 null값이 들어간다. 지정 인덱스 위치 값 삭제 하는 방법 .remove를 사용하면 값을 삭제를 할수가있다. 1. 괄호안에 지정한 인덱스값을 넣게되면 지정한 인덱스위치의 값을 remove(삭제)를 한다. 2. 만약 인덱.. 개발일지/자바 2022. 10. 4. String과 StringBuilder, StringBuffer의 차이점 Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있다. 문자열을 변수에 담아서 두 변수를 합칠때 String을 두번 생성해야한다. 메모리낭비!!!! 하지만 StringBuilder, StringBuffer를 사용하게되면 힙메모리에 한번만 new 하게 된다. 그리고나서 글자를 추가를 원하면 .append메소드를 사용하면 따로 new안해도 글자를 뒤에 추가를 할수가있다. (메모리 절약) 연산이 많지 않을때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없습니다. 그러나 연산횟수가 많아지거나 멀티쓰레드, Race condition 등의 상황이 자주 발생 한다면 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 .. 개발일지/자바 2022. 10. 4. identityHashCode, hasCode의 차이점 identityHashCode란 System.identityHashCode()는 객체의 고유한 hashcode를 리턴하는 메소드이다. 인자로 전달된 객체에 대한 hashcode가 int로 리턴이된다. hasCode란 hashCode()는 모든 객체의 부모 클래스인 Object 클래스에 정의되어있다. 그리고 하위 클래스들은 hashCode()를 오버라이드할 수 있다. 그렇기 때문에 다음과 같이 서로 다른 객체이지만 hashcode가 동일한 경우가 있다. identityHashCode 와 hasCode 정리 Object의 hashCode() 메소드는 하위 클래스에서 override가 가능하기 때문에 객체마다 유일한 값을 갖고 있지 않다. 객체의 특성이 동일하다는 것을 표현하기 위해 이 메소드를 오버라이드할 .. 개발일지/자바 2022. 10. 4. 이전 1 ··· 25 26 27 28 29 30 31 ··· 34 다음