김준현.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
프로그래밍 개론 Ⅰ 제 3장. 클래스와 객체의 사용 ①.
10. 예외 처리.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속
최윤정 Java 프로그래밍 클래스 상속 최윤정
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
4장 자바 기본 구조 4.1 자바 응용 프로그램 분석 4.2 자바 애플릿 프로그램 분석
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
JAVA 언어로 배우는 디자인 패턴 입문 chap. 1-2.
3. 자바에서 지원하는 패키지 자바에서 기본적으로 제공하는 패키지.
[INA470] Java Programming Youn-Hee Han
7장 배열 ②.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
4.1 자바 응용 프로그램 분석 4.2 식별자(identifier)와 예약어 4.3 변수와 자료형
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 6. 형변환.
명품 Java Programming.
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
Java의 정석 제 9 장 java.lang 패키지 Java 정석 남궁성 강의
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
자바 5.0 프로그래밍.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
3장 자바의 기본문법(2).
Lesson 7. 클래스와 메소드 - 1.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
자바 5.0 프로그래밍.
C#.
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
7장 인터페이스와 추상 클래스.
Method & library.
인터넷응용프로그래밍 JavaScript(Intro).
Lesson 4. 수식과 연산자.
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터공학실습(I) 3주 인공지능연구실.
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
Power Java 제11장 상속.
Chapter 02. 자바 기본 문법.
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
자바 5.0 프로그래밍.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
6 객체.
3장 자바의 기본문법(2).
Presentation transcript:

김준현

java.lang 패키지 자바 프로그래밍에 가장 기본이 되는 클래스들을 포함 import 문 없이도 사용가능

public Boolean equals (Object obj) 객체 자신과 객체 obj가 같은 객체 인지 여부를 반환 (같으면 true) public int hashCode() 객체 자신의 해시코드를 반환

오버로딩(Overloading)/ 오버라이딩(Overriding) 사전적 의미 "과적하다", "과부하" "같은 클래스내에서 같은 이름의 메서드를 사용하는 것" 사용이 가능하려면 (2가지중 하나라도 만족하면 ok) (1) 매개변수 타입이 달라야 한다. (2) 매개변수 갯수가 달라야 하낟. // Instance method void func(int v) { System.out.printf("v is %d\n", v); } // overloading void func() { System.out.printf("function overloading \n");

오버라이딩(Overriding) "부모(Class)에서 정의한 메서드를 자식 Class에서 변경하는 것 Static 메서드는 오버라이딩을 허용하지 않는다. class Parents { // instance method void func() { System.out.println("hello world"); } class Child extends Parents { @Override System.out.println("KimJunHyeon");

hashCode 란? 기본구현 객체를 구별하기 위해 고유한 정수값으로 출력시켜주는 메소드 객체의 주소값을 이용해서 해시코드를 만들어 반환 따라서, 서로 다른 두 객체는 결코 같은 해시 코드를 가질 수 없음

toString 인스턴스에 대한 정보를 문자열(String)으로 제고알 목적으로 정의 대부분의 경우 인스턴스 변수에 저장된 값들을 문자열로 표현 원형 public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }

toString class Car { // instance variable String color; int price; Car(String c, int p) { this.color = c; this.price = p; } // 조상 클래스 (Object)에 정의된 접근성보다 같거나 넓어야 하므로, public @ Override public String toString() { return "color: " + this.color + " price: " + this.price;

clone() 자신을 복제하여 새로운 인스턴스를 생성 작업 실패시 원래 상태로 되돌리거나 변경되기 전의 값을 참고하는데 도움 기본 구현 단순히 인스턴스 변수의 값만 복사

clone()을 이용한 배열복사 배열도 객체이기 때문에 object 클래스를 상속받으며, Cloneable 인터페이스와 Serializable인터페이스가 구현 int[] TempArry = {10, 11, 12, 13, 14, 15}; int[] CloneArry = TempArry.clone();

class Person implements Cloneable { // instance variable String name; int age; public Object clone() { Person a = new Person(); a.name = new String(this.name); a.age = this.age; return a; }

얕은 복사와 깊은 복사 얕은 복사 (shallow copy) : 단순히 객체에 저장된 값을 그대로 복제할 뿐, 객체가 참 조하고 있는 객체까지 복사하지 않는다. 깊은 복사(deep copy) : 원본이 참조하고 있는 객체까지 복사

얕은 복사 예) public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> test1 = new ArrayList<String>(); ArrayList<String> test2 = new ArrayList<String>(); test1.add("Kim"); test1.add("Jun"); test1.add("Hyeon"); test2 = test1; // 얕은 복사 - 둘 중에 한개만 수정해도 양쪽 다 적용 System.out.println(test1); test2.add("Lee"); }

깊은 복사 깊은 복사가 이루어져서 한쪽의 수정이 다른 한쪽에 영향을 주지 않는다. public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> test1 = new ArrayList<String>(); ArrayList<String> test2 = new ArrayList<String>(); ArrayList<String> test3 = new ArrayList<String>(); test1.add("Kim"); test1.add("Jun"); test1.add("Hyeon"); test2 = test1; test3 = (ArrayList<String>)test1.clone(); System.out.println(test1); test2.add("Lee"); System.out.println(test3); }

