當前位置:首頁 » 編程語言 » java的問題

java的問題

發布時間: 2022-05-08 02:35:18

java問題

第一個問題:
1.首先,我們從main函數入手開始看,
GridLayout layout=new GridLayout();
實例化GridLayout這個類,我們需要觀察該類的構造函數和繼承狀態

2.OK,沒有帶參數的構造函數,那麼看到class GridLayout implements LayoutManager意思是實現了LayoutManager這個介面
interface LayoutManager 這個介面定義了show() 方法,並在GridLayout 實現(重寫)了該方法。
GridLayout layout=new GridLayout();執行完畢。

3.Panel pan=new Panel(layout);
實例化Panel 這個類,我們需要觀察該類的構造函數和繼承狀態

4,OK,我們看到Panel 類就兩個構造函數,一個是無參數的,還有一個是Panel(LayoutManager layout)構造函數,LayoutManager是什麼呢?為什麼能傳入GridLayout 類的變數作為參數而不是GridLayout 類型的參數呢?
OK,我們看到LayoutManager是一個介面,介面被GridLayout 實現,剛才也說過class GridLayout implements LayoutManager意思是實現了LayoutManager這個介面
也就是說,我們的GridLayout 跟 介面LayoutManager 顯然存在著繼承關系。

OK。我們仔細觀察不難發現之間存在的關系。
<1>,有繼承的存在。 GridLayout implements LayoutManager 。
<2>,有重寫,剛說過GridLayout 實現(重寫)了show方法。
<3>,在你的疑問里,LayoutManager layout,既然能傳入,證明作者的設計LayoutManager 跟GridLayout 存在著繼承的關系,並在這里,GridLayout 的引用變數layout作為實參傳入了該構造函數,那麼LayoutManager layout這個形參就指向了GridLayout 類的實例。

那麼為什麼父類引用能指向子類的實例?有什麼好處?

這種設計方式是java語言的核心基礎,稱之為多態!不知道多態是什麼?趕緊去面壁,然後翻書。
這么做的好處?簡單來說就是,我們加入新的子類到程序中時,(就像你這個程序里的FlowLayout的加入) ,不必重寫或修改處理這個類型的程序(這里就是不需要增加令一個參數類型的構造函數)給程序員提供了非常非常大的便利(不需要修改構造函數難道不便利么?)。
關於多態,你需要仔細閱讀java書籍才能弄懂更多的細節。
繼續說程序,layout.show()在構造函數中被調用,System.out.println("這是卡片布局!"),輸出這是卡片布局。
Panel pan=new Panel(layout);執行結束了。然後main方法結束。程序結束。
第一個問題結束!

第二個問題:
void add(Object obj){ //object obj什麼意思
System.out.println("添加組件啦");
}
這里的Panel 類中,有一個add方法,這個方法在程序中沒有被調用,所以該程序再執行過程中沒它什麼事。我們來分析一下這個add方法。
Object obj在該方法中作為形參准備接收調用該方法時傳來的實參,OK。
Object 是什麼?Object 是java所有類的最終的基類。你定義的所有類,都默認extends Object。也就是說,在這里,不管傳入什麼東西,肯定是父類引用指向子類實例。
這跟上面一樣,還是多態的使用。

關於object類和多態,還是需要看書繼續深化理解。所以,騷年,任重道遠,這只是開始的開始的開始。

但是,基礎至關重要。

② java的問題

代碼對象的創建流程說明如下:

  1. String str1 = "hello" + " java";可以看成 String str1 ="hello java"; 在字元串常量池查找是否已經存在「hello java」的字元串常量對象,未找到則創建字元串"hello java",str1指向該對象並且將該對象放到字元串常量池。

  2. String str2 = "hello java"; 該創建過程為:去字元串常量池查找是否有「hello java」的字元串對象,因為剛才已經創建了一個在常量池的對象,直接返回該對象,所以str1和str2是指向同一個對象的字元串。

  3. String str3 ="hello";在常量池查找是否包含該「hello」的字元串對象,不存在創建一個新的字元串對象給str3,放入常量池。String str4 = "java" ,在常量池查找是否包含該「java」的字元串對象,不存在創建一個新的字元串對象給str4,放入常量池。這個時候str3和str4不是同一個對象。

  4. String str3 = str3 +str4; 因為String是final不可變的對象類型,這個操作實際上是創建了一個新的StringBuilder然後toString方法創建了一個新的字元串對象。所以str3依舊不等於str2和str1。

