JAVA23 JAVA 소개 및 환경설정 자바(Java)는 클래스 기반의 객체 지향 프로그래밍 언어로, 컴파일된 자바 바이트코드는 재컴파일 없이 자바가상머신을 지원하는 모든 플랫폼에서 실행될 수 있다. public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } `class` 키워드는 Java에서 새 클래스를 정의하는 데 사용된다. 이 경우 클래스의 이름은 HelloWorld이다. `public`키워드는 클래스가 어디에서나 액세스할 수 있도록 지정하는 제한자 이다. `static` 키워드는 main 메서드가 인스턴스 메서드가 아닌 클래스 메서드임을 지정한다. `void `키워드는 main 메서드가 값을 반환하지 않.. JAVA 2023. 1. 24. Eclipse 구성, 주요 단축키, 신규 프로젝트 생성 Eclipse 단축키 Ctrl+Shift+L : 단축키 리스팅 ▶이동 F3 : 변수 매소드 선언부로 이동 Ctrl+클릭 : 개체 이동 Ctrl+Shift+G : 참조 이동 Alt+Left : 이전 커서 위치로 이동 Alt+Right : 다음 커서 위치로 이동 Ctrl+L : 라인이동 ▶찾기 Ctrl+Alt+G : 전체 Workspace에서 선택한 문자열 찾기 Ctrl+K : 선택한 문자열을 파일 내에서 다음 찾기 Ctrl+Shift+K : 선택한 문자열을 파일 내에서 이전 찾기 Ctrl+F : 찾기 Ctrl+H : 전체 Workspace에서 찾기 ▶주석 Ctrl+Shift+/ : 블록 주석 처리 Ctrl+Shift+\ : 블록 주석 제거 Ctrl+/ : 라인선택 후 한줄 주석 처리 또는 제거 ▶클래스 C.. JAVA 2023. 1. 24. 자바클래스 생성 및 인스턴싱 클래스 생성시 사용되는 접근제한자 - private : 자신외에 외부 클래스 사용 불가 - public : 외부 클래스에서 사용 가능 - protected : 자신과 상속받은 클래스에서만 사용가능 속성(property) - 정적 정보 - getter/setter로 구성(캡슐화 : 직접적으로 변수에 접근을 제한) 메서드(method) - 동적 기능 수행 - 입력변수는 없거나 여러개의 변수가 전달되며, 리턴타입은 void, String, int, Object 등을 지정한다. - 리턴값이 없는 경우 void형으로 선언한다. Car클래스 예제 Car클래스 : 필드와 메서드 정의 NewCar클래스 : Car클래스를 인스턴싱해서 속성과 메서드를 사용 클래스 인스턴싱 : NCar mycar = new NCar() p.. JAVA 2023. 1. 24. 자바 자료형 및 연산자 자료형 자료 유형 byte(1), short(2), int(4), long(8), float(4), double(8), char(2, 유니코드), String, Boolean(1) 상수 선언 final int J = 10; //단 1회만 값을 입력가능 변수 선언 - 영문으로 시작, 대소문자 구분, 특수문자($, _ 제외) 사용불가 boolean isFun = true; char c ='f'; //2바이트 int x = 59; long big = 3456789L; //(값을 적을때는 뒤에 소문자 l이나 대문자 L을 적어야 합니다.) float f = 32.5f //(float에 값을 대입할 때는 실수 뒤에 소문자 f나 대문자 F를 붙여야 합니다.) double d = 23.34; String str1 = .. JAVA 2023. 1. 24. 자바 조건문 if switch if문 조건에 따른 분기가 작을 경우 및 복합조건의 경우 사용한다. package javaStudy; import java.util.ArrayList; public class ifExam { public static void main(String[] args) { boolean hasCard = true; ArrayList pocket = new ArrayList(); pocket.add("paper"); pocket.add("handphone"); if (pocket.contains("money")) { System.out.println("택시를 타고 가라"); }else if(hasCard) { System.out.println("택시를 타고 가라"); }else { System.out.println.. JAVA 2023. 1. 24. 자바 반복문 for do while do while문 – 한번은 반드시 실행 package javaStudy; import java.util.Scanner; public class DoWhileExam { public static void main(String[] args) { int value = 0; /*Scanner는 java.util 패키지에 있는 클래스로써 키보드로 부터 값을 입력받는다던지 할 때 유용하게 사용할 수 있는 클래스이다.*/ Scanner scan = new Scanner(System.in); //키보드로부터 값을 입력받을 수 있는 Scanner객체가 생성된다. do{ value = scan.nextInt(); // Scanner클래스를 이용하여 키보드로 부터 숫자값을 입력받는다. System.out.println(".. JAVA 2023. 1. 24. 자바 static 변수 및 static 메서드 Static(정적) 변수와 static 메소드는 클래스변수로 Class를 인스턴스하지 않아도 참조할 수 있다. 메모리의 데이터영역에 저장하여 인스턴스를 생성하지 않아도 변수값을 공유할 수 있는 장점이 있다. Static은 상수나 싱글톤을 구현할 때 주로 사용된다. package javaStudy; class PiClass { public static final double PI = 3.1415;//final을 사용하여 변경되지 않는 상수값을 지정 } public class MainClass { public static void main(String[] args) { System.out.println("원주율 : " + PiClass.PI); //클래스를 인스턴스 생성없이 참조 } } package jav.. JAVA 2023. 1. 24. 자바 String 클래스 String도 클래스로서 다양한 메서드를 제공한다. String 주요 기능(메서드) concat : 문자열 연결 substring : 문자열 자르기 length : 문자열 길이 toUpperCase : 대문자로 만들기 toLowerCase : 소문자로 만들기 charAt : 특정위치의 글자 찾기 indexOf : 특정문자열의 위치 equals : 문자열 비교 trim : 문자열 공백제거 replace : 특정문자 변경 repalceAll : 특정문자열 변경 startsWith : 특정문자로 시작하는지 contains : 특정문자가 포함되었는지 package javaStudy; public class StringClass { public static void main(String[] args) { Stri.. JAVA 2023. 1. 24. 자바 생성자 클래스명과 이름이 같은 메소드로 클래스가 인스턴싱할 때 사용됨. 비선언시 디폴트 생성자가 생성됨. package javaStudy; class OpenCar{ String name; int number; public OpenCar(String n){ name = n; this.name = n; //this는 자기자신을 의미 } } public class CarExam{ public static void main(String args[]){ OpenCar c1 = new OpenCar("소방차"); OpenCar c2 = new OpenCar("구급차"); //Car c3 = new Car(); // 컴파일 오류가 발생합니다. System.out.println(c1.name); System.out.prin.. JAVA 2023. 1. 24. 자바 오버로딩 오버로딩은 쉽게 이름은 같지만 형상이 다른 메서드로 이해하면 된다. 메서드명은 같지만 입력받는 인자와 리턴되는 인자가 다르면 다른 메서드이다. package javaStudy; class OverLoadingClass{ public int plus(int x, int y){ return x+y; } public int plus(int x, int y, int z){ return x + y + z; } public String plus(String x, String y){ return x + y; } } 생성자 오버로딩 생성자명은 같지만 입력받는 인자의 갯수 및 타입이 다르다. package javaStudy; public class OverloadingCar{ String name; int number;.. JAVA 2023. 1. 24. 자바 클래스 상속 클래스 상속을 어렵게 이해할 필요가 없다. 그냥 부모클래스를 상속하여 기능을 확장하기 위해 extends 키워드를 사용하여 상속 한다. 이 정도만 알면 된다. 부모에게 있는 것을 그대로 써도 되고 수정해서 써도 된다. 수정해서 사용하면 그게 오버라이딩이다. 부모에게 없는 것은 새로 만들어서 써도 된다. package javaStudy; //Car 클래스 class Car{ public void run(){ System.out.println("달리다."); } } //Bus 클래스 - Car상속해서 ppangppang메소드 추가 class Bus extends Car{ public void ppangppang(){ System.out.println("빵빵"); } } //Bus 클래스사용 - run메소드 .. JAVA 2023. 1. 24. 자바 추상 클래스 추상 클래스는 직접 인스턴스를 생성할 수 없는 부모로서만 역할을 하며 abstract를 맨앞에 붙여 생성한다. 추상 메소드란, 내용이 없는 빈 메소드로 리턴 타입 앞에 abstract라는 키워드를 붙여 선언한다. 자식 클래스는 추상클래스를 상속받아서 확장할 때 반드시 추상 메소드는 오버라이드해서 내용을 구현해야 한다. 추상클래스는 스스로는 추상적인 존재일 뿐 실체로서 동작할 수 없고 상속받는 객체가 가져야 하는 틀(형상)을 강요할 뿐이다. (ex 포유류>인간, 포유류>곰) package javaStudy; abstract class Bird{ public abstract void sing(); //추상 메소드 public void fly(){ System.out.println("날다."); } } cla.. JAVA 2023. 1. 24. super키워드 - 부모 클래스 접근 Super()는 부모 클래스의 생성자를 의미하며 super.(점){method}로 부모 클래스의 메소드를 접근할 수 있다. package javaStudy; //Car 클래스 class CarTests{ public CarTests(String name){ System.out.println(name + " 을 받아들이는 생성자입니다."); } public void run(){ System.out.println("달리다."); } } //Bus 클래스 - Car상속해서 ppangppang메소드 추가 class BusClass extends CarTests{ public BusClass(){ super("소방차"); // 문자열을 매개변수로 받는 부모 생성자를 호출하였다. System.out.println(.. JAVA 2023. 1. 24. 오버라이드 & 클래스 형변환 오버라이드는 상속한 부모클래스의 메소드를 그대로 사용하지 않고 재선언해서 기능수정 오버라이드 함수는 부모메소드 인자의 타입 및 개수가 일치해야 한다. 오버로딩은 이름은 같지만 다른 인자와 리턴등이 다르며 클래스 상속과 굳이 관련이 없다. 상속받았는데 기능 확장을 위해 메서드의 내용을 개조한 것이 오버라이드이다. package javaStudy; //Car 클래스 class Cars{ public Cars(String name){ System.out.println(name + " 을 받아들이는 생성자입니다."); } public void run(){ System.out.println("달리다."); } } //Bus 클래스 - Car상속해서 ppangppang메소드 추가 class Buss extends .. JAVA 2023. 1. 24. 자바 인터페이스 인터페이스는 추상클래스와 달리 클래스가 아니며 extends가 아닌 implements해서 실체를 구현해야 한다. 추상화된 공통 형태를 제공하는 녀석으로 이것을 인터페이싱한 클래스에서 동일한 기능을 하는 메소드가 존재하도록 구현을 강제하는 역할을 수행한다. 구현 객체의 동일한 동작을 보장하기 위해서 사용되며 동일 인터페이스를 사용한 클래스는 동일한 동작 (상호작용)을 하는 메서드를 갖는다. 객체가 A를 인터페이싱하였다면 항상 동일한 접근을 통해 제어(예를 들어 DI : 의존성주입)가 보장된다. 스프링 프레임워크에서 이 인터페이스를 유난히 많이 사용한다. 말이 어렵고 설명하기도 어렵다. '내가 이렇게 생겼으니까 너도 이렇게 생겨야 해' 머 이런 식의 껍데기만 제공한다고 보면 될 것 같다. implement.. JAVA 2023. 1. 24. 자바 예외처리 try ~ catch ~ finally try catch finally문을 사용하여 오류 제어 package javaStudy; public class ExceptionExam { public static void main(String[] args) { int i = 10; int j = 0; try{ int k = divide(i, j); System.out.println(k); } catch(ArithmeticException e){ System.out.println("0으로 나눌수 없습니다."); } finally { //finally는 필수가 아니나 반드시 실행해야할 코드가 있을 경우 사용 System.out.println("종료"); } } //호출한 곳으로 오류를 던진다. -> 호출한 메소드에서 오류제어 해야 한다. public s.. JAVA 2023. 1. 24. 자바 list ArrayList는 배열과 비슷하고 인덱스가 존재하며, 데이터는 중복되어도 상관 없다. add를 사용하여 객체(문자, 숫자, Map, Object)를 저장한다. 해당 인덱스로 get을 사용하여 객체를 가져와서 형변환하여 사용한다. 게시판 목록이나 쿼리결과를 목록으로 저장하고 전달할 때 유용하게 사용하며 매우 중요한 자료구조형이다. package javaStudy; import java.util.ArrayList; import java.util.List; public class ListExam { public static void main(String[] args) { List list = new ArrayList(); // list에 3개의 문자열을 저장합니다. list.add("kim"); list.a.. JAVA 2023. 1. 24. 자바 hashmap Map은 key와 value를 쌍으로 저장하는 자료구조로 키는 중복될 수 없고, 값은 중복될 수 있다. put, get 메소드를 사용하여 값의 추가와 가져오기가 가능하다. Generic을 사용하여 값의 타입을 정의할 수 있다. - Generic이라는 문법이 사용됨으로써 인스턴스를 만들때 사용하는 타입을 지정 Map map = HashMap(); package javaStudy; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapExam { public static void main(String[] args) { Map map = new HashMap();.. JAVA 2023. 1. 24. 자바 파일입출력 파일에서 한 줄씩 입력 받아서 파일에 출력 -> 파일에서 읽기위해서 FileReader 클래스 이용, 한 줄 읽어 들이기 위해서 BufferedReader 클래스 이용 BufferedReader 클래스가 가지고 있는 readLine() 메소드가 한줄씩 읽게 해준다. readLine()메소드는 읽어낼 때 더 이상 읽어 들일 내용이 없을 때 null을 리턴한다. 파일에 쓰게하기 위해서 FileWriter 클래스 이용, 편리하게 출력하기 위해서 PrintWriter 클래스 이용 package javaStudy; import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;.. JAVA 2023. 1. 24. 자바 쓰레드 Runnable인터페이스가 가지고 있는 run()메소드를 구현한뒤, 쓰레드 생성자에 넘겨서 쓰레드를 생성 쓰레드는 프로그램내에 하나의 프로그램처럼 비동기적으로 동작한다. 데몬을 구현하거나 상호 간섭없는 병렬처리를 구현할 때 사용한다. 프로세스 갯수와 디스크, 메모리 IO에 영향을 받아 단일 쓰레드보다 느려질 수 있으므로 쓰레드갯수는 제한적으로 사용한다. 쓰레드 예제 package javaStudy; //Runnable 인터페이스가 가지고 있는 run()메소드를 구현한다. class MyThread implements Runnable { String str; public MyThread(String str){ this.str = str; } public void run(){ for(int i = 0; i .. JAVA 2023. 1. 24. URLConnection객체 : 웹페이지 가져오기 특정페이지를 가져올 때 간단하게 사용한다. 파이썬으로 주로 크롤링을 개발하지만 생각보다 자바로도 크롤링을 구현하는게 어렵지않다. 크롬드라이버를 써서 구현할 수도 있다. 자바의 장점은 쓰레드 구현이 쉬워서 다중으로 처리할 경우 의외로 편하다. package javaStudy; import java.io.BufferedReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.Scanner; class URLConEx { public URLConEx() { String co.. JAVA 2023. 1. 24. 자바 JDBC JDBC에서 CRUD를 구현을 위해 주로 사용하는 객체와 매소드를 한 포스팅에 요약하였다. DriverManager - 드라이버관리자(db에 맞는 드라이버 로딩) Connection - DB연결 객체 Statement – 쿼리 실행 객체 PreparedStatement - 준비된 쿼리 실행 객체 ResultSet – 쿼리 결과 집합 객체 package javaStudy; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public clas.. JAVA 2023. 1. 24. JAVA JSONObject JSONObject - {키:값, 키:값, 키:값, 키:값} JSONArray – [JSONObject, JSONObject, …] [{키:값, 키:값, 키:값, 키:값}, {키:값, 키:값, 키:값, 키:값}, ..] 형태로 구성된다. JSONArray는 자바의 ArrayList컬렉션과 비슷하고 JSONObject는 자바의 HashMap컬렉션과 비슷하다. JSONArray는 get(인덱스순번)으로 가져오고 JSONObject는 get(키)로 가져온다. JSON을 다루는 라이브러리가 많고, 그 라이브러리마다 사용법이 다르다. 리스트 속의 아이템을 어떻게 끄집어내는지와 리스트에 아이템을 어떻게 집어넣는지에 집중해서 확인해 보면 된다. package javaStudy; import org.json.simpl.. JAVA 2023. 1. 23. 이전 1 다음 반응형