1. java編程題 本人新手,求詳解。
先看下最終的結果吧,是不是你想要的?
其中,Student是父類,PostGraate是子類,繼承自父類Student,Main是主類,用於創建對象以及把這些對象的功能調用起來。
---------------------------Student代碼如下:------------------------------
/**
* 學生類
* @author 逍遙
*
*/
public class Student {
//學號
private int sId;
//姓名
private String sName;
//數學成績
private double mathScore;
//計算機成績
private double computerScore;
/**
* 獲取學號
* @return
*/
public int getsId() {
return sId;
}
/**
* 設置學號
* @param sId
*/
public void setsId(int sId) {
this.sId = sId;
}
/**
* 獲取姓名
* @return
*/
public String getsName() {
return sName;
}
/**
* 設置姓名
* @param sName
*/
public void setsName(String sName) {
this.sName = sName;
}
/**
* 獲取數學成績
* @return
*/
public double getMathScore() {
return mathScore;
}
/**
* 設置數學成績
* @param mathScore
*/
public void setMathScore(double mathScore) {
this.mathScore = mathScore;
}
/**
* 獲取計算機成績
* @return
*/
public double getComputerScore() {
return computerScore;
}
/**
* 設置計算機成績
* @param computerScore
*/
public void setComputerScore(double computerScore) {
this.computerScore = computerScore;
}
/**
* 輸出成員變數(4個成員變數)的信息。
*/
public void print(){
System.out.println("學號:"+sId);
System.out.println("姓名:"+sName);
System.out.println("計算機成績:"+mathScore);
System.out.println("數學成績:"+computerScore);
}
}
---------------------------Student代碼結束------------------------------
---------------------------PostGraate代碼如下:------------------------------
/**
* 研究生類
* @author 逍遙
*
*/
public class PostGraate extends Student{
//導師姓名
private String tName;
//研究方向
private String ResearchDirection;
/**
* 獲取導師姓名
* @return
*/
public String gettName() {
return tName;
}
/**
* 設置導師姓名
* @param tName
*/
public void settName(String tName) {
this.tName = tName;
}
/**
* 獲取研究方向
* @return
*/
public String getResearchDirection() {
return ResearchDirection;
}
/**
* 設置研究方向
* @param researchDirection
*/
public void setResearchDirection(String researchDirection) {
ResearchDirection = researchDirection;
}
/**
* 研究生類重寫父類的void print()方法,功能是輸出成員變數(6個成員變數)的信息
*/
@Override
public void print() {
// TODO Auto-generated method stub
super.print();
System.out.println("導師姓名:"+tName);
System.out.println("研究方向:"+ResearchDirection);
}
}
---------------------------PostGraate代碼結束------------------------------
---------------------------Main代碼如下:------------------------------
import java.util.Scanner;
/**
* 主類
* @author 逍遙
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//用於獲取從鍵盤上輸入的信息
Scanner input=new Scanner(System.in);
//創建一個Student類的對象
Student student=new Student();
//從鍵盤上輸入其屬性信息
System.out.print("請輸入學生的學號:");
student.setsId(input.nextInt());
System.out.print("請輸入學生的姓名:");
student.setsName(input.next());
System.out.print("請輸入學生的數學成績:");
student.setMathScore(input.nextDouble());
System.out.print("請輸入學生的計算機成績:");
student.setComputerScore(input.nextDouble());
//並且通過其print方法輸出這些信息;
student.print();
//創建一個PostGraate類的對象
PostGraate postGraate=new PostGraate();
//從鍵盤上輸入其屬性信息
System.out.print("請輸入研究生的學號:");
postGraate.setsId(input.nextInt());
System.out.print("請輸入研究生的姓名:");
postGraate.setsName(input.next());
System.out.print("請輸入研究生的數學成績:");
postGraate.setMathScore(input.nextDouble());
System.out.print("請輸入研究生的計算機成績:");
postGraate.setComputerScore(input.nextDouble());
System.out.print("請輸入研究生的導師姓名:");
postGraate.settName(input.next());
System.out.print("請輸入研究生的研究方向:");
postGraate.setResearchDirection(input.next());
//並且通過其print方法輸出這些信息。
postGraate.print();
}
}
---------------------------Main代碼結束------------------------------
=================知識點的簡單總結=================
本題考察的知識點是面向對象的三大特性之一:繼承。
Student為父類,包含了學號、姓名、數學成績和計算機成績4個屬性,以及一個print()方法。
PostGraate 繼承父類的時候,繼承了父類中的所有方法,因為方法我都是用的public,而屬性繼承不了,因為我在父類中用了封裝,所有屬性都用private修飾了,想訪問屬性的話,必須通過get、set方法,這里,我重寫了父類中的print方法,通過super.print();調用了父類中的print()方法。
最後就是Main類,提供了main方法作為入口函數,用於按要求聲明這些對象以及去調用對象中的方法。
2. java編程,最後執行出現這個問題該怎麼解決
你的Circle里的方法名字錯誤了printArea寫成了prinArea少了t
3. java編程內存管理需要注意的問題
大家在進行程序系統維護的時候是否因為java編程的內存管理問題而無法快速解決導致系統出錯呢?下面我們就一起來了解和學習一下,關於java編程內存管理都有哪些知識點。
程序計數器(了解)
程序計數器,可以看做是當前線程所執行的位元組碼的行號指示器。在虛擬機的概念模型里,位元組碼解釋器工作就是通過改變程序計數器的值來選擇下一條需要執行的位元組碼指令,分支、循環、跳轉、異常處理、線程恢復等基礎功能都要依賴這個計數器來完成。
Java虛擬機棧(了解)
Java虛擬機棧也是線程私有的,它的生命周期與線程相同。虛擬機棧描述的是Java方法執行的內存模型:每個方法在執行的同時都會創建一個棧幀用於存儲局部變數表、操作數棧、動態鏈表、方法出口信息等。每一個方法從調用直至執行完成的過程,就對應著一個棧幀在虛擬機棧中入棧到出棧的過程。
局部變數表中存放了編譯器可知的各種基本數據類型(boolean、byte、char、short、int、float、long、double)、對象引用和returnAddress類型(指向了一條位元組碼指令的地址)。
如果擴展時無法申請到足夠的內存,就會拋出OutOfMemoryError異常。
本地方法棧(了解)
本地方法棧與虛擬機的作用相似,不同之處在於虛擬機棧為虛擬機執行的Java方法服務,而本地方法棧則為虛擬機使用到的Native方法服務。有的虛擬機直接把本地方法棧和虛擬機棧合二為一。
會拋出stackOverflowError和OutOfMemoryError異常。
Java堆
堆內存用來存放由new創建的對象實例和數組。(重點)
Java堆是所有線程共享的一塊內存區域,在虛擬機啟動時創建,此內存區域的目的就是存放對象實例。
Java堆是垃圾收集器管理的主要區域。java課程培訓機構http://www.kmbdqn.com/發現由於現在收集器基本採用分代回收演算法,所以Java堆還可細分為:新生代和老年代。從內存分配的角度來看,線程共享的Java堆中可能劃分出多個線程私有的分配緩沖區(TLAB)。
4. java編程題目,求求大佬救救我
這個題考察的是面向對象三大特性之一的繼承。
子類繼承父類。
項目結構如何所示:
我是馮修遠,如果我的答案對您有幫助的話,請採納以幫助更多的人,如果還有其它的問題,也請關注我,私信我,謝謝!
5. JAVA程序編程問題
javac 後面的類名錯誤
應該是
javac MyFirstJavaProgram.java
對於類名較長的Java源文件
在編譯時可以在命令提示符下通過Tab鍵來自動補齊
比如在你需要編譯MyFirstJavaProgram.java這個源文件時
在命令提示符下輸入javac My
然後按一下Tab鍵即可自動補齊
在同一目錄下存在多個My開頭的文件時
多次按下Tab鍵即可自動補齊不同的文件名
大體就是這樣的了 可以多嘗試嘗試
6. 關於java編程的問題,希望大家幫忙解決
這就是classpath和path的問題!
一 jdk的安裝
jdk的安裝只需要根據提示安裝就可以了。中途你可以選擇自己喜歡的安裝路徑。安裝之後,會有一個jdk1.5.0_05和一個jre1.5.0_05(假如是1.5的版本的話)文件夾。
然後開始設置環境變數。右鍵我的電腦--屬性--高級--環境變數。在這里你可以選在在系統變數中添加,這樣這台機器上的所有用戶都可以使用這個環境變數。
添加CLASSPATH: .;D:\Program Files\Java\jdk1.5.0_05\lib\tools.jar;D:\Program Files\Java\jdk1.5.0_05\lib\dt.jar 注意,在最前面有一個「.」,不要忘記了。這裡面的路徑要換成你自己的安裝路徑。
添加JAVA_HOME: D:\Program Files\Java\jdk1.5.0_05 同樣換成你自己的路徑
7. 如何防止java編程語言序列化網路攻擊
java編程一直以來都是互聯網軟體開發市場上的主流開發語言,同樣的這也就導致了只要發生漏洞的話,所有用java編程開發的軟體都會出現問題,下面雲南java培訓http://www.kmbdqn.com/就一起來了解一下,java編程語言中的序列化問題應該如何解決。
什麼是序列化?
自從1997年發布JDK 1.1以來,序列化已經存在於Java平台中。
它用於在套接字之間共享對象表示,或者將對象及其狀態保存起來以供將來使用(反序列化)。
在JDK 10及更低版本中,序列化作為java.base包和java.io.Serializable方法的一部分存在於所有的系統中。
序列化的挑戰和局限
序列化的局限主要表現在以下兩個方面:
出現了新的對象傳輸策略,例如JSON、XML、Apache Avro、Protocol Buffers等。
1997年的序列化策略無法預見現代互聯網服務的構建和攻擊方式。
進行序列化漏洞攻擊的基本前提是找到對反序列化的數據執行特權操作的類,然後傳給它們惡意的代碼。
序列化在哪裡?如何知道我的應用程序是否用到了序列化?
要移除序列化,需要從java.io包開始,這個包是java.base模塊的一部分。常見的使用場景是:
實現Serializable介面和(可選)serialversionuid長整型欄位。
使用ObjectInputStream或ObjectOutputStream。
使用嚴重依賴序列化的庫,例如:Xstream、Kryo、BlazeDS和大多數應用程序伺服器。
使用這些方法的開發人員應考慮使用其他存儲和讀回數據的替代方法。Eishay Smith發布了幾個不同序列化庫的性能指標。在評估性能時,需要在基準度量指標中包含安全方面的考慮。默認的Java序列化「更快」一些,但漏洞也會以同樣的速度找上門來。
我們該如何降低序列化缺陷的影響?
項目Amber包含了一個關於將序列化API隔離出來的討論。我們的想法是將序列化從java.base移動到單獨的模塊,這樣應用程序就可以完全移除它。在確定JDK 11功能集時並沒有針對該提議得出任何結果,但可能會在未來的Java版本中繼續進行討論。
通過運行時保護來減少序列化暴露
一個可以監控風險並自動化可重復安全專業知識的系統對於很多企業來說都是很有用的。Java應用程序可以將JVMTI工具嵌入到安全監控系統中,通過插樁的方式將感測器植入到應用程序中。
其他有用的安全技術
在進行維護時,可以不需要手動列出一長串東西,而是使用像OWASP Dependency-Check這樣的系統,它可以識別出已知安全漏洞的依賴關系,並提示進行升級。也可以考慮通過像DependABot這樣的系統進行庫的自動更新。
雖然用意很好,但默認的Oracle序列化過濾器存在與SecurityManager和相關沙箱漏洞相同的設計缺陷。因為需要混淆角色許可權並要求提前了解不可知的事物,限制了這個功能的大規模採用:系統管理員不知道代碼的內容,所以無法列出類文件,而開發人員不了解環境,甚至DevOps團隊通常也不知道系統其他部分(如應用程序伺服器)的需求。