③ java的問題

public class Person {

private String name;
private int age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public boolean compareTowPeopleAge(Person p1, Person p2){
if (p1 == null || p2 == null){
throw new RuntimeException("參數傳入為null");
}

return p1.getAge() == p2.getAge();
}
}

如果解決了你的問題,請採納,如果有疑問,請追問!

④ JAVA問題

就算是溫故知新吧。 我試著把你這兩個文件放在c:\jdk\test文件夾里, 然後先 javac Aaa.java 編譯成功. 然後再 javac Hello.java 編譯出錯: Hello.java:1: 錯誤: 程序包a不存在 import a.Aaa; ^ Hello.java:4: 錯誤: 無法訪問Aaa Aaa a=new Aaa(); ^ 錯誤的類文件: .\Aaa.class 類文件包含錯誤的類: a.Aaa 請刪除該文件或確保該文件位於正確的類路徑子目錄中。 2 個錯誤 上面的提示,大概意思是說 Aaa.class的位置放錯了。 我直接在dos下輸入: javac 查看語法 -d <目錄> 指定放置生成的類文件的位置 然後按上面這個提示,重新編譯一個 Aaa.java文件 javac Aaa.java -d . 這個時候我發現新生成了一個a文件夾,裡面存放的是 Aaa.class 然後我再編譯 javac Hello.java 編譯成功。 C:\jdk\test>java Hello Hello! java中的包其實你完全可以理解為「文件夾」。 一個包里有很多的類文件,一個「文件夾」里存放著很多的類文件。

⑤ java的問題

JAVA(TM)6 UPDATE 15是JRE, java程序運行環境。 網頁游戲大多是Flash的, 是有少部分B/S結構管理軟體才會用大JRE, 比如說公司里的OA, 報銷管理, 進存銷管理軟體等, 有一部分就是基於Java Applet開發的, 需要JRE的支持。

後面的UPDATE 15是java1.6.0大版本的15小版本號

⑥ java問題

LayoutManager是介面,開始就定義了interfaceLayoutManager;Object是對象基本類型,可以理解為所有對象的父類。Objectobj就是定義一個Object類的obj執行順序,介面的執行順序有很多,只要你調用了就會執行,調用的順序就是執行的順序,如果沒調用,可能一輩子都不會執行。

⑦ 關於JAVA的一些問題

一、Java異常的基礎知識

