ถามข้อ 1. ผมสับสนจังเลย ถ้าจะหาความยาวของสตริงหรือ array จะให้ length หรือ length( ) กันแน่
ตอบ เรื่องนี้น่าสับสนอยุ่ไม่น้อยครับ เพราะเขาใช้คำว่า length กับทั้ง array และ string แต่ใช้กันคนละอย่าง ถ้าอยากทราบความยาวของสตริง ต้องถามด้วยเมธอด length() ถ้าอยากรู้ขนาดของ array เช็คได้จากตัวแปร length
บังเอิญว่าชื่อเหมือนกัน แต่ใช้กับคนละเรื่องครับ กรณีของ array มันมีขนาดตายตัว เขาจึงเก็บขนาดไว้ในตัวแปร ซึ่งเป็น final การเช็คขนาดจากตัวแปรทำได้ง่าย
และโปรแกรมทำงานเร็ว ส่วนการถามขนาดของสตริง ทำไมเขาไม่ทำให้เหมือนกันคือใช้ตัวแปรแทนที่จะเป็นเมธอด ผมเดาเหตุผลที่เขาทำอย่างนั้นก็เพราะว่า
string อาจเปลี่ยนความยาวได้ จึงต้องใช้เมธอดในการถามเพื่อว่ามันจะได้นับความยาว ณ. ขณะนั้นให้ สำหรับคลาส String ความยาวของสตริงเปลี่ยนไม่ได้
แต่คลาส StringBuffer ควาวยาวของสตริงเปลี่ยนได้ เขาจึงทำให้ใช้เหมือนกันทั้ง String และ SringBufer จะได้ไม่สับสนเมื่อมีการใช้สตริงนั่นเอง
ถามข้อ 2 string คือ array of char ใช่หรือเปล่าครับ
ตอบ ถ้าเป็นภาษา C string จะเป็น array of char ซึ่งจะจัดการแบบ array ได้ แต่ในภาษาจาวา String ไม่ใช่ array of char ครับ สตริงจะเป็นคลาสพิเศษคลาสหนึ่งซึ่งจะมีเมธอดต่างๆ ให้ใช้มากมายเช่นจะถามความยาวของสตริงก็ใช้เมธอด length( ) จะใช้ตัวแปร length ไม่ได้ เพราะไม่ใช่ array สตริงไม่มีตัวแปรสมาชิก length ให้ใช้ เราจะจัดการสตริงแบบเดียวกับ array ไม่ได้ เช่นจะเข้าถึงอักขระตัวใดตัวหนึ่งของสตริง แบบ array เช่น string[3] ไม่ได้ ถ้าต้องการจัดการแบบ array ต้องแปลงไปเป็น array of Character ก่อนครับ