본문 바로가기

   
Programming/Java

7일차!

반응형
자바 api 볼수 있는 사이트
http: //docs.oracle.com/javase/7/docs/api/

정규표현식이란
정규표현식(正規表現式, Regular Expression)은 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다.
regular expression
기능설명
.문자1개의 문자와 일치한다. 단일행 모드에서는 새줄 문자를 제외한다.
\이스케이프특수 문자를 식에 문자 자체로 포함한다.
¦선택여러 식 중에서 하나를 선택한다. 예를 들어, "abc¦adc"는 abc와 adc 문자열을 모두 포함한다.
^부정문자 클래스 안의 문자를 제외한 나머지를 선택한다. 예를 들면 [^abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함한다. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미한다.
[]문자 클래스"["과 "]" 사이의 문자 중 하나를 선택한다. "¦"를 여러 개 쓴 것과 같은 의미이다. 예를 들면 [abc]d는 ad, bd, cd를 뜻한다. 또한, "-" 기호와 함께 쓰면 범위를 지정할 수 있다. "[a-z]"는 a부터 z까지 중 하나, "[1-9]"는 1부터 9까지 중의 하나를 의미한다.
()하위식여러 식을 하나로 묶을 수 있다. "abc¦adc"와 "a(b¦d)c"는 같은 의미를 가진다.
*0회 이상0개 이상의 문자를 포함한다. "a*b"는 "b", "ab", "aab", "aaab"를 포함한다.
+1회 이상"a+b"는 "ab", "aab", "aaab"를 포함하지만 "b"는 포함하지 않는다.
 ?0 또는 1회"a?b"는 "b", "ab"를 포함한다.
{m}m회"a{3}b"는 "aaab"만 포함한다.
{m,}m회 이상"a{2,}b"는 "aab", "aaab", "aaaab"를 포함한다. "ab"는 포함되지 않는다.
{m, n}m회 이상 n회 이하"a{1,3}b"는 "ab", "aab", "aaab"를 포함하지만, "b"나 "aaaab"는 포함하지 않는다.



package oop7;
import java.util.Scanner;
public class Function {
      
       public static void main(String[] args){
            String str = "광개토대왕님" ;
            System. out.println( str.substring(3)); //3번째부터 끝까지
            System. out.println( str.substring(1, 4)); //1~4번째 글자
            
            
//          String str1 = new String("홍길동");
//          String str2 = new String("홍길동");
            
            String str1 = "홍길동" ;
            String str2 = "홍길동" ;
            
            System. out.println( "문자열비교" + str1 ==str2 );        
            System. out.println( "문자열비교" + str1.equals( str2)); //문자열 비교시에는 equals메소드를 사용
            
            String str3 = "eungsu";
            String str4 = "EungSu";
            
            System. out.println( "대소문자 구분" + str3.equals( str4)); //대소문자 구분
            System. out.println( "대소문자 구분  x" + str4.equalsIgnoreCase( str3)); //대소문자 구분하지 않음
            
            String str5 = "macbook pro";
            String str6 = "macbook air";
            String str7 = "ipad";
            
             //문자열이 특정한 글자로 시작하거나, 끝나는지를 확인하면
             // 그 문 자열이 어떤 갑인 지를 알수 있는 경우가 많다.
            String str8 = "http://www.daum.net" ;
            String str9 = "010-1234-5678";
            String str10 = "sample.ppt";
            
            System. out.println( "무슨글자로 시작하는지" + str8.startsWith( "http")); //http로 시작하는지 확인
            System. out.println( "무슨글자로 시작하는지" + str9.startsWith( "010"));
            System. out.println( "끝에글자가 무엇인지" + str10.endsWith( "ppt")); //
            
            
            String data = "김유신,강감찬,홍길동,이순신" ;
            String[] names = data.split( ",");
            
             for( int i=0; i< names. length; i++){
                  System. out.println( names[ i]);
            }
            
             int age = 23;
            String name = "홍길동" ;
             double height = 180.2;
            
             //String text = name + ", " + age + ", " + height;
             //위와같은 방식은 접속자수가 많을경우 과부하(호출시 매번 객체생성이 되므로)
            StringBuilder sb = new StringBuilder(); //이어붙일 문자를 계속 붙인다.
             sb.append( age);
             sb.append( ", ");
             sb.append( name);
             sb.append( ", ");
             sb.append( height);
            System. out.println( sb);
            
            Scanner s = new Scanner(System. in);
//          1. 문자열을 입력받아 대문자로 변환해서 출력하기
//           goood moring
            String temp = "good moring";        
            System. out.println( "영어대문자 : " + temp .toUpperCase());

//
//          2. 전화번호를 입력 받아서 지역번호만 출력하기         
            String tel = "031-4541-4478";
            System. out.println( "지역번호" + tel.substring(0, tel.indexOf( "-")));
//
//          3. ',' 구분된 이름을 입력받아서 이씨성을가진 사람만 출력하기
//          홍길동, 강감찬,김유신, 이순신
            String text = "이순신,이영애,이영자,김유신,강감찬" ;
            String texttemp[] = text.split( ",");
            
             for( int i=0; i< texttemp. length; i++){           
                   if( texttemp[ i].startsWith( "이")){
                        System. out.println( texttemp[ i]);
                  }
            }
            
            
      }
      
}




★상속관계
사람클래스
개클래스
원숭이클래스

위3가지 클래스중 공통된 기능  매개변수가 있을경우 상속을 사용한다.
공통된 기능이 변경 되었을때 각각 매개변수및 공통된 기능을 수정해줘야한다.
그러므로 공통된 기능을 뽑아내서 공통된 기능에( 새끼낳기, 젖먹이기)
새롭게 만들어진것을 상속받는다.
포유류라는 클래스 더큰 분류를 만든다.

상속 장점 : 코드의 중복을 제거한다, 확장성이 굉장히 커진다.
)PC -> 모니터류를 꼽을수 있다 .