異常是程序中的一些錯誤,但並不是所有的錯誤都是異常,並且錯誤有時候是可以避免的。比如說,你的代碼少了一個分號,那麼運行出來結果是提示是錯誤java.lang.Error;如果你用System.out.println(11/0),那麼你是因為你用0做了除數,會拋出java.lang.ArithmeticException的異常。
有些異常需要做處理,有些則不需要捕獲處理,後面會詳細講到。
天有不測風雲,人有旦夕禍福,Java的程序代碼也如此。在編程過程中,首先應當盡可能去避免錯誤和異常發生,對於不可避免、不可預測的情況則在考慮異常發生時如何處理。
Java中的異常用對象來表示。Java對異常的處理是按異常分類處理的,不同異常有不同的分類,每種異常都對應一個類型(class),每個異常都對應一個異常(類的)對象。
異常類從哪裡來?有兩個來源,一是Java語言本身定義的一些基本異常類型,二是用戶通過繼承Exception類或者其子類自己定義的異常。Exception 類及其子類是 Throwable 的一種形式,它指出了合理的應用程序想要捕獲的條件。
異常的對象從哪裡來呢?有兩個來源,一是Java運行時環境自動拋出系統生成的異常,而不管你是否願意捕獲和處理,它總要被拋出!比如除數為0的異常。二是程序員自己拋出的異常,這個異常可以是程序員自己定義的,也可以是Java語言中定義的,用throw 關鍵字拋出異常,這種異常常用來向調用者匯報異常的一些信息。
異常是針對方法來說的,拋出、聲明拋出、捕獲和處理異常都是在方法中進行的。
Java異常處理通過5個關鍵字try、catch、throw、throws、finally進行管理。基本過程是用try語句塊包住要監視的語句,如果在try語句塊內出現異常,則異常會被拋出,你的代碼在catch語句塊中可以捕獲到這個異常並做處理;還有以部分系統生成的異常在Java運行時自動拋出。你也可以通過throws關鍵字在方法上聲明該方法要拋出異常,然後在方法內部通過throw拋出異常對象。finally語句塊會在方法執行return之前執行,一般結構如下:
try{
程序代碼
}catch(異常類型1 異常的變數名1){
程序代碼
}catch(異常類型2 異常的變數名2){
程序代碼
}finally{
程序代碼
}
catch語句可以有多個,用來匹配多個異常,匹配上多個中一個後,執行catch語句塊時候僅僅執行匹配上的異常。catch的類型是Java語言中定義的或者程序員自己定義的,表示代碼拋出異常的類型,異常的變數名表示拋出異常的對象的引用,如果catch捕獲並匹配上了該異常,那麼就可以直接用這個異常變數名,此時該異常變數名指向所匹配的異常,並且在catch代碼塊中可以直接引用。這一點非常非常的特殊和重要!
Java異常處理的目的是提高程序的健壯性,你可以在catch和finally代碼塊中給程序一個修正機會,使得程序不因異常而終止或者流程發生以外的改變。同時,通過獲取Java異常信息,也為程序的開發維護提供了方便,一般通過異常信息就很快就能找到出現異常的問題(代碼)所在。
Java異常處理是Java語言的一大特色,也是個難點,掌握異常處理可以讓寫的代碼更健壯和易於維護。

⑧ Java問題

class MyApplication {
public void click(){
System.out.println("應用打開了");
}
}

class Word extends MyApplication{
public void click(){
System.out.println("應用打開了一個word文檔");
}
}

class Text extends MyApplication{
public void click(){
System.out.println("應用打開了一個txt文檔");
}
}

class Picture extends MyApplication{
public void click(){
System.out.println("應用打開了一張圖片");
}

public void beauty(){
System.out.println("我可以美化圖片");
}
}

class Test{
public static void method(MyApplication ma){
ma.click();
if(ma instanceof Picture){
((Picture)ma).beauty();
}
}

public static void main(String[] args) {
MyApplication ma = new Word();
method(ma);

ma = new Text();
method(ma);

ma = new Picture();
method(ma);
}
}

⑨ 關於Java的問題

圓形類:

package Demo;

public class Circle {
public double getCircleCircumference(double r){
return 2*r*Math.PI;
}
public double getCircleSquare(double r){
return Math.PI*r*r;
}
}

矩形類:

package Demo;

public class Rectangle {
public double getRectangleCircumference(double length,double width){
return 2*(length+width);
}
public double getRectangleSquare(double length,double width){
return length*width;
}
}

三角形類:

package Demo;

public class Triangle {
public double getTriangleCircumference(double a,double b,double c){
return a+b+c;
}
public double getTriangleSquare(double a,double b,double c){
double p = (a+b+c)/2;
double q = p*(p-a)*(p-b)*(p-c);
return Math.sqrt(q);
}
}

測試:

package Demo;

import java.util.Scanner;

