패키지 문법

package - 패키지 컴파일 방법
import

여러개의 클래스 관계

is ~ a - 상속
has ~ a - 포함 / 부속(객체 변수)

// 부속 ( has ~ a )
class A {
	B b = new B();
} 

// 상속 ( is ~ a )
class A extends {
	B b = new B();
}

객체지향(중심 : OOP)프로그램에 대한 특성

캡슐화

data은닉
접근제어자로 데이터 접근을 제어한다.
setter / getter
생성자 오버로딩(constructor overloading)
this - lv와 iv 구별 / this() - 생성자간의 호출

상속성

extends
overriding
super - 부모의 멤버와 구별할 때 사용 / super() - 부모의 생성자
final
객체 형변환

다형성

추상화

기본 프로그램에 대한 문법

자료
제어

=> 소스코딩
Visudal Studio Code

IDE

eclipse - 전자정부프레임워크 (https://www.egovframe.go.kr/)

intellij - 안드로이드 개발

eclipse 설치 / 순서

eclipse 설치가 압축해제
1. workspace(작업공간) - 이클립스 설정이 들어감 - 초기화하고싶으면 workspace 지우면 됨
2. 코딩하기 - 프로젝트
3. 패키지
명시적
묵시적(defualt)
4. 클래스

cmd에서 eclipse 실행 시키기

1.클래스 파일이 만들어지는 bin 폴더의 경로 복사하여 붙이기

dir - 파일 보기

2. 실행

eclipse 사용

자바 파일 한 개당 클래스 한 개가 원칙이다.



호출하기


public class MainEx01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Hello Eclipse");
		System.out.println("Hello Eclipse");
		
		Student1 stu1 = new Student1();
		stu1.hakbun = "1001";
		stu1.name = "홍길동";
		System.out.println(stu1.hakbun);
		System.out.println(stu1.name);	
	}
	
}




다른 패키지의 클래스 사용하기

패키지와 클래스 생성



다른 패키지의 클래스 사용



import로 패키지 참조하기

클래스 이름만 적고 Ctrl + 스페이스바 누르면 패키지 목록이 나옴 거기서 선택
Ctrl + Shift + o 누르면 자동으로 import 패키지 선언해줌



소스 자동완성 기능

오버로딩

마우스 오른쪽클릭 -> source -> Generate Constructor Useing Fields

생성자

마우스 오른쪽클릭 -> source -> Generate Getter and Setter ...



프로젝트로 구구단 출력하기 해보기

프로젝트명 GugudanEx01
패키지명 pack
구구단을 출력하는 viewGugudan(int startdan, int enddan)을 포함하는 Util 클래스 생성

pack 패키지 안에 Util 클래스 생성 후 구구단 코드 작성

defualt package에서 UtilMainEx01 클래스 실행파일 만들어서 구구단 출력하기

3 ~ 5단 출력하게 함



애노테이션 - ex) "@Override"

이 메서드는 재정의한 메서드로 메서드 오버라이딩 규칙에 맞지 않으면 오류를 발생시켜라 라는 정보를 컴파일러에게 전달하는 것.

source -> Override/Implement Methods

체크하고 ok 누르면 생성됨

public static void main(String[] args)에 값 넣고 출력하기

오른쪽 클릭 -> Run As -> Run Configuration 누르면 밑에 창이 뜬다
Arguments에 값 입력 후 출력



다른 클래스파일에서 실행할때 실행할 파일에서 한번 컴파일 시키고 실행시켜야한다.

먼저 실행했던 정보만 올라가있어서 먼저 실행한 클래스파일이 출력이 됨
그래서 실행할 클래스파일에서 아무거나 실행 시키고 난 후 에 Run Configurations 하면 됨.
Main에서 이름 확인



프로젝트를 이클립스로 가져오기

General -> Exising Projects into Wrokspace 클릭

브라우저를 클릭 후 추가할 프로젝트 경로로 가서 선택

이미 가지고있는 것은 체크표시가 없고 가지고있지 않은것은 체크표시 하여 가져오기



java.lang 패키지

자바 언어에서 가장 기본적으며 자주 사용되는 클래스들의 모임
import 하지 않아도 바로 사용 가능
자세한 내용은 책 참조.

Object 클래스의 메서드


toString()

문자열로 출력해준다.

Person 클래스를 생성 후 오버라이딩 함



호출

equals()


