- 구성요소: 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를 상속한다. (디폴트)
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("주민번호가 부정확합니다");
}
}
}
}
댓글 없음:
댓글 쓰기