public class Test {
public static void main(String[] args) {
Circle circle = new Circle();
Rectangle rectangle = new Rectangle();
Triangle triangle = new Triangle();
double r;
double length;
double width;
double a;
double b;
double c;


System.out.println("請輸入圓形半徑:");
Scanner sc = new Scanner(System.in);
r = sc.nextDouble();
double circleCircumference = circle.getCircleCircumference(r);
double circleSquare = circle.getCircleSquare(r);
System.out.println("圓形周長是"+String.format("%.2f",circleCircumference)+",面積是"+String.format("%.2f",circleSquare)+" ");

System.out.println("請輸入長方形長:");
length = sc.nextDouble();
System.out.println("請輸入長方形寬:");
width = sc.nextDouble();
double rectangleCircumference = rectangle.getRectangleCircumference(length, width);
double rectangleSquare = rectangle.getRectangleSquare(length, width);
System.out.println("矩形周長是"+String.format("%.2f",rectangleCircumference)+",面積是"+String.format("%.2f",rectangleSquare)+" ");

System.out.println("請輸入三角形第一條邊長:");
a =sc.nextDouble();
System.out.println("請輸入三角形第二條邊長:");
b = sc.nextDouble();
System.out.println("請輸入三角形第三條邊長:");
c = sc.nextDouble();
double triangleCircumference = triangle.getTriangleCircumference(a, b, c);
double triangleSquare = triangle.getTriangleSquare(a, b, c);
System.out.println("三角形周長是"+String.format("%.2f",triangleCircumference)+",面積是"+String.format("%.2f",triangleSquare)+" ");
}
}

測試結果:

⑩ 關於Java的問題

簡單來說
action 就是我們一般所指的後台,接收前端請求的參數,用這些參數去調用service層的方法進行一些邏輯處理,最終返回一個結果響應給前端
service 一般用來控制事物,通過action傳進來的參數去調用層的方法,進行大部分的邏輯處理,保證數據的一致性。以前的jdbc方式,需要自己去控制事物提交和關閉的動作,現在的框架都會對jdbc進行封裝,就不需要你顯式的去操作這些了,你只需要寫好你的這些介面。舉個例子,你想保存a表的數據的時候,同時也想對b表的數據進行變更操作,那麼你可以把保存a表數據的方法和變更b表數據的方法放到一個service方法里,如果有一個失敗,那麼進行回滾,不會出現說a的數據進去了,b的變更卻沒有成功這種情況發生,要麼都失敗,要麼都成功,當然這只是一個小例子。
層 我們就是讓它和資料庫進行交互,簡單點說就是寫一個sql語句,然後打開資料庫連接,拿到這條語句執行的結果。有時候為了方便,也在裡面寫一些簡單的邏輯處理,嚴格來說,邏輯處理一般都在service體現。
entity 你都說他是模型了,你簡單的理解他就是對應資料庫中的表好了,裡面的欄位也是參照資料庫的表欄位來的。資料庫裡面有一個這樣的表,你可以寫sql語句去增刪查改這些操作,那麼在代碼裡面也需要有一個這樣的數據載體去進行數據邏輯處理

大概就這樣了,純手敲啊,忘採納,大半夜不容易。謝謝。

熱點內容
ftp定價是怎麼回事 發布:2025-05-11 12:09:18 瀏覽:330
android敏捷開發 發布:2025-05-11 11:56:49 瀏覽:79
腳本pon 發布:2025-05-11 11:52:27 瀏覽:825
ct5推薦哪個配置 發布:2025-05-11 11:47:45 瀏覽:741
領購未上傳發票 發布:2025-05-11 11:43:27 瀏覽:716
查看華為雲伺服器的ip地址 發布:2025-05-11 11:24:44 瀏覽:235
長沙銀行密碼多少 發布:2025-05-11 11:24:38 瀏覽:671
緩存手機視頻合並軟體哪個好 發布:2025-05-11 11:22:30 瀏覽:698
伺服器c盤怎麼清除 發布:2025-05-11 11:16:33 瀏覽:39
動態估演算法 發布:2025-05-11 11:06:19 瀏覽:923