Tag Java

[JAVA] Pass By ?

ปัญหานี้น่าจะเป็นปัญหาที่โลกแตกพอสมควรครับ และเป็นเรื่องที่ควรรู้ และเข้าใจครับ ไม่งั้น เวลาเจอ Defect อยู่ๆข้อมูลเปลี่ยนเฉย ผีหลอก หรือป่าว ไม่ใช่ครับ เราอาจจะเข้าใจผิดมาตลอด ตอนเรียน 2 ปีแรกที่มหาวิทยาลัย สิ่งที่ผมเข้าใจเกี่ยวกับ pass by ของ Java คือ พวก Primitive Data Type เป็นการ Pass by Value ครับ พวก Reference Type อย่าง Object เป็นการ Pass by Reference แต่ที่ผมเข้าใจมาผิดหมดครับ มารู้จริงๆ…

String .Equals() vs ==

two pigeon perched on white track light + equal

พอดีเมื่อวันพฤหัสก่อน เห็นน้องที่ทำงานใช้ Operator == ในการตรวจสอบว่า String เป็นอันเดียวกันไหม แต่ผมเห็นแล้วรู้สึกแปลกๆ มันควรใช้ Method Equals() มากกว่าครับ ใน Blog ตอนนี้ผมแสดงความแตกต่างของ .Equals() กับ == โดยผมยกตัวอย่างเฉพาะในภาษา Java และ C# ที่ผมใช้งานหลักอยู่ครับ – JAVA – C# จาก Code ทั้ง 2 แบบ เราจะเห็นความแตกต่างกันของ String นะครับ (ตามตัวอย่างของ C# และ Java นะครับ)…

[JAVA] Shallow Copy กับ Deep Copy

จากบทความที่แล้วนะครับ จะเป็นการใช้แนวคิด Shallow Copy กับ Deep Copy ใน .Net Framework ภาษา C# ครับ คราวนี้มาถึงตาม Java บ้างครับ เปิดมาที่ Code เลยครับ ใน Blog ผมเตรียม Class Person ไว้ โดยมี Get / Set ปกติ และทำ จริงๆ ถ้าไม่อยากเขียนแบบนี้มันมีตัว BeanUtils.copyProperties ที่ช่วยทำ Shallow Copy ให้ครับ แต่มันมีความพิสดารของ Spring /…

[JAVA] A java exception has occurred

หลายครั้งที่เราเอาไฟล์ .jar จากที่อื่นมาใช้ แล้วพบ Error Message นี้ ผมขอสรุปวิธีแก้ปัญหาที่เคยใช้ได้ผลดังนี้ครับ (พอดีเห็นโพสของรุ่นน้องเลยคิดว่าเอามาเขียนกองๆไว้ใน Blog ดีกว่า) ตรวจสอบ Version ของ .jar ก่อนเลยครับ ว่ามันสร้างมาจาก Java Version อะไร ตรวจสอบ Version Java ในเครื่องเราครับ ว่าเป็น Version ที่ต่ำกว่า จากข้อที่แล้ว หรือไม่ ถ้าใช่ Update Java ให้เครื่องเราครับ แต่ถ้า Update ไม่ได้ (จะมีบางกรณีที่เป็นระบบใหญ่ มันจะขอ Update Java…

FizzBuzz Problem without if (ปัจฉิมบท)

FizzBuzz With Out If Part 2 (AI Generate Image via Bing AI)

จากบทความที่แล้ว แสดงวิธีการเขียน Code กับโจทย์ปัญหา FizzBuzz โดยไม่ใช่ IF กันแล้วนะครับ แต่ผมยังทิ้งท้ายไว้อีกปัญหานึง คือ ถ้ามีเงื่อนไขเพิ่มขึ้นมาหละ โดยให้แสดง WOOF ้เพิ่ม ถ้าตัวเลขนั้นหาร 7 ได้ลงตัว (อ้างอิงจาก WIKI FIZZ BUZZ WOOF ) เราจะมีวิธีการแก้ปัญหาอย่างไรนะครับ โดยผมขอทวนวิธีการที่ใช้แก้ปัญหาใน Blog ตอนที่แล้วก่อนนะครับ

FizzBuzz Problem without if (ปฐมบท)

FizzBuzz With Out If Part 1 (AI Generate Image via Bing AI)

จากบทความที่แล้ว FizzBuzz Problem ไปนะครับ ต่อไปผมลอง Refactor Code อีกรอบ โดยมีเงื่อนไขว่าห้ามใช้ IF ในส่วนของ Logic Fizz และ Buzz ทำไมถึงต้องห้ามใช้ IF เพราะ การใช้ IF ส่งผลให้เกิดความมักง่ายของ Developer ทำให้เกิดปัญหาในการแก้ไข หรือพัฒนา Module เพิ่มเติม ต้องไปแก้ Code จนเกินความจำเป็น และทำให้เกิด Defect(ฺBug) เพิ่มขึ้นด้วย ซึ่งมีแนวคิดทางวิชาการมาสนันสนุนแนวคิดนี้อย่าง The Open Close Principle (OCP) และ High Coupling &…

FizzBuzz Problem

FizzBuzz Intro (AI Generate Image via Bing AI)
FizzBuzz เป็นโจทย์ฝึกสมองเด็ก ที่ใช้ช่วยในการเรียนรู้เรื่องการหาร ซึ่งสามารถไปอ่านกฏเพิ่มเติมได้จากใน WIKI: FIZZBUZZ ครับ แต่บทความนี้ผมขอนำกฏของ FizzBuzz มาประยุกต์กับการเขียนโปรแกรม

[Android] Error:The SDK Build Tools revision (19.0.3) is too low for project

วันนี้พอ Update Android Studio เป็นเวอร์ชัน 0.6.0 มาใหม่ พอเปิดโปรแกรมขึ้นมาใหม่พบ Error Message ดังรูปเลยครับ สาเหตุ build.gradle มันชี้ไปผิดเวอร์ชั่น ที่ไม่เหมาะสมกับ SDK วิธีการแก้ แบบที่ 1: แก้จากไฟล์ bulid.gradle [xml] apply plugin: ‘android’ android { compileSdkVersion 19 buildToolsVersion ‘19.1.0’ //แก้ไข Build Tools Version ให้เป็นไปตามที่ SDK ต้องการ defaultConfig { minSdkVersion…

[Java] NaN คือ อะไร

บ่อยครั้งที่เราเขียนโปรแกรมที่เกี่ยวกับการคำนวณตัวเลขต่างๆ ไปๆมาๆ เกิด Exception ตัวอย่าง เช่น สาเหตุของปัญหานี้ คือ การคำนวณแล้วเกิด NaN ซึ่งเป็น NumberFormatException อยากรู้ว่าน้อง NaN คือ อะไร สามารถอ่านต่อได้เลยครับ

[Java] การรับค่าผ่าน command line โดยใช้ Eclipse

Q: เคยสงสัยหรือไม่ ว่า public static void main(String[] args) ตรงที่ตัวแดงไว้ มีไว้ทำอะไร A: มีไว้ เพื่อทำการรับค่าจากส่วนของ command line(หน้าจอดำๆ ของMS Dos) เพราะ java ในยุคแรกๆต้องรันผ่านหน้าจอ Dos  โดยตัว String[] args นั้นไม่จำเป็นต้องเขียนก็ได้ แต่ถ้าไม่ระบุ (String[] args) method main มันจะกลายเป็นแค่ method ทั่วๆไป เพราะ jvm specification ระบุ signature ไว้ว่ามันจะวิ่งไปทำงานที่ main ที่รับ parameter เป็น…