그밖에 다양한 메서드 :
length() : 현재 문자열의 길이를 반환
replace(int start, int end, String str) : start부터 end-1 위치까지 str로 대체
substring(int start, int end) : start부터 end-1 위치까지 출력
toString() : 현재 문자열을 String 형으로 반환
charAt(int index) : index 위치에 있는 문자를 출력
String이 가지고있는 메서드를 공통적으로 많이 가지고있는 것을 볼 수 있다.
3.
삼항연산자 :
삼항연산자를 쓰는 이유는 어렵지 않은 알고리즘의 다수줄의 코드를 가독성 좋게 한 두줄로 바꿔줄 수 있기 때문
(boolean) ? c(true일경우) : d(false일경우)
(조건식) ? true : false 라고 보면 간단하겠다.
위의 예제를 놓고보면
'12345.01이 12345.00보다 작다' 라는 조건문이 true이면 123456을 var1에 넣고
false라면 123456.02f를 var1에 넣는 뜻이다.
float type에 _이 들어간 것을 볼 수 있는데
이 기호를 '언더스코어'라고 한다.
그냥 가독성을 위해 넣어준다. 마치 화폐단위를 표기할때 ,을 넣는것과 같다.
4.
interface I 를 만든다.
I안에는 displayI()라는 형태의 메서드틀이 들어있다.
abstract class C2를 만든다.
C2는 interface I를 상속받는다.
C2안에는 "C2"를 출력하는 출력문이 들어있다.
public class Test066은 C2를 상속받는다.
때문에 C2가 상속받고 구현하지 않은 interface I의 메서드를 재정의해야한다.
아래쪽에 메서드를 재정의했다. "Test066"을 출력하는 출력문을 실행하는 기능을하도록 만들었다.
C2와 I객체를 public class의 main메서드에서 생성한다.
각 객체를 통해 displayI와 displayC2메서드를 실행한다.
t.displayI() ==> Test066출력
s.displayC2() ==> C2출력
s.displayI() ==> Test066출력
"C1"출력문 실행
의 순서로 결과가 확인된다.
5.
접근제한자 :
protected의 경우 이런식으로 상속받으면 사용이 가능하다.
6.
중첩 클래스 : 클래스 내부에 선언된 클래스
하나의 패키지에 여러개의 class를 추가할수 있으나
파일명과 동일한 클래스는 반드시 public 이어야 한다.
그리고 동일 파일내에 다른 클래스들 역시 독립된 *.class 파일로 생성된다.
하나의 패키지에 여러개의 class를 추가하려면
public class는 1개뿐이다.
7.
8.
논리연산자중 OR(||)의 경우 둘 중하나만 참이면 True이기때문에
앞쪽의 조건이 true가 되면 뒤쪽의 조건문을 실행하지 않고 if문내의 실행문을 실행한다.
앞쪽의 조건이 false일 경우 뒤쪽의 조건식 확인이 필요하기 때문에 뒤쪽의 조건식을 실행한다.
논리연산자중 and(&&)의 경우 둘다 True일때 if문을 실행하기 때문에
앞과 뒤의 조건식 모두 실행한다.
따라서 두가지식의 실행결과 x2의 값이 다르다.
비트연산자는 비트단위의 결과를 반환한다.
|(or)비트 연산자의 경우 둘 중 하나가 참이면 1을 둘다 거짓이면 0을 반환한다.
논리연산자와 비트연산자의 차이는 논리연산자 or은 이미 true의 값을 받아서 더이상 논리식 판별이 필요없을경우 뒤쪽의 조건식을 진행하지 않지만, 비트연산자의 경우 앞쪽이 true더라도 뒤쪽의 조건식까지 진행한 후 다음 문장을 실행한다.