java類方法,java類方法修改類屬性

本文目錄一覽:

JAVA中類方法和對象方法有什麼區別?

類方法是所有該類的實例也就是對象共有的方法;對象方法是每個該類的實例也就是對象所私有的。

類方法必須既可以用類名直接調用,也可以用對象來調用;對象方法只能用對象來調用。

Java是一種可以撰寫跨平台應用軟件的面向對象的程序設計語言。

Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、遊戲控制台、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社群。

Java編程語言的風格十分接近C語言、C++語言。Java是一個純粹的面向對象的程序設計語言,它繼承了C++語言面向對象技術的核心。

優勢:Java適合團隊開發,軟件工程可以相對做到規範。由於Java語言本身的極其嚴格語法的特點,Java語言無法寫出結構混亂的程序。這將強迫程序員的代碼軟件結構的規範性。這是一個很難比擬的優勢。

劣勢:J2EE的架構很完美,第一版軟件可以做滿意,但是很不適合互聯網模式的持續不斷修改。互聯網軟件工程管理上的不足,持續的修修補補導致架構的破壞。

java類的方法由哪幾部分組成?

組成:一個簡單的java程序由java包(如:import java.awt.*)、類聲明 、變量、構造方法(可缺省)、方法 這幾部分構成。

Java:

Java是一種可以撰寫跨平台應用程序的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、遊戲控制台、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社群。

Java 編程語言的風格十分接近C、C++語言。Java是一個純的面向對象的程序設計語言,它繼承了 C++ 語言面向對象技術的核心,Java捨棄了C ++語言中容易引起錯誤的指針(以引用取代)、運算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能用於回收不再被引用的對象所佔據的內存空間,使得程序員不用再為內存管理而擔憂。在 Java SE 1.5 版本中,Java 又引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長參數和自動裝/拆箱等語言特性。

Java類和方法的定義

類的定義:

public class Test {//類的訪問修飾符可以是public,默認(就是沒有),

//abstract,final,class是定義類的關鍵字

方法的定義:

//方法的定義:

/**

* [訪問修飾符] [static] [是否有返回值類型] 方法名(參數列表){

*        [方法執行體]

*        [return返回值]

* }

*/

public void getName(){

}

//靜態方法

public static void main(String[] args) {

}

}

java類方法?

emm…問題…不少。

1、這個構造函數問題就很大:

你傳遞一個r數組進來,然後你又讓this.v1=v1,this.v2=v2,那麼這個r的意義到底是什麼?你構造出來的這個向量的v1和v2也還是根本沒有任何值。

2、這。。這塊問題太多了,我都不知道該怎麼說,就全都不應該這麼玩,下面加法也是一樣的我就不圈出來了。

首先,非常不建議用null來聲明任何變量,你聲明r[]數組為null,下面又在循環里使用r[i],r都不是一個東西(因為它是null,還真不是個東西 手動滑稽),r[i]必然導致萬惡的空指針異常NullPointerException。然後前面第一點說了,你的v1和v2根本就沒有值,其實他們也是null,所以v1.length也將產生空指針異常,你的for循環根本沒法進行。好,就算假設你的v1和v2都聲明為new double[0]了,他們不再是null了,那麼你的這個方法最終有可能返回null,又來了又來了,不要隨便使用null,一不小心可能導致你main方法中調用這個方法後再次造成空指針異常。所以你非要這樣寫的話也建議寫成return new double[0];這樣即使它是一個空的數組但最起碼它已經是個對象了,不再是null了。

3、main方法中null又雙叒來了:

null數組不能放任何東西進去,不然將導致空指針異常。

所以現在怎麼辦?我估計你也發現了,因為你不知道這個數組究竟有多少個數字所以無法準確地定義這個r的長度。

