## Java這什麼那麼細的題目不是能運行就好了嗎
1. 如圖所示,此段程式碼紅色的highlight的意思是?

**:有編譯上的錯誤(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

**: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 的內容是?

參考到實體,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. 下方截圖為何會發生編譯錯誤的原因是?

**: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)為?

**: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,你再看看的考古題是幾年分的呀?
> 自己查證嘿
>
> 
:::
47. Java預計下一版LTS(Long term support) Java 21版本將會是哪一年推出?
**:2021(?)**
48. 目前Java多久推出一次新的版本的JDK