2016년 6월 14일 화요일

06day java

패키지
  • 구성요소: class, interface, exception, enum
  • package 패키지명.패키지명...
    • 패키지명은 전세계적으로 중복되면 안 됨
    • 도메인명의 역순
      • www.acornacademy.co.kr → kr.co.acronacademy.클래스명
  • 패키지 컴파일
    • java -d . 디렉토리명 소스파일명
    • javac -d . 소스파일명
  • 패키지 사용
    • import 패키지명.패키지명...클래스명;
    • 패키지명.패키지명...클래스명 참조변수명 = new 패키지명.패키지명...클래스명();
      com.TestClass tc = new com.TestClass();
    • class를 수동(복사, 붙여넣기 방법으로) 이동하면 안됨 → 패키지 방법으로
클래스
  • 완성 클래스: class
    • instance
    • static
    • 맴버필드
    • 맴버메서드
      • 종류
        • 일반메서드
          • 일반
          • is***
          • set*** / get***
        • 특수목적메서드
          • 생성자
          • Main
      • 문법
        • 가변인자 메서드
          • 클래스명(String ... names){ }
                       = String[] names = { 인자값1, 인자값2, ... };
        • 참조주소와 생성자
          • this / this()
          • super/ super()
        • 접근 제한자 (→ 은닉화)
          • private
          • package(default)
          • protected
          • public
        • 지정 예약어
          • final
            • final 참조변수명 - 상수
            • final 클래스명 - 상속금지 클래스
            • final 메서드명 - 오버라이드 금지 메서드
          • static
            • static 필드 - 같은 클래스의 모든 객체가 공유
            • static 메서드 - static 필드값을 처리하기 위함
          • static final
            • static final 필드
            • static final 메서드
          • abstract
            • abstract 메서드 - 내용부 정의 없음, 오버라이딩이 강제됨
        • extends + 공통클래스
        • implement + 인터페이스
        • overload
          • 한 개의 클래스에서 사용
        • override
          • 주로 상속관계에서 사용
  • 미완성 클래스 (협업을 위한 클래스)
    • abstract class
      • 클래스명에 abstract가 붙은 클래스
      • 상속(extends)을 전제로 한 클래스
      • 내부에 abstract 메서드를 포함할 수 있음
      • 한 개의 클래스만 상속가능(단일상속)
    • interface
      • 구현(implements)을 전제로 한 클래스
      • 내부에 final static 필드 / abstract 메서드를 포함할 수 있음
      • 여러개의 인터페이스를 구현 가능
      • 인터페이스기리도 상속이 가능함 - extends
IDE
  • eclipse (무료)
    • 현업에서 가장많이 사용함
    • www.eclipse.org
  • intelliJ (무료/ 유료)
    • google - android 제작 스튜디오 기반
API (Application Programming Interface)
  • Library 제공
    • Oracle
      • document 문서를 보는 방법
      • java.lang
        • 많이 쓰는 자료형에 대한 클래스
        • Object
          • 모든 클래스의 조상 클래스
          • 자체적으로 import 되어있음
          • 메서드
            • 쓰레드
            • 오버라이딩을 전제한 메서드
              equals, toString
        • String , StringBuffer
          • 문자열 생성과 조작
          • String : 자기 자신의 저장된 문자열 변경되지 않음
            String str = "Hello";
            String pstr = str.subString(1,3);
          • StringBuffer : 자기 자신에 저장된 문자열 변경됨 (메모리 관리)
            할당연산자 "=" 없음
            →buffer를 이용해서 저장
    • Third Party
  • 특징
    • 프로그램 개발에 사용되는 클래스나 인터페이스의 묶음
    • *.jar  / 클래스 파일 제공
    • 패키지 별로 분류되어 있음
    • 위치 방법이 있음 (특정 디렉토리에 추가)
  • API  도큐먼트
    • API 도움말
Object
  • 모든 클래스의 촤상위 클래스
  • 다른 클래스를 상속하지 않으면 Object를 상속한다. (디폴트)


