(c++)
class A {
public void pro() {
}
}
class B {
public void pro() {
}
}
class C : A,B //다중 상속이 가능하다.
{
}
C ob = new A();
ob.pro(); //부모 A의 pro를 호출해야 할지, B의 pro를 호출해야할지.. 오류가 발생하게 된다.
class 클래스명 {
}
interface 인터페이스명 {
}
String.valueOf();
기본자료형 + "";
Wrapper 클래스들을 이용한다.
각 기본자료형에 따른 클래스들을 말한다.
<Wrapper 클래스>
- boolean Boolean
- byte Byte
- char Character
- short Short
- int Integer
- long Long
- float Float
- double Double
int []a = {10, 20, 30};
a[4] = 5; //배열의 범위를 넘었을 때
new ArrayIndexOutOfBoundException() ==> 자동으로 객체 생성
try {
예외가 발생할 만한 문장(들)
} catch(예외자료형 변수명) { //여기서 캐치
처리할 문장
}
abstract class A { // A클래스는 추상클래스이고, 추상메소드를 가지고있다.
public void test() {// 추상클래스는 추상메소드 뿐 아니라 body가 구체화된 메소드를 포함할 수 있다.
System.out.println("test입니다.");
}
public abstract void pro(); // 추상메소드
}
class B extends A {
@Override
public void pro() {
System.out.println("B의 pro입니다.");
}
}
public class AbstractTest {
public static void main(String[] args) {
// A ob = new A(); //객체화 될 수 없다. 추상클래스의 객체는 생성할 수 없다.
// B ob = new B();
// ob.pro();
A ob = new B();
ob.pro(); //b의 구체화된 pro가 동작이 된다.
}
}
interface A { // A라는 자료형을 만든다. (인터페이스 안에는 상수, 추상메소드만) === 완전추상
public int a = 10; // final을 붙이지 않아도 자동 final
public void pro(); // abstract을 붙이지 않아도 자동 abstract
}
interface B {
public int b = 20;
public void test();
}
class C implements A, B { // interface를 A, B 둘다 상속받는다. 인터페이스를 상속받을 떄에는 implements를 사용한다.
@Override
public void test() {
System.out.println("test");
}
@Override
public void pro() {
System.out.println("pro");
}
}
public class InterfaceTest {
public static void main(String[] args) {
C ob = new C();
ob.pro();
ob.test();
}
}
public class StringBufferTest {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("hello");
// sb = sb + " Java"; 오류
sb.append(" java"); // 원래있던 객체에 java를 추가(append)
System.out.println(sb);
String str = "hello";
str = str + " java";
// String은 기본자료형처럼 사용가능하다.
}
// StringBuffer 에 append를 통하여 문자열을 추가하면 새로운 객체가 만들어지는 것이 아니라, 원래 객체에 문자열이 추가된다.
}
public class StringTest09 {
public static void main(String[] args) {
String data = "hello java";
int n = data.indexOf('e'); //j가 몇번째에 나오는지 (글자가 중복이 될 경우 가장 앞에 있는 번째로 출력 , a는 7번째)
int n2 = data.indexOf("java"); //java라는 글자가 몇번째에 나오는지 (indexOf)
System.out.println(n);
System.out.println(n2);
System.out.println("--------------------------------");
int n3 = data.lastIndexOf("a"); //a라는 글자를 끝에서부터 찾는다. 하지만, 인덱스를 따질 때는 왼쪽부터(lastIndexOf)
System.out.println(n3);
String data2 = data.replace("java", "oracle"); //data2는 java에서 oracle로 글자가 바뀌게 됨.
System.out.println(data2);
System.out.println(data);// 하지만 data의 값은 변하지 않는다.
}
}