package oop7;

public class Phone {
      
       //핸드폰에 똑같은 기능들은 새로 클래스를 만들어서 정리하자
      String os;
      String numbers;
      
       public void call(){
            System.out.println( "전화걸기" );
      }
      
       public void sms() {
            System.out.println( "문자" );
      }
      
}



package oop7;

public class Iphone extends Phone { //Phone에 있는 기능을 모두 물려받았다 extends Phone
       //Phone 객체 생성 Iphone 객체 생성
       //상속을 받게되면 Phone객체가 먼저 생성되고 Iphone객체가 생성된다.
       //자바에서 상속받게 되면 부모 객체가 항상 먼저 생성된다.
      String battery;
      
       public void facetime(){
            System.out.println( "영상통화를 합니다." );
      }
      
       public void itunes(){
            System.out.println( "음악을 듣습니다." );
      }
      
}



package oop7;

public class Galaxy extends Phone { //Phone에 있는 기능을 모두 물려받았다 extends Phone
       //Phone 객체 생성 Galaxy 객체 생성
       public int exteranalMemory;
      
       public void dmb(){
            System.out.println( "tv를 봅니다." );
      }
}



package oop7;

public class PhoneDemo {

       public static void main(String[] args){
             //상속이 안되는것 2가지 private으로 정의된것은 상속이 안된다.
             //생성자는 상속이 안된다.
            Iphone i = new Iphone();
            i.os = "IOS";
            i.numbers = "010-1111-1234";
            i.call();
            i.sms();
            
             //Iphone에 정의되어 있는 속성과 기능 사용하기
            i.battery = "2000mA";
            i.facetime();
            i.itunes();
      }     
}



package oop7;

public class PhoneDemo2 {