1
package com.exam1;

public class Student1 {
        // 캡슐화 은닉화
        private String name;
        private int age;
        private double height;
        private double weight;
        
        //setter getter를 통해서 private 데이터에 접근 가능함
        //오른쪽 클릭> Source > Generate Getter and Setters
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public int getAge() {
            return age;
        }
        public void setHeight(double height) {
            this.height = height;
        }
        public double getHeight() {
            return height;
        }
        public void setWeight(double weight) {
            this.weight = weight;
        }
        public double getWeight() {
            return weight;
        }
}

import com.exam1.Student1;

public class MainEx {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Student1 s1 = new Student1();
  
  s1.setName("홍길동");
  s1.setAge(20);
  s1.setHeight(180.5);
  s1.setWeight(70.6);
  
  System.out.println(s1.getName());
  System.out.println(s1.getAge());
  System.out.println(s1.getHeight());
  System.out.println(s1.getWeight());
 }

}


2
package com.exam1;

public class Student2 {
 private String name;
 private int age;
 private double height;
 private double weight;
 
 //오른쪽 클릭> Source > Generate Constructor Using Field
 public Student2(String name, int age, double height, double weight) {
  this.name = name;
  this.age = age;
  this.height = height;
  this.weight = weight;
 }
}


3
package com.exam3;

public interface InterA {
 public static final String str1 = "홍길동";
 public abstract void methodA();
 public abstract void methodB();
}

package com.exam3;

public class ClassA implements InterA {

 @Override
 public void methodA() {
  
 }

 @Override
 public void methodB() {
  // TODO Auto-generated method stub
  
 }
 
}




4
프로젝트를 지우면 폴더가 지워지는 것이 아니라 작업창에서 제거되는 것
이클립스는 프로젝트를 많이 열거할 수록 느려진다




5
프로젝트를 import시키는 방법
다른폴더에서 추가할 수 있음





6
public class Person {
 String name;
 int age;
 
 public Person(String name, int age) {
  this.name = name;
  this.age = age;
 }
 @Override
 public boolean equals(Object obj) {
  boolean result = false;
  Person p = (Person)obj;
  if(p.name.equals(name) && p.age == age){
   result = true;
  }
  return result;
 }
 
 @Override
 public String toString() {
  return name + " " + age;
 }

}

public class MainEx {

 public static void main(String[] args) {
  Person p1 = new Person("이순신", 40);
  Person p2 = new Person("이순신", 40);
  
  System.out.println(p1);
  System.out.println(p2);
  
  //주소값 비교
  System.out.println(p1 == p2);
  //주소값 비교 → 내용비교 //equals메서드를 오버라이딩해서 재정의 했음
  System.out.println(p1.equals(p2));
  
  //Object 클래스의 메소드는 override를 해서 자주 사용한다
  System.out.println(p1);
  System.out.println(p1.toString());

 }

}


7

public class StringEx01 {

 public static void main(String[] args) {
  //String 클래스는 문자열의 저장과 처리에 관한 클래스
  String str1 = "Hello World";
  String str2 = new String("Hello World");
  char[] arr = {'a','b','c','d'};
  String str3 = new String(arr);
  
  System.out.println(str1); //주소값이 출력되지 않고 내용이 출력됨 //override 되어있음
  System.out.println(str1.toString());
  
  String str11 = "Hello World";
  String str12 = "Hello World";
  String str13 = new String("Hello World"); //new를 쓰면 메모리 다른 곳에 저장됨
  
  System.out.println(str11 == str12);
  System.out.println(str11 == str13); //주소가 틀림
  System.out.println(str11.equals(str13)); //주소가 다르지만 내용을 비교할 때
  
 }

}


8
//java.lang 패키지는 디폴트로 import됨

public class ObjectEx01 {