本來我認為最優的做法是利用java的幾種數據結構來保存輸入項就好了,但是我怕你還沒學到,其中這幾個數據結構都不需要指定長度就能保存數據,他們能保存的最大數據量為int的最大值:java.util.List(java的集合,特別好用)、java.util.Vector(沒錯,java本來就有向量這種數據結構,比你這個MyVector功能要多一些)、java.util.Stack(棧其實是繼承了向量,是一種特殊的向量)、java.util.Queue(java的隊列),常用的就這些。

另外一種方法就是指定r[]數組有一個較大的length,也就是一開始就聲明的足夠大,比如直接double[] r = new double[999]但是這種是非常不好的辦法,一個是如果你最終只存儲兩三個數字,那麼數組空間就浪費太多了,另外是如果超過了999個數字,又會導致數組溢出。

所有我下面採用了第三種直截了當的方法幫你改進為,一開始你要輸入向量的長度,你要說明向量到底有多長,這樣不就能準確地定義r[]數組了嗎?look:

這樣就穩得一批了。

4、再看你main方法的最後:

你這種設計方法根本沒有體現出兩個向量之間的運算關係啊,根本就是只有一個向量在這裡。因此,你的運算函數應該修改為傳入一個新的向量,也就是這樣:

這樣的話,main函數里就可以這樣了:

看到沒,是不是一眼就能看出是向量1和向量2相加、點積?

5、審題!審題!你的toString()方法吶?結果保留兩位小數吶?see:

另外題目里還說要定義一個int n的成員變量表示維度。我沒太明白這個維度是啥?這不就是一維向量嗎?維度不就是1嗎?

綜上所述,代碼被我整體修改為:

public class MyVector {

private double[] array;

private int n = 1;

public MyVector(double[] array) {

this.array = array;

}

public double[] getArray() {

return this.array;

}

public double[] MyVectorDott(MyVector myVector2) {

double[] array2 = myVector2.getArray();

double[] result = new double[this.array.length];

for (int i = 0; i this.array.length; i++) {

result[i] = this.array[i] * array2[i];

}

return result;

}

public double[] MyVectorAdd(MyVector myVector2) {

double[] array2 = myVector2.getArray();

double[] result = new double[this.array.length];

for (int i = 0; i this.array.length; i++) {

result[i] = this.array[i] + array2[i];

}

return result;

}

public String toString() {

String s = “(“;

for (int i = 0; i this.array.length; i++) {

if (i this.array.length – 1) {

s += String.format(“%.2f”, this.array[i]) + “,”;

} else {

s += String.format(“%.2f”, this.array[i]);

}

}

return s + “)”;

}

public static void main(String[] args) {

System.out.print(“請輸入向量長度:”);

Scanner input = new Scanner(System.in);

int length = input.nextInt();

double[] array1 = new double[length];

double[] array2 = new double[length];

System.out.print(“請輸入第一組向量值:”);

input = new Scanner(System.in);

for (int i = 0; i length; i++) {

array1[i] = input.nextDouble();

}

System.out.print(“請輸入第二組向量值:”);

input = new Scanner(System.in);

for (int i = 0; i length; i++) {

array2[i] = input.nextDouble();

}

input.close();

MyVector myVector1 = new MyVector(array1);

System.out.println(“向量1為:”);

System.out.println(myVector1.toString());

System.out.println(“向量2為:”);

MyVector myVector2 = new MyVector(array2);

System.out.println(myVector2.toString());

MyVector myVector3 = new MyVector(myVector1.MyVectorAdd(myVector2));

System.out.println(“向量1與向量2求和為:”);

System.out.println(myVector3.toString());

System.out.println(“向量1與向量2點積為:”);

MyVector myVector4 = new MyVector(myVector1.MyVectorDott(myVector2));

System.out.println(myVector4.toString());

}

}

運行結果:

代碼老是會擠在一起,你自己整理一下

原創文章,作者:BJKZ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/140724.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BJKZ的頭像BJKZ
上一篇 2024-10-04 00:24
下一篇 2024-10-04 00:24

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29

發表回復

登錄後才能評論