## Java這什麼那麼細的題目不是能運行就好了嗎 1. 如圖所示,此段程式碼紅色的highlight的意思是? ![](https://hackmd.io/_uploads/HkYjgQJXa.png) **:有編譯上的錯誤(Error)** `BigDecimal`是一個 Java 類別,處理十進位數值。需要一開始導入 java.math.BigDecimal 包。 `DecimalFormat` 和 `SimpleDateFormat` 也是Java類別,格式化數字跟日期。需導入 java.text.DecimalFormat 和 java.text.SimpleDateFormat 包,不然編譯器無法識別,造成編譯錯誤。 ```java public class CH2Q7{ public static void main(String[] args){ BigDecimal d = new BigDecimal(111); DecimalFormat e; SimpleDateFormat v; String dd; StringBuffer dddd; } } ``` 2. 為了讓程式碼紅色的highlight的地方正常執行 使用alt+enter用來? **:加上import** 3. 如果有一class 要公開對外使用內部的成員(member) 那一個不是必要的? **:有main method的Class** main 方法只是入口點,用於啟動應用程序,而不影響內部成員可行性 `其他:` "有package名称的Class":类是否属于某个特定的包与类内部成员的可见性有关,但这并不是不必 要的。类的包名决定了它的命名空间,可以影响其他类是否可以访问它。如果要将类的内部成员公开给 其他包中的类,那么必须使用 public 或其他适当的访问修饰符。 "有public修饰符的Class":如果要使类的内部成员对外可见,那么类自身应该至少使用 public 修饰符,或者成员变量和方法应该使用 public 修饰符,以便其他类可以访问它们。 4. 為何使用java.lang.Math這個class時 不用加上import java.lang.Math;的"主要"原因? 因為Math Class是package java.lang.* 內的Class **:因為Math Class本身就內建於java jdk 的library當中** `解析chatgpt` ==Math== 类是Java标准库的一部分,它位于 java.lang 包中,而 java.lang 包中的类不需要显 式导入即可在Java程序中使用。这是因为 java.lang 包中的类在任何Java程序中都是自动可见的,无需额外的导入语句。 5. 有兩個class a.Class1, class a.Class2 在Class2當中為何不用import a.Class1就可以直接使用Class1的method的原因? **:Class1 Class2是 同package相鄰的 Classs** 6. 在default package下的Class1能夠被其他的class呼叫使用其成員(member)嗎? **:可以,除了放在default package下的class 是不可以的** > 參考資料:[package 與存取修飾](https://openhome.cc/Gossip/JavaEssence/PackageAndModifier.html ) 7. 請用Idea工具確認 請問在JDK17的環境下Location出現在幾個package底下? **:2** `chatgpt解析` 在JDK 17的环境下,通常有一些标准的Java SE(Java Standard Edition)包,其中 java 包是一个主要的包。这个包包含了Java标准类库的大部分内容。其他常见的包包括 javax、org、com 等,用于包含其他标准或第三方库。所以,Location出现在==两个==主要的包底下,即 java 包和 javax 包。 8. 在java中的一段敘述 MyClass.myClass.myMethod(); 請問myClass是什麼(依照命名慣例) **:class** >參考資料: >[java中类函数有哪些](https://blog.51cto.com/u_16175447/6802465) >[類別、物件](https://yubin551.gitbook.io/java-note/basic-object-oriented/class_object) 9. 在java中的一段敘述 MyClass.myClass.myMethod(); 請問MyClass是什麼(依照命名慣例) **:class** 10. 在java中的一段敘述 MyClass.myClass.myMethod(); 請問myMethod是什麼(依照命名慣例 ) **:method** 11. 在一段敘述中 Myclass.myClass.myMethod(); 請問myMethod是什麼 **:class method** > 11. 12.不確定,找個instance method例子看看 > 參考資料: > [類別 Class、物件 Object 和實體 Instance的差別?[轉錄]](https://medium.com/ai%E5%8F%8D%E6%96%97%E5%9F%8E/%E9%A1%9E%E5%88%A5-class-%E7%89%A9%E4%BB%B6-object-%E5%92%8C%E5%AF%A6%E9%AB%94-instance%E7%9A%84%E5%B7%AE%E5%88%A5-%E8%BD%89%E9%8C%84-5f359c9787fd) > [](https://) ```java public class MyClass { // 实例变量 private int value; // 实例方法,需要通过类的实例来调用 public void setValue(int newValue) { value = newValue; } public int getValue() { return value; } public static void main(String[] args) { // 创建一个 MyClass 的实例 MyClass myObject = new MyClass(); // 通过实例调用实例方法 myObject.setValue(42); int result = myObject.getValue(); System.out.println("Value is: " + result); // 输出:Value is: 42 } } ``` 在上面的示例中,setValue 和 getValue 都是 MyClass 的实例方法,它们需要通过类的实例(myObject)来调用。这些方法可以访问和操作实例变量(value),并且它们的行为依赖于类的实例。 12. 在一段敘述中 Myclass.myMethod(); 請問myMethod是什麼 **:class method** `chatgpt解析` MyClass.myMethod() 中的 myMethod 是一个类方法(也称为静态方法)。这是因为它是通过类名 MyClass 直接调用的,而不是通过类的实例(对象)调用。类方法不依赖于类的实例,可以直接通过类名访问。 13. 如果要將MyClass放到 package aaa 下要? **:宣告package aaa;** 14. .java 寫好的應用程式(application) 想要交付給其他人執行 在idea環境需要提供的檔案在? **:在 /out/\* 下** > [idea中out文件夹的作用](https://blog.csdn.net/weixin_47414034/article/details/124472887) [如何使用idea将自己写的代码封装起来供别人使用](https://blog.csdn.net/weixin_60414376/article/details/123560684) 15. 請查看[java 17 api document](https://docs.oracle.com/en/java/javase/17/docs/api/new-list.html) 請問 `java.time.LocalDateTime` 中有幾個now method? **:3** now() now(ZoneId zone) now(Clock clock) > [Class LocalDateTime](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/LocalDateTime.html) 16. 如圖所示在idea開發工具中, 如何確認該class為main class ![](https://hackmd.io/_uploads/S12gGH1Qa.png) **:Class名稱上有綠色play箭頭** ```java /*要有public static void main*/ public static void main(String[] args) { System.out.println("Hello, World!"); // 打印 "Hello, World!" } ``` 17. 請問一個Main.java檔中 有2個main class Main1 Main2 , 編譯後要如何執行? **:java Main** 18. 請問line 7執行後sample2 的內容是? ![](https://hackmd.io/_uploads/ryDdNHyQp.png) 參考到實體,new Ch2Sample1()的實體 **:參考到類別 Ch2Sample1** 19. 按照JAVA命名package的慣例若有多個字的名稱使用的分隔方法為 ? **:. (dot)** 20. 按照JAVA命名Class的慣例若有多個字的名稱使用的分隔方法為 ? **:CamelCase** 21. 按照JAVA命名"常數(Constant)"的慣例若有多個字的名稱使用的分隔方法為 ? **:_ (underscore)** > [一般性命名原則](https://nanashi07.gitbooks.io/java-standard/content/naming/generic/) 22. 下方截圖為何會發生編譯錯誤的原因是? ![](https://hackmd.io/_uploads/H16gSPJXa.png) **:class 是java的keyword** 23. Idea環境開發時 無法執行時,要去看哪裡 ? 紅色的錯誤(Error) , 黃色的警告(Warning) , 綠色的錯字(Typo) **:错误将显示为红色的错误消息** `另外` 警告(黄色)通常是一些潜在的问题或建议,它们可能不会阻止程序的执行,但仍然需要注意。您可以通过查看IDE中的警告面板来查看警告消息,并尝试解决警告。 绿色的拼写错误(Typo)通常是与拼写和语法有关的问题,不会导致程序无法执行,但可能需要校正以提高代码的可读性。 24. 要將class C從原本的package a.b; 改放到package a;底下,class C要做麼? **:宣告package a; 且將C放入 src/a/路徑下;** 25. 如果要使用class System要如何import? **:import java.lang.System;** 26. 那一個是main class的main method ? **public static void main(String[] args)** :::success 27. 要建立main class 可用鍵盤輸入____,快速建立main method (Intellij IDEA) **:main** 參考來源:[Java的IDEA最常用快捷键汇总+快速写出Main函数](https://cloud.tencent.com/developer/article/1886487) ::: 28. 若要new class,要在哪一個目錄上操作按下右鍵(Intellij IDEA)? **/src/** 29. 請問按下執行(run)後,建立了幾個實體(instance) 畫面上出現幾個視窗(frame), 顯示標題 (title)為? ![image.png](https://hackmd.io/_uploads/r1DxfKJ7a.png) **:2個instance , 1 個frame , title為fram2** `chatgpt解析` 第一个实例 frame1 被创建后设置了标题为 "frame1",但没有设置为可见,因此它不会显示在屏幕上。而第二个实例 frame1 被创建后设置了标题为 "frame2" 并设置为可见,因此它会在屏幕上显示。 30. JFrame win=new JFrame(); win=new JFrame(); new JFrame(); 請問總共宣告了幾個變數(variable)? 建立了幾個實體(instance)? **:1, 2** `解析` ```java JFrame win=new JFrame(); ``` :arrow_right: 一個`win`的變數,創造了JFrame的實體-->1個實體,1個變數 --- ```java win=new JFrame(); ``` :arrow_right: 將`win`變數重新分配為另一個新的JFrame實體-->仍是1個實體 --- ```java new JFrame(); ``` :arrow_right: 創建了新的實體,沒有賦予任何變量--> 實體+1 31. String public = "public" ; 請問為何此段程式碼編譯時會發生錯誤? **:變數名稱不可以是keyword** 32. System.out.println()中的out是 **:class** > 屬性介紹: [Class System](https://docs.oracle.com/javase/8/docs/api/java/lang/System.html) [Java 快速導覽 - System 類別](https://pydoing.blogspot.com/2011/01/java-system.html) [System.out.println in Java](https://www.geeksforgeeks.org/system-out-println-in-java/) `chatgpt解析` System.out.println() 中的 out 是一个静态成员(也称为类成员)变量,它是 System 类的一个公共静态成员。因此,它是一个静态成员(类成员),它属于 System 类本身,而不是 System 类的实例。 33. System.out.println()中的println()是 **:method** 34. System.out.println()中的System是 **:class** 35. 如果要在java中建立一串package的名稱哪一個不可以用? **:a1.a2.a3** `其他` 開頭是數字、美元符號 `$` 或 `_`,不合規則。 36. 如果我要要編譯java程式碼檔案 , 可以用下列哪些工具 ? **:javac.exe、Intellij IDEA Community** 37. 若要執行ch2.Ch2Sample2這個class 要使用。 **:java ch2.Ch2Sample2** 38. 請問java.exe 與 javac.exe 放在jdk的哪裡? **:/bin/** 39. 如果類別 A 有 a b c 三個成員 , 類別B 有 c d e 三個成員 , 那麼 B繼承了 A後 , B 有幾個成員? **:5個** 40. 類別C中有1 instance method M(),請問要使用M()之前須先? **:建立C的實體** 41. 類別C中有1 class method M 請問要使用M()之前須先 **:已可以直接使用C.M()** 42. java應用程式,若要在mac上執行需要有? **:Java JDK** 43. Java 編譯後的產生檔案格式稱為 **:bytecode** > 參考: > [java源文件编译后产生byte code (试题)(自己写的解释)](https://blog.csdn.net/qq_32003379/article/details/83545107) 44. 請問在default package下使用String類別時 為何不須import java.lang.String ? **:automatic import** `chatgpt` 在Java中,默认情况下,java.lang包中的类会自动导入,无需显式导入,包括String类。这是Java的一种自动导入机制,使得java.lang包中的类在任何Java类中都可以直接使用,而不需要额外的导入语句。 45. 請問String (類別class) 放在哪一個package下 **:java.lang** :::warning 46. 目前最新發佈的java JDK版本是? **:17(?)** > 有趣的是,[Oracle Java Download](https://www.oracle.com/tw/java/technologies/downloads/)的JDK 有 21,你再看看的考古題是幾年分的呀? > 自己查證嘿 > > ![image.png](https://hackmd.io/_uploads/BJlURceQ6.png) ::: 47. Java預計下一版LTS(Long term support) Java 21版本將會是哪一年推出? **:2021(?)** 48. 目前Java多久推出一次新的版本的JDK