public class Objectx02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a1 = 10;
		int a2 = 10;
		
		// 내용 값 비교
		System.out.println(a1 == a2);
		
		Object o1 = new Object();
		Object o2 = new Object();
		
		// 객체 주소 비교라서 false 출력
		System.out.println(o1 == o2);
		//내용값(멤버필드) 비교는 equals()
		System.out.println(o1.equals(o2));
		
		String str1 = new String("박문수");
		String str2 = new String("박문수");
		
		// 객체 주소 비교라서 false 출력
		System.out.println(str1 == str2);
		
		// equals()로 내용 비교하여 true 출력
		System.out.println(str1.equals(str2));
	}

}




문자열 저장 클래스

String(Immutable(불변성)클래스) - 제일많이 사용
StringBuffer
StringBuilder

문자열 출력 메서드

public class StringEx01 {

	public static void main(String[] args) {
		// 문자열 저장 클래스 String / StringBuffer / StringBuilder
		
		// 선언
		String str1 = "Hello String";
		String str2 = new String("Hello String");
		char[] charArray = {'H', 'e', 'l', 'l', 'o'};
		String str3 = new String(charArray);
		
		
		// toString() 
		// equals() - 중요 ! 내용값 비교
		
		System.out.println(str1.length());
		System.out.println("Hello".length());
		
		// 문자열 -> 문자 추출
		System.out.println(str1.charAt(0));
		
		// 문자열 마지막 문자 출력
		System.out.println(str1.charAt(str1.length()-1));
		
		// 문자열 -> 부분 문자열 출력
		System.out.println(str1.substring(2)); // 2부터 출력
		System.out.println(str1.substring(2,4)); // 2부터 4까지 출력
		
		// 문자 위치
		System.out.println(str1.indexOf('l')); // '' 안에 문자 넣으면 해당 위치값 출력
		System.out.println(str1.lastIndexOf('l')); // 제일 마지막에 있는 해당 문자의 위치값 출력
		
		
		// 문자열 존재여부(contains, endsWith)
		System.out.println(str1.startsWith("He"));
		
		// 문자열 치환
		System.out.println(str1.replaceAll("Hello", "안녕")); // Hello를 안녕 으로 치환
		
		// 문자열 결합 : + 이지만 메서드로도 존재할 수 있다.
		System.out.println(str1.concat(" 안녕"));
		
		// 대,소문자 
		System.out.println("hello".toUpperCase()); // 대문자로 출력
		System.out.println("HELLO".toLowerCase()); // 소문자로 출력
		
		// 공백 제거
		String str11 = "     Hello       String    ";
		System.out.println(str11.length());
		
		// 양옆공백 지워줌
		String str12 = str11.trim();
		System.out.println(str12.length()); // 양옆 공백 뺀 길이 출력
		System.out.println(str12); // 양옆 공백 없이 출력됨
		
		// 구분자 단위 분리
		String str21 = "apple,banana,pineapple,kiwi";
		String[] strArr = str21.split(","); // "," 단위로 구분 시키기
		for(String str : strArr) {
			System.out.println(str);
		}
		
		// 구분자 단위 결합 / split과는 반대기능
		String str22 = String.join(",", strArr);
		System.out.println(str22);
		
		// 형식이 있는 문자열 / printf랑 비슷 /%s-%s-%s 형식의 문자열로 출력해준다
		String str31 = String.format("%s-%s-%s", "aaa", "bbb", "ccc");
		System.out.println(str31);
	}

}




첫 글자 대문자로 출력 예재


public class Capitalization {

	public static void main(String[] args) {
		if(args.length != 1) {
			System.out.println("1개를 입력하셔야 합니다.");
		} else {
//			System.out.println("정상");
			
			String[] names = args[0].split( " " );
//			System.out.println(names[0]);
//			System.out.println(names[1]);
//			System.out.println(names[2]);
			
			for(int i=0; i<names.length; i++) {
            	// name[i]번째의 단어들의 첫글자를 대문자로 바꾸고 그 뒤에 글자들을 붙여서 저장
				names[i] = names[i].substring(0,1).toUpperCase() + names[i].substring(1);
			}
			System.out.println(String.join(" ", names));
		}
	}

}




객체지향적으로 코드 수정

Util 클래스를 생성

Util 클래스를 받아와서 입력값 첫글자 대문자로 뽑기 ( Hong Gil Dong 출력 )




StringBuffer / StringBuilder

