본문 바로가기

728x90

Backend/Java

(7)
[JAVA] 주민등록번호 검증 프로그램 # 콘솔용으로 간단한 주민등록번호 검증 기능을 만들어 보았다. 1) 길이 검증 2) 숫자 포맷 검증 3) 주민등록번호 마지막 숫자(검증번호)를 이용한 검증 class RegistrationNumberVerficationManager { private String input; private int totalCount; private int correctCount; private int errorCount; private int abnormalCount; private Scanner sc = new Scanner(System.in); // 생성자 public RegistrationNumberVerficationManager() { start(); } // 시작해주는 함수 private void start()..
[JAVA] ObjectStream을 이용한 Socket 통신 String으로만 소켓 통신을 한다면, 파일 같은 자료구조나 클래스는 보낼 수 없다. 따라서 소켓 통신을 할때 ObjectStream 으로 객체를 이용하여 통신을 하도록 하는 것이 좋다. 이때 객체는 Serializabe을 implements 한 직렬화한 클래스 여야 한다. * 먼저 기본적으로 어떻게 동작하는지 살펴보겠다. 단순히 서버에 로그인 한걸 알리는 코드이다. public class Member implements Serializable { private static final long serialVersionUID = 1L; private String id; private String pwd; public String getId() { return id; } public void setId(St..
[JAVA] 간단한 고객관리프로그램 * 고객관리 할 수 있는 프로그램을 AWT로 GUI를 구성하여 만들었습니다. String의 사용을 최대한 줄이고, StringBuffer를 사용하여 메모리 낭비를 줄이도록 하였습니다. ObjectStream을 이용하여 입출력 할 수 있도록 하였습니다. 파일을 저장, 새이름으로 저장, 불러오기 등 io를 사용할 수 있도록 구성하였습니다. ObjectStream을 사용하지 않고 객체 직렬화하지 않는 함수도 포함하였습니다. 복잡한 프로그램이 아니기에 Customer.java, CustomerManager.java 두개의 클래스만으로 구성하였고 이벤트 관련 리스너를 클래스안에서 모두 처리하도록 하였습니다. 화면 구성도 별도의 클래스로 panel를 나누지 않고 buildGUI 라는 함수안에서 모두 처리할 수 있도..
[JAVA] 계산기 만들기 * 계산식이 나오지 않고 동작하는 옛날 계산기 방식의 단순한 프로그램을 AWT로 GUI를 구성하여 만들었습니다. 코드) import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Label; import java.awt.Panel; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import jav..
[JAVA] 객체의 직렬화, ObjectOutputStream, ObjectInputStream 직렬화(Serialize) 란? 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술. JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술과 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태를 같이 이야기합니다. 직렬화를 통해 프로그램이 실행되는 동안 생성된 객체를 스트림을 이용해서 지속적으로 보관하거나 전송 할 수 잇다. 역직렬화(Deserialize) 란? byte로 변환된 Data를 원래대로 Object나 Data로 변환하는 기술을 역직렬화(Deserialize)라고 부릅니다. 직렬화된 바이트 형태..
[JAVA] String, StringBuffer, StringBuilder 의 차이점 이번 주제는 자주 사용하는 클래스인 String, StringBuffer 그리고 익숙하지는 않지만 중요한 StringBuilder 클래스에 대해서 알아보고자 한다. | String Java 코딩을 하다보면, String 클래스를 사용하는데 문자열을 추가하고 할때 String s1 ="text" + " good"'; 이런식으로 "+" 연산자를 이용하여 문자열을 더한다. 하지만 메모리를 효율적으로 사용하고자 할때, 고민을 하고 사용해야 한다. 그 이유를 설명하자면 다음과 같다. 이렇게 코딩이 되어있다면 당연히 결과는 "안녕하세요 반가워요"라고 콘솔에 출력할 것이다. 그렇다면 메모리구조는 어떻게 될까? public class Main { public static void main(String[] args) {..
[JAVA] 추상클래스(Abstract Class) * 추상메서드 - 추상메소드란 선언은 되어 있으나 코드가 구현되어 있지 않은 껍데기만 있는 메소드이다. * 추상클래스 : 추상클래스는 추상 메서드가 하나라도 있으면 그 클래스는 추상클래스가 된다. (만드는 2가지 방법 ) 1) 추상 메소드를 포함하는 클래스 2) 추상 메소드가 없지만 abstract(예약어)로 선언한 클래스 * 추상 클래스는 객체를 생성할 수 없다. 응용프로그램은 추상 클래스의 객체(인스턴스)를 생성할 수 없다. 추상클래스는 본래 객체를 생성할 목적으로 만드는 클래스가 아니다. 추상 클래스에는 실행 코드가 없는 미완성 상태인 추상 메소드가 있을 수 있기 때문에, 추상 클래스의 객체를 생성하는 코드에는 컴파일 오류가 발생한다. 컴파일 오류 , 추상 클래스의 객체를 생성할 수 없다. 그러나,..

728x90