JDK 환경변수 설정 이유 Java 깔고 나서 바로 환경변수 설정을 바로 해야 한다. 왜냐하면 cmd창에서 javac(*.java-> *.class), java(*.class 실행) 등과 같은 툴을 사용하려면 툴이 있는 경로로 이동해서 실행을 해야 한다. 그래서 그러지 않고 아무 경로에서나 실행할 수 있게 하기 위해서 환경변수 path에 툴 경로를 지정해줘야 한다. 만약에 환경변수가 지정 돼 있지 않다면 java파일을 컴파일 하고 실행시키려면 툴이 있는 경로에 파일을 둬야 한다. 그러지 않고 java파일이 어느경로에 있던 상관없이 컴파일 하고 실행시키려고 환경변수 path에 아래 툴 경로를 지정해 주는것이다. 이제부터 Java를 다운받고 나서 환경변수를 세팅해보자. Java 다운받는 방법 모르는 사람은 ..
네트워킹이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크 를 구성하는 것을 말한다. 자바에서 제공하는 java.net 패키지를 사용하면 이러한 네트워크 어플리케이션의 데이터 통신 부분을 쉽게 작성할 수 있다. 클라이언트/서버 클라이언트/서버 는 컴퓨터간의 관계를 역할로 구분하는 개념이다. 서버는 서비스를 제공하는 컴퓨터 이고, 클라이언트는 서비스를 사용하는 컴퓨터가 된다. 하드웨어의 사양에 관계없이 서비스를 제공하는 소프트웨어가 실행되는 컴퓨터를 서버라 한다. 서비스는 서버가 클라이언트로부터 요청받는 작업을 처리하여 그 결과를 제공하는 것을 뜻한다. 서버가 서비스를 제공하기 위해서는 서버프로그램이 있어야 하고 클라이언트가 서비스를 제공받기 위해서는 서버프로그램과 연결할 수 있는 클라이언트 프로그램이..
정수 자바의 정수를 표현하기 위한 자료형은 int, long 이다. (byte, short등도 있지만 거의 사용하지 않는다.) int와 long의 차이는 표현할 수 있는 숫자의 범위이다. 다음과 같이 사용한다. int age = 10; long countOfStar = 8764827384923849L; long 변수에 값을 대입할 때는 대입하는 숫자 값이 int 자료형의 최대값인 2147483647 보다 큰 경우 8764827384923849L과 같이 L 접미사(또는 소문자 l, 소문자 'l'은 숫자 1과 비슷하게 보이므로 추천하지 않는다.)를 붙여 주어야 한다. 만약 'L'과 같은 접미사를 누락하면 컴파일 에러가 발생한다. 실수 자바의 실수를 표현하기 위한 자료형은 float, double 이다. fl..
https://www.oracle.com/technetwork/java/javase/downloads/index.html Java SE - Downloads | Oracle Technology Network | Oracle Which Java package do I need? Software Developers: JDK (Java SE Development Kit). For Java Developers. Includes a complete JRE plus tools for developing, debugging, and monitoring Java applications. Administrators running applications on a server: Server www.oracle.com 링크를..
추상클래스에서 추상이라는 것은 완전히 구체화 되지 않은 것이다. 예를 들어 Animal이라는 클래스를 사용할때 누구는 Cat 누구는 Dog 이런식으로 구체화된 클래스를 만들어낼 것이다. Animal 클래스는 어떤 동물인지 구체화 되지않았기 때문에 추상클래스가 될수 있다. 프로그램상에서 Abstract Class를 사용하는 이유는 Animal을 강제로 구체화된 클래스로 만들라는 이유이다. Animal자체를 new Animal() 해서 인스턴스화 시키는걸 미연에 방지시키는 것이다. 그러면 강제로 프로그래머들은 Animal 클래스를 상속받아 어떤 동물인지 구체적으로 재정의하게 해줄것이다. 인터페이스는 단지 모형만 재정의 해준것이다. 변수와 함수를 정의해놓지 않기 때문에 인터페이스는 상속받는게 아니라 구현(Im..
Class는 변수와 함수를 가지고있는 한 구조체이다. 이것은 하나의 그냥 구조체인거지 이 Class를 사용하려면 컴퓨터상에서는 메모리에 올려야 한다. Class를 사용할수 있게 메모리에 올리면 그것은 Instance가 되는것이다. 예를 들어 Human이라는 하나의 클래스를 정의했다 치자. Human Class에는 변수와 함수가 정의 되어있을 것이고 이것을 사용하기 위해 Human man = new Human() 을 했을 것이다. 그러면 Human은 Class이고 man은 Instance이다. man은 new Human() 이라는 메모리에 올려진 하나의 클래스를 담은 변수이다. 이것은 곧 Instance이다.
제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 컬렉션을 사용할 때 제네릭을 특히 많이 사용한다. 하지만 파라미터로 컬렉션을 받을 때 제네릭이 Stirng이라면 String 제네릭을 가진 컬렉션만이 파라미터로 받아진다. public class Test { public static void main(String[] args) { List list1 = new ArrayList(); list1.add("1"); list1.add("1"); list1.add("1"); list1.add("1"); method1(list1); List list2 = new ArrayList(); list2.add(1); list2.add(1); list2.add(1); list..
Object 클래스 클래스를 선언할 때 extneds 키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속하게 된다. 따라서 자바의 모든 클래스는 Object 클래스의 자식이거나 자손 클래스이다. Object는 자바의 최상위 부모 클래스에 해당한다. 따라서 Object에 있는 메소드를 사용할 수 있는 것이다. 다음 대표적인 객체비교 equals() 메소드를 보자 객체 비교(equals()) equals() 메소드의 매개 타입은 Object인데, 이것은 모든 객체가 매개값으로 대입될 수있음을 말한다. 그 이유는 Object가 최상위 타입이므로 모든 객체는 Object 타입으로 자동 타입 변환될 수 있기 때문이다. 기본적으로 equals() 메소드는 비교 연산자인 =..
스레드의 이름스레드는 자신의 이름을 가지고 있따. 스레드의 이름으로 디버깅할 때 어떤 스레드가 어떤 작업을 하는지 조사할 목적으로 가끔 사용된다. 메인 스레드는 "main"이라는 이름을 가지고 있고, 우리가 직접 생성한 스레드는 자동적으로 "Thread-n"이라는 이름으로 설정된다. Thread-n 대신 다른 이름으로 설정하고 싶다면 Thread 클래스의 setName() 메소드로 변경하면 된다. public class ThreadNameExample { public static void main(String[] args) { Thread mainThread = Thread.currentThread(); System.out.println("프로그램 시작 스레드 이름: " + mainThread.getNa..
프로세스(process)와 스레드(thread) 프로세스란 간단히 말해서 '실행 중인 프로그램'이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 드리고 스레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 즉 프로세스는 CPU, 메모리 등의 자원과 스레드로 구성되어있고, 프로세스에 할당된 자원을 가지고 실제로 작업을 수행하는건 스레드이다. 그리고 프로세스에 자원을 할당해주는건 운영체제이다. 그래서 모든 프로세스에는 최소한 하나 이상의 스레드가 존재하며, 둘 이상의 스레드를 가진 프로세스를 '멀티스레드 프로세스(multi-threaded process..
Scanner 클래스 java.util 패키지의 Scanner 클래스를 이용하면 콘솔로부터 기본 타입의 값을 바로 읽을 수 있다. Scanner 객체를 생성하려면 다음과 같이 생성자에 System.in 매개값을 주면 된다. Scanner scanner = new Scanner(System.in) Scanner 메소드들은 콘솔에서 데이터를 입력한 후 Enter키를 누르면 동작하도록 되어 있다. 다음 예제를 보자 public class ScannerExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("문자열입력: "); String str = scanner.ne..
컬렉션 프레임워크(Collection Framework)컬렉션 프레임웍이란 데이터를 저장하는 클래스들을 표준화한 설계를 뜻한다. 컬렉션은 다수의 데이터, 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다. 애플리케이션을 개발하다 보면 다수의 객체를 저장해 두고 필요할 때마다 꺼내서 사용하는 경우가 많다. 만약 10개의 Product 객체를 저장해 두고, 필요할 때마다 하나씩 꺼내서 이용한다고 가정할때 배열을 사용할 것이다 배열은 쉽게 생성하고 사용할 수 있지만, 저장할 수 있는 객체 수가 배열을 생성할 때 결정되기 때문에 불특정 다수의 객체를 저장하기에는 문제가 있다. 물론 배열의 길이를 크게 생성하면 되지만, 이것은 좋은 방법이 될 수 없다. 배열의 또 다른 문제점은 객체를 삭제했을 때..