문자열을 이용한 연산에 적합한 클래스

  • String과는 상속 관계가 없다.
  • 내부적으로 버퍼(buffer : 데이터를 임시로 저장하는 공간으로 배열)에 문자열을 저장하고 그 안에서 추가/수정/삭제 작업을 가능하게 한다.
  • 연산 가정에서 새로운 객체를 생성하지 않는다.
  • toString()메서드는 내용 문자열을 출력하도록 오버라이딩되었다.
  • equals()메서드는 오버라이딩되지 않아서 Object의 equals를 그대로 사용한다.

StringBuffer / StringBuilder 의 문자열 편집을 위한 주요 메서드 / 예재


public class StringBuilderEx01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuilder sb1 = new StringBuilder();
		StringBuilder sb2 = new StringBuilder(100);
		StringBuilder sb3 = new StringBuilder("Hello StringBuilder");
		
		// 저장용량 버퍼의 크기
		System.out.println(sb1.capacity());
		System.out.println(sb2.capacity());
		System.out.println(sb3.capacity());
		
		// 저장 문자열의 길이
		System.out.println(sb1.length());
		System.out.println(sb2.length());
		System.out.println(sb3.length());
		
		System.out.println(sb3.charAt(0));
		System.out.println(sb3.substring(4));
		
		// 반대로 출력
		System.out.println(sb3.reverse());
		
		// replace
		// 내부 문자열 변경 append / insert / delete
		StringBuilder builder = new StringBuilder("사봉-용산-사가정-용마산");
        
		builder.append("-중곡"); // 맨 뒤에 '-중곡' 추가
		System.out.println(builder);
		
		builder.insert(3,  "면목-"); // '사봉-' 뒤에 '면목-' 추가
		System.out.println(builder);
		
		builder.delete(5, 8); // '-용산' 삭제
		System.out.println(builder);
		
		builder.replace(0, 1, "상"); // '사'를 '상'으로 변경
		System.out.println(builder);
	}

}




Math의 메서드


public class MathEx01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 올림
		System.out.println(Math.ceil(10.3));
		System.out.println(Math.ceil(10.5));
		System.out.println(Math.ceil(10.7));
		
		// 내림
		System.out.println(Math.floor(10.3));
		System.out.println(Math.floor(10.5));
		System.out.println(Math.floor(10.7));
		
		// 반올림
		System.out.println(Math.round(10.3));
		System.out.println(Math.round(10.5));
		System.out.println(Math.round(10.7));
		
		// 제곱
		System.out.println(Math.pow(10.0, 2.0));
        
        // 난수 
	}
}



Wrapper 클래스

특정 클래스를 말하는 것이 아닌 부류를 말함.
Wrapper클래스는 8종류의 기본형을 객체로 만들기 위한 클래스들을 말함.
기본형마다 그에 상응하는 Wrapper클래스가 존재
앞글자가 대문자이다.



auto boxing / unboxing

autoboxing : 자동으로 wrapper 클래스의 객체로 변경.
unboxing : 객체형인 Integer를 기본형처럼 사용할 수 있게 함.


public class WrapperEx01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// MAX_VALUE => 상수
		System.out.println(Integer.MAX_VALUE);
		System.out.println(Integer.MIN_VALUE);
		
		System.out.println(Double.MAX_VALUE);
		System.out.println(Double.MIN_VALUE);
		
		// Wrapper 클래스 
		Integer i1 = Integer.valueOf(123);
		Integer i2 = Integer.valueOf("123");
		
		// autoboxing
		Integer i3 = 123;
		
		// 형변환
		int i11 = i1.intValue();
		float f11 = i1.floatValue();
		
		System.out.println(i11);
		System.out.println(f11);
		
		// 문자열을 정수나 실수로 만들기
		int i21 = Integer.parseInt("123");
		float f21 = Float.parseFloat("123");
		
		System.out.println(i21);
		System.out.println(f21);
	}

}


합산

public class WrapperEx02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int i11 = 10;
		int i12 = 20;
		int sum = i11 + i12;
		System.out.println(sum);
		
		// Wrapper클래스는 기본 자료형처럼 사용할 수 있다.
		Integer i21 = Integer.valueOf("10");
		Integer i22 = Integer.valueOf("20");
		// unboxing / 계산을 위해 기본 자료형으로 자동으로 바뀜
		int sum2 = i21 + i22;
		System.out.println(sum2);
	}
}




  1. 복습
  2. 주민등록번호 검사기
    java JuminCheck "123456-1234567
    주민등록번호 형식이 맞음 / 틀림
profile
개발자 꿈나무

0개의 댓글