 public static void main(String[] args) {
  Object o =new Object();
  //두 객체를 주소비교
  //overriding → 객체의 내용비교
  System.out.println(o.equals(o));
  
  System.out.println(o.getClass());
  System.out.println(o.hashCode());
  System.out.println(o);
  //객체의 주소값을 출력
  // overriding → 객체의 내용출력
  System.out.println(o.toString());
 }

}


9
public class StringEx02 {

 public static void main(String[] args) {
  //문자열의 길이
  String str1 = "Hello World";
  System.out.println(str1.length());
  
  //문자열 → 문자 추출
  char ch1 = str1.charAt(0);
  System.out.println(ch1);
  
  //문자열에서 일부문자 추출
  String pstr1 = str1.substring(2); //3번째 문자부터 끝까지 추출
  System.out.println(pstr1);
  String pstr2 = str1.substring(2, 4); //3번째 부터 4번째 까지 추출
  System.out.println(pstr2);
  
  //문자열 검색 indexof, lastIndexof
  int idx1 = str1.indexOf("ll");
  System.out.println("검색위치 : " + idx1);
  int idx2 = str1.lastIndexOf("ll");
  System.out.println("검색 위치 : "+ idx2);
  
  //문자열 치환
  String replaceStr = str1.replaceAll("World", "세상");
  System.out.println(replaceStr);
  
  //문자열 결합
  String conStr = str1.concat(" 안녕");
  System.out.println(conStr);
  
  //대소문자 변환
  System.out.println("Hello World".toUpperCase());
  System.out.println("Hello World".toLowerCase());
  
  //공백제거
  String str2 = "        Hello World       ";
  String oStr = str2.trim();
  System.out.println(oStr);
  
  //구분자 단위로 문자열 분리
  String str3 = "사과,바나나,파인애플,키위";
  String[] arr = str3.split(",");
  for(String str : arr){
  System.out.println(str);
  
  }
 }

}


10
public class StringEx03 {

 public static void main(String[] args) {
  // String[] args
  // java StringEx03 값 이클립스에서 입력 → 오른쪽키 > Runs > configurations
  System.out.println(args.length);
  for(String arg : args){
   System.out.println(arg);
  }
 }

}



11
public class InitCapEx02 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        if(args.length != 1){
            System.out.println("1개의 문자열을 입력하셔야합니다.");
        }else{
            String name =args[0];
            String[] names =name.split(" ");
            
//            System.out.println(names[0]);
//            System.out.println(names[1]);
//            System.out.println(names[2]);
//            
//            System.out.println(names[0].substring(0, 1).toUpperCase() + names[0].substring(1));
//            System.out.println(names[1].substring(0, 1).toUpperCase() + names[1].substring(1));
//            System.out.println(names[2].substring(0, 1).toUpperCase() + names[2].substring(1));
            String result = "";
            for (int i=0; i<names.length; i++){
                result += names[i].substring(0, 1).toUpperCase() 
                        + names[i].substring(1) +" ";
            }
            System.out.println(result);
        }
    }

}


12
public class JuminCheck {

    public static void main(String[] args) {
        if(args[0].length() != 14 || args.length != 1){
            System.out.println("1개의 문자열을 입력하셔야합니다.");
        }else{
            int[] nums = new int[args[0].length()];
            for(int i=0; i<14;i++){
                if(i==6){
                    continue;
                }else{
                    nums[i] = Integer.parseInt(args[0].substring(i, i+1));
                }
            }
            for(int j=0; j<14; j++){
                if(j<6){
                    nums[j]=nums[j]*(j+2);
                }else if(j<9){
                    nums[j]=nums[j]*(j+1);
                }else if(j<13){
                    nums[j]=nums[j]*(j-7);
                }
            }
            int number=0;
            for(int k=0; k<13;k++){
                number += nums[k];
            }
            int rest = number%11;
            int rest2 = rest%10;
            if(rest2 == nums[13]){
                System.out.println("주민번호가 정확합니다");
            }else{
                System.out.println("주민번호가 부정확합니다");
            }
        }
    }

}


댓글 없음:

댓글 쓰기