---
# System prepended metadata

title: File_000_java

---

## 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
 