       public static void main(String[] args){
             //상속이라는것은 부모 자식이 모두 생성 되기 때문에 p1, p2 객체 생성시에
             //Phone이라는 객체가 생겼기 때문에
             //Phone이라는 객체로 다른 객체도 생성 이가능
             //클래스의 형변환
             //변수를 어떻게 만들어야 확장성이 좋을까?
             //상속은 어느 방향을 바라봐야 바람직할지 고민해봐야 함
             //아이폰 객체는 -> 아이폰4 -> 아이폰5 -> 아이폰6가 존재할수 있다.
             //아이폰을 상속받은 객체는 아이폰 7이 새로 출시되도 추가가 용이하므로 확장성이 좋다.
             //상속이라는 개념이 적용되면 상속보단 확장이 더어울린다.
             //Phone[] p = new Phone[3];
             //p[0] = new Iphone ();
             //p[1] = new Galaxy();
            
            
            Iphone p1 = new Iphone();
            Galaxy p2 = new Galaxy();
            
            p1.facetime(); //p1으로는 iphone과 phone의 기능/속성 사용가능
            p2.dmb(); //p2는 갤럭시의 phone의 기능 /속성 사용가능
            
            Phone p3 = new Iphone();
            Phone p4 = new Galaxy();
      }
      
}



package oop7;

public class PhoneDemo3 {

       public static void testIphoneCall(Iphone p){
            p.call();
      }
      
       public static void testGalaxyCall(Galaxy p){
            p.call();
      }
      
       public static void testPhoneCall(Phone p){
            p.call();
      }
      
       public static void main(String[] args){
            Iphone p1 = new Iphone();
            Galaxy p2 = new Galaxy();
            Phone p3 = new Phone();
            
            testIphoneCall(p1);
      }
}



package oop8;

public class Camera {
      
       public void takePicture(){
            System.out.println( "사진 찍기" );
      }
      
}



package oop8;

public class Dslr extends Camera {
       //부모에서 물려받은 사진찍기 기능이 쓰레기 같을때
       //부모로 물려받은 기능을 재정의 하고자할때는 똑같은 이름으로 재정의
       public void changeLenz(){
            System.out.println( "렌즈를 교체합니다." );
      }
      
       //부모로 물려받은 기능을 재정의 자바는 메소드 이름이 같으면 최종적으로 재정의된 메소드를 처리한다.
       public void takePicture(){
            System.out.println( "고화질로 사진찍기" );
      }

      

}



package oop8;

public class FilmCamera extends Camera {
      
       public void changeFilm(){
            System.out.println( "필름을 교체합니다." );
      }
      
       public void takePicture(){
            System.out.println( "아날로그 느낌으로 사진찍기" );
      }
      
}



package oop8;

public class CameraDemo {
      
       public static void main(String[] args){
             //왜이렇게 되게 해놨을까?
             //자바 설계자 -> 걷기라는 기능이 있다면 그기능이 다르게 기능이 구현될거라고 예상함
             //분명 어떠한 한기능에 대해서 부모라는 좌표 하나만으로도 재정의를 가능토록 함
             //자식요소에서 기능을 재정의 하면 재정의된 기능을 바라보게 자바가 만들어져 있다.
             //명칭은 메소드 오버라이딩 클래스 생성지 재정의 관계 기능을 굉장히 중요함
             //구체적인 구현클래스를 몰라도 재정의된 기능을 실행할수 있다.
            Camera c = new Camera();
            Camera c1 = new Dslr();
            Camera c2 = new FilmCamera();
            
            c.takePicture();
            c1.takePicture();
            c2.takePicture();
            
      }
      
}


package oop8;

public class Graph {
      
       public void draw(){
            System. out.println( "기본 그래프 그리기" );
      }
      
}


package oop8;

public class Report {
       //온갖 그래프 출력기능 구현
       public void drawing(Graph g){
             g.draw();
      }
      
}


package oop8;

public class StockGraphApp {

       public static void main(String[] args){
            StockGraph stock = new StockGraph();
            Report r = new Report();
             r.drawing( stock);
      }
      
}


package oop8;

public class StockGraph extends Graph {

       public void draw(){
            System. out.println( "추가 변경 추이를 그립니다." );
      }
      
}





  


반응형