깊은 복사의 또다른 예 // TODO Auto-generated method stub ArrayList<String> test1 = new ArrayList<String>(); ArrayList<String> test2 = new ArrayList<String>(); ArrayList<String> test3 = new ArrayList<String>(); test1.add("Kim"); test1.add("Jun"); test1.add("Hyeon"); test2.addAll(test1); test1.add("Lee"); System.out.println(test1); System.out.println(test2);

Math 클래스 Math.abs(double x) Math.ceil(double x) 값 올림 Math.floor 값 내림 Math.round(double x) 반 올림 Math.max(double x, double y) 큰 쪽 반환 Math.min(double x, double y) 작은 값 반환 Math.pow(double x, double y) 제곱

Math.pow 반환 타입도 : double %.2f : 소수점 2번째 자리까지만 출력 public class stu02 { public static void main(String[] args) { int x = 10; System.out.printf("10^2 => %.2f\n", Math.pow(x, 2.)); }

Math.ceil public class stu03 { public static void main(String[] args) { double dData = 12.123; System.out.printf("%f\n", Math.ceil(dData)); // 13.000000 }

래퍼 클래스 (wrapper class) 변수 기본형 (primitive) : 비객체 참조형 (reference type) Java Data Type ㄴ Primitive Type ㄴ Boolean Type(boolean) ㄴ Numeric Type ㄴ Integral Type ㄴ Integer Type(short, int, long) ㄴ Floating Point Type(float, double) ㄴ Character Type(char) ㄴ Reference Type ㄴ Class Type ㄴ Interface Type ㄴ Array Type ㄴ Enum Type ㄴ etc.

래퍼 클래스 (wrapper class) 언제 사용할까?? 기본형 타입을 객체로 사용해야 하는 경우, 이러한 경우에 기본형 타입 값을 객체로 포장 boxing 기본형 UnBoxing Wrapper 객체

래퍼 클래스 (wrapper class) Boxing UnBoxing

객체의 값을 double 값으로 변환하여 반환 래퍼 클래스 (wrapper class) Wrapper 클래스의 기본 메소드들 메소드 반환값 설명 booleanValue() boolean 기본형 데이터를 문자열로 바꾼 뒤에 반환 byteValue() byte 객체의 값을 byte 값으로 변환하여 반환 doubleValue() double 객체의 값을 double 값으로 변환하여 반환 floatValue() float 객체의 값을 float 값으로 변환하여 반환 intValue() int 객체의 값을 int 값으로 변환하여 반환 longValue() long 객체의 값을 long 값으로 변환하여 반환 shortValue() short 객체의 값을 short 값으로 변환하여 반환 stu05.java

래퍼 클래스 (wrapper class) 래퍼 클래스란 기본 자료형 (primitive data types)에 대한 클래스 표현 기본형 래퍼클래스 생성자 Boolean char Charater byte Byte short Short int Integer long Long float Float double Double void Void

래퍼 클래스 (wrapper class) public class stu04 { public static void main(String[] args) { Integer iData = Integer.valueOf(10); System.out.printf("iData => %d\n", iData) }

자바 Scanner 클래스 Scanner 클래스 정수, 실수, 문자열을 읽어 올수 있음 nextInt() 정수 입력 nextDouble() 실수 입력 nextFloat() next() 문자열 입력 , 개행(\n)까지 읽음 stu06.java double dData = 0.; // 실수 float fData = 0.f;

자바 Random 선언 .nextInt() -2,147,483,648 ~2,147,483,647 .nextInt(10) 0 ~ 9 사이의 값 .nexInt(20) - 10 -10 ~ 9 .nextFloat() 0.0 (포함) ~ 1.0 (포함안함) .nextFloat()*6 0.0 (포함) ~ 5.999999 RN01.java

자바 Random import java.util.Random; public class RN02 { public static void main(String[] args) { Random generater = new Random(); int dice; dice = generater.nextInt(6) + 1; // 1,..., 6 System.out.printf("dice => %d\n", dice); }

자바 정규식 regex import java.util.regex.Matcher; import java.util.regex.Pattern; Regex Description X? X 한번 발생 혹은 전혀 발생하지 않음 X+ X 한번 혹은 그 이상 발생 X* X 제로 혹은 그 이상 발생 X{n} x 가 오직 n번 발생 X{n,} x 가 n번 혹은 그 이상 발생 X{n, m} x 가 적어도 n번 발생 하지만 m번 보다는 적음 RN04

자바 정규식 regex Regex Description ^ 문자열의 시작 $ 문자열의 종료 . 임의의 한 문자 (문자의 종류 가리지 않음) * 앞 문자가 없을 수도 무한정 많을 수도 있음 + 앞 문자가 하나 이상 ? 앞 문자가 없거나 하나 있음 [] 1)문자의 집합이나 범위를 나타내며 두 문자 사이는 '-' 기호로 범위를 나타낸다. 예) [A-Za-z0-9] 2)[] 내에서 ^가 선행하여 존재하면 not을 나타낸다. {} 횟수 또는 범위를 나타냄 RN05

자바 정규식 regex Regex Description () 소괄호 안의 문자를 하나의 문자로 인식 | 패턴 안에서 or 연산을 수행할 때 사용 \s 공백문자 \S 공백 문자가 아닌 나머지 문자 \w [A-Za-z0-9] 알파벳이나 숫자 \W ^[A-Za-z0-9] 알파벳이나 숫자를 제외한 문자 \d [0-9] 숫자 \D 숫자를 제외한 모든 문자

문제 번호 이메일 아이피 010-1234-1234 010-123-1234 sleep4725@naver.com 192.168.10.155

풀이 번호 import java.util.regex.Pattern; public class STU7 { public static void main(String[] args) { String regExp = "(02|010)-\\d{3,4}-\\d{4}"; String data = "010-4725-5886"; boolean result = Pattern.matches(regExp, data); if (result) { System.out.println("패턴과 일치"); } else { System.out.println("패턴과 일치 하지 않습니다."); } STU7

풀이 이메일 import java.util.regex.Matcher; import java.util.regex.Pattern; public class STU8 { public static void main(String[] args) { String regExp = "\\w+@\\w+(\\.\\w+)"; String targetEmail = "sleep4725@naver.com"; boolean result = Pattern.matches(regExp, targetEmail); if (result) { System.out.println("일치"); } else { System.out.println("불일치"); }

풀이 아이피 import java.util.regex.Pattern; public class STU9 { public static void main(String[] args) { // 192.168.1.123 String regExp = "(\\d{3})\\.(\\d{3})\\.(\\d{1,3})\\.(\\d{1,3})"; String targetIP = "192.168.1.123"; boolean result = Pattern.matches(regExp, targetIP); if (result) { System.out.println("일치"); } else { System.out.println("불일치"); }

자바 정규식 regex 자주 쓰이는 패턴

자바 정규식 regex import java.util.regex.*; public class RN03 { public static void main(String[] args) { //Pattern p = Pattern.compile(".S") System.out.println(Pattern.matches(".s", "as")); System.out.println(Pattern.matches(".s","mk")); }

자바 정규식 regex public class RN05 { public static void main(String[] args) { Pattern p = Pattern.compile("^[A-Za-z]{2}"); System.out.println(p.matcher("AApple")); }

자바 정규식 regex import java.util.regex.*; public class RN06 { public static void main(String[] args) { Pattern p = Pattern.compile("(\\d{6})-(\\d{6})"); System.out.println(p.matcher("880120-0000000")); } RN06

자바 정규식 regex

Date, Calendar Date 클래스 날짜를 표현하는 클래스 1 2 import java.util.Date; public class STU1 { public static void main(String[] args) { System.out.println("hello world"); Date today = new Date(); // 객체 생성 String strNow = today.toString(); System.out.println(strNow); } project => STU01

Date, Calendar SimpleDateFormat yyyy 2018 hh 7 MM 10 mm 41 dd 28 ss 34 import java.text.SimpleDateFormat; import java.util.Date; public class STU2 { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date today = new Date(); String strData = sdf.format(today); System.out.println(strData); }

디렉토리 생성 (mkdir) import java.io.File; .. mkdir(); public static void main(String[] args) { File newFile = new File("C:\\Users\\sleep\\Desktop\\testStudyDir"); try { newFile.mkdir(); System.out.println("디렉토리 생성 성공"); } catch (Exception e) { System.out.println(e); }

디렉토리 삭제 (delete) public static void main(String[] args) { File newFile = new File("C:\\Users\\sleep\\Desktop\\testStudyDir"); try { newFile.delete(); } catch (Exception e) { System.out.println(e); }

디렉토리 디렉토리 조회 (ls) import java.io.File; public class STU4 { public static void main(String[] args) { File newFile = new File("C:\\Users\\sleep\\Desktop\\JavaScript"); File[] listOfFiles = newFile.listFiles(); for (File f : listOfFiles) { if (f.isDirectory()) { // 디렉토리 System.out.println("directory : " + f.getName()); } else if (f.isFile()) { // 일반 파일 System.out.println("file : " + f.getName());

문제 오늘 날짜로 디렉토리 생성

Calendar 클래스 Calendar 달력을 표현한 클래스 추상 (abstract) 클래스이므로 new 연산자를 사용해서 인스턴스 생성 불가 import java.util.Calendar; Calendar now = Calendar.getInstance(); now.get(Calendar.YEAR) 년도를 리턴 now.get(Calendar.MONTH)+1 월을 리턴 now.get(Calendar.DAY_OF_MONTH) 일을 리턴 now.get(Calendar.DAY_OF_WEEK) 요일을 리턴

Calendar 클래스 Calendar now.get(Calendar.AM_PM) 0 : 오전 / 1 : 오후 now.get(Calendar.HOUR) 현재 시간 리턴 now.get(Calendar.MINUTE) 분 리턴 now.get(Calendar.SECOND) 초 리턴 STU6.java

MySQL