導航:首頁 > 源碼編譯 > java框架的源碼

java框架的源碼

發布時間:2023-12-10 15:07:41

⑴ 如何查看javaJDK中底層源碼

在初次使用java時,往往我們對最基本的java類會忽略對其內部基本的實現的了解,也往往不屑於了解其內部實現機制,以為它們本來就是這樣子。而其實貫穿java的整個過程,所有上層的使用,都是源於對底層的擴展,所以要真正去了解這門語言,就必須得從其底層開始認真去了解它。而要深入了解,就需要更多去關注其內部的實現是怎樣子的。

在使用IDE的過程中,我們經常會需要能在IDE中就可以便捷的去查看java的源碼,但若沒有做相關設置,一般在IDE是查看不了java源碼的,此次提供在eclipse中設置查看java源碼的方式。

設置步驟如下:


1.點 「window」-> "Preferences" -> "Java" -> "Installed JRES"


2.此時"Installed JRES"右邊是列表窗格,列出了系統中的 JRE 環境,選擇你的JRE,然後點邊上的 "Edit...", 會出現一個窗口(Edit JRE)


3.選中rt.jar文件的這一項:「c:program filesjavajre_1.8lib t.jar」
點 左邊的「+」 號展開它,


4.展開後,可以看到「Source Attachment:(none)」,點這一項,點右邊的按鈕「Source Attachment...」, 選擇你的JDK目錄下的 「src.zip」文件(該文件在JDK安裝目錄的根目錄下)


5.一路點"ok",設置完成


設置完成後,按住ctrl鍵再用滑鼠單擊某一個jdk方法名或類名,便能看到該方法的源代碼了。此外按F3也能實現。

PS:rt.jar包含了jdk的基礎類庫,也就是你在java

doc裡面看到的所有的類的class文件;src.zip文件裡面放著的正是基本類所對應的源文件(即*.java格式的文件);同理,我們可以去網上下載各個JAVA開源框架所對應的源代碼包,比如spring-src.zip,然後再按照上面的設置步驟設置,就可以查看到對應的JAVA框架源代碼了。

轉自:網頁鏈接

⑵ Java源代碼

packagecom.;

importjava.util.ArrayList;
importjava.util.List;
importjava.util.Scanner;

importstaticjava.lang.System.out;
importstaticjava.lang.System.in;
/**
*Createdbytracyon2017/10/11.
*/
publicclassLR{

staticint[]numbers;
staticList<Domain>domains=newArrayList<>();

publicstaticvoidmain(String...asd){
intm,n;
out.print("請輸入數字個數N:");
n=input(1,Integer.MAX_VALUE);
out.print("請輸入計算行數M:");
m=input(1,10000);
out.println("請輸入"+n+"個數字,每個數字介於1跟1000000之間,用空格隔開:");
numbers=inputNumbers(n);
for(inti=0;i<m;i++){
domains.add(inputDomain(n,i+1));
}
for(Domaindomain:domains){
domain.output();
}
}

/**
*輸入一個介於min跟max之間的整數
*@parammin
*@parammax
*@return
*/
privatestaticintinput(intmin,intmax){
Scannerscanner=newScanner(in);
try{
inti=scanner.nextInt();
if(i<min||i>max){
out.print("輸入數字大小不符合要求,請重新輸入」");
returninput(min,max);
}
returni;
}catch(Exceptione){
out.print("您輸入的不是數字,請重新輸入「");
returninput(min,max);
}
}

/**
*輸入N個介於1到1000000之間的整數
*@paramn
*@return
*/
privatestaticint[]inputNumbers(intn){
Scannerscanner=newScanner(in);
StringnumStr=scanner.nextLine();
String[]nums=numStr.trim().split("\s+");
if(nums.length!=n){
out.println("輸入數字個數不對,請重新輸入:");
returninputNumbers(n);
}
int[]numbers=newint[n];
for(inti=0;i<n;i++){
try{
intnumber=Integer.valueOf(nums[i]);
if(number<1||number>10000){
out.print("輸入數字大小不符合要求,請重新輸入」");
numbers[i]=input(1,1000000);
}else{
numbers[i]=number;
}
}catch(NumberFormatExceptione){
out.print(String.format("您輸入的%s不是數字,請重新輸入:",nums[i]));
numbers[i]=input(1,1000000);
}
}
returnnumbers;
}

(intn,intindex){
out.println("請輸入第"+index+"行的2個數字L,R(1<=L<=R<=%d)用空格隔開:");
Scannerscanner=newScanner(in);
StringnumStr=scanner.nextLine();
String[]nums=numStr.trim().split("\s+");
if(nums.length!=2){
out.print(String.format("輸入數字個數不對,請重新輸入!",n));
returninputDomain(n,index);
}
Stringls=nums[0];
Stringrs=nums[1];
try{
intl=Integer.valueOf(ls);
intr=Integer.valueOf(rs);
if(l<1||r<l||r>n){
out.print(String.format("輸入數字大小不符合,請重新輸入!",n));
returninputDomain(n,index);
}
returnnewDomain(l,r,index);
}catch(NumberFormatExceptione){
out.println(String.format("輸入數字格式錯誤,請重新輸入2個數字L,R(1<=L<=R<=%d)用空格隔開:",n));
returninputDomain(n,index);
}
}

privatestaticclassDomain{
intl;
intr;
intindex;

Domain(intl,intr,intindex){
this.l=l;
this.r=r;
this.index=index;
}

voidoutput(){
intresult=0;
for(inti=l-1;i<r;i++){
result+=numbers[i];
}
out.println(String.format("第%d行:第%d到第%d個數之和為:%d",index,l,r,result));
}
}
}

⑶ 求JAVA源代碼,要有注釋,所有財富都在下面了

每天有時間的話 , 會回答一兩個圖形界面的問題, 但是分數最好還是高點才有興趣.

具體代碼和詳細的注釋如下

員工類

publicclassEmp{
privateintnum;//工號
privateStringname;//姓名
privatedoublebasicPay;//基本工資
privatedoublemeritPay;//績效工資

publicEmp(){//無參數構造器

}
publicEmp(intnum,Stringname,doublebasicPay,doublemeritPay){//有參數構造器
super();
this.num=num;
this.name=name;
this.basicPay=basicPay;
this.meritPay=meritPay;
}
//重寫Object的toString方法
publicStringtoString(){
return"工號:"+num+" 姓名:"+name+" 基本工資:"+basicPay+" 績效工資"+meritPay;
}

//下面是屬性的set和get
publicintgetNum(){
returnnum;
}
publicvoidsetNum(intnum){
this.num=num;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicdoublegetBasicPay(){
returnbasicPay;
}
publicvoidsetBasicPay(doublebasicPay){
this.basicPay=basicPay;
}
publicdoublegetMeritPay(){
returnmeritPay;
}
publicvoidsetMeritPay(doublemeritPay){
this.meritPay=meritPay;
}


}

輸入界面類

importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;

{
JTextFieldjtfnum,jtfname,jtfbp,jtfmp;
JButtonjbwtf;

publicEmpFrome(){
JLabeljl1=newJLabel("工號");
jtfnum=newJTextField(8);
add(jl1);
add(jtfnum);

JLabeljl2=newJLabel("姓名");
jtfname=newJTextField(8);
add(jl2);
add(jtfname);

JLabeljl3=newJLabel("基本工資");
jtfbp=newJTextField(8);
add(jl3);
add(jtfbp);

JLabeljl4=newJLabel("績效工資");
jtfmp=newJTextField(8);
add(jl4);
add(jtfmp);

JLabeljl5=newJLabel();
jbwtf=newJButton("寫入文件");
jbwtf.addActionListener(this);
add(jl5);
add(jbwtf);

setLayout(newGridLayout(5,2));
setTitle("員工信息錄入");
setSize(290,230);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}

publicvoidactionPerformed(ActionEvente){
Stringcmd=e.getActionCommand();
if(cmd.equals("寫入文件")){
try{
//獲取數據
intnum=Integer.parseInt(jtfnum.getText().trim());
Stringname=jtfname.getText().trim();
doublebp=Double.parseDouble(jtfbp.getText().trim());
doublemp=Double.parseDouble(jtfmp.getText().trim());
Empemp=newEmp(num,name,bp,mp);
writeToFile(emp);
JOptionPane.showMessageDialog(this,"錄入成功");//提示成功
//清空文本框
jtfnum.setText("");
jtfname.setText("");
jtfbp.setText("");
jtfmp.setText("");
}catch(Exceptionex){
//當輸入不符合規范時,提示錯誤
JOptionPane.showMessageDialog(this,"請輸入正確的數據: 工號整型,工資浮點型","錄入錯誤",JOptionPane.ERROR_MESSAGE);
}

}
}
//定義的文件路徑
finalstaticStringFILE_PATH="employee.dat";

publicvoidwriteToFile(Empemp){//IO操作,追加寫入
BufferedWriterbw=null;
try{
bw=newBufferedWriter(newFileWriter(newFile(FILE_PATH),true));//為true表示追加
bw.write(emp.toString());//寫入員工信息
bw.newLine();//換行
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(bw!=null){
try{
bw.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}

}
}

測試類

publicclassEmpTest{
publicstaticvoidmain(String[]args){
newEmpFrome();
}
}

測試效果

⑷ 如何在Eclipse中查看JDK以及Java框架的源碼

在Eclipse中查看JDK類庫的源代碼
設置:
1.點 「window」-> "Preferences" -> "Java" -> "Installed JRES"
2.此時"Installed JRES"右邊是列表窗格,列出了系統中的 JRE 環境,選擇你的JRE,然後點邊上的 "Edit...", 會出現一個窗口(Edit JRE)
3.選中rt.jar文件的這一項:「c:\program files\java\jre_1.5.0_06\lib\rt.jar」 點 左邊的「+」 號展開它
4.展開後,可以看到「Source Attachment:(none)」,點這一項,點右邊的按鈕「Source Attachment...」, 選擇你的JDK目錄下的 「src.zip」文件
5.一路點"ok",結束。
dt.jar是關於運行環境的類庫,主要是swing的包 tools.jar是關於一些工具的類庫 rt.jar包含了jdk的基礎類庫,也就是你在java doc裡面看到的所有的類的class文件

⑸ Java哪些開源框架的源代碼值得一讀

Spring
spring做為現在最流行java web框架,可以作為任何一個項目的基礎框架,值得仔細研究學習

⑹ 怎樣用JAVA寫出逆波蘭表達式求值部分的源代碼(提供代碼框架)

下面的代碼是用來計算表達式的,看看是不是你要的
public class OPNode {
char op;// 運算符號
int level;// 優先順序
//設置優先順序
public OPNode(String op) {
this.op = op.charAt(0);
if (op.equals("+") || op.equals("-")) {
this.level = 1;
} else if (op.equals("*") || op.equals("/")) {
this.level = 2;
} else if (op.equals("(")) {
this.level = -3;

} else {
this.level = -1;
}
}
}
//主類
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class OPText {
public static void main(String[] args) {
String expression = "2+2+(8-2)/3";// 要計算的表達式
List list = new LinkedList();
//正則式
Pattern entryOfExpression = Pattern
.compile("[0-9]+(\\.[0-9]+)?|\\(|\\)|\\+|-|\\*|/");
Deque stack = new LinkedList();//棧
Matcher m = entryOfExpression.matcher(expression);
while (m.find()) {
//提取語素
String nodeString = expression.substring(m.start(), m.end());
if (nodeString.matches("[0-9].*")) {
list.add(Double.valueOf(nodeString));//如果是數字直接送入列表
} else {
OPNode opn = new OPNode(nodeString);//如果是運算符
int peekLevel = (stack.peek() == null) ? 0 : ((OPNode) stack
.peek()).level;
if (opn.level >=peekLevel) {
stack.push(opn);//新的運算符比舊的優先順序別高則入棧
} else {
if (opn.level == -1) {
OPNode temp = (OPNode) stack.pop();
while (temp.level != -3) {//如果為"("則一直出棧一直到")"
list.add(temp);
System.out.println(nodeString);
temp = (OPNode) stack.pop();
}
} else if (opn.level == -3) {
stack.push(opn);
} else {//如果新運算符比棧頂運算符底則一直出棧
OPNode temp = (OPNode) stack.pop();
while (temp.level > opn.level) {
list.add(temp);
if (stack.isEmpty()) {
break;
}
temp = (OPNode) stack.pop();
}
stack.push(opn);
}
}
}

}
OPNode temp = null;
while (!stack.isEmpty()) {
temp = (OPNode) stack.pop();
list.add(temp);
}//後續表達式計算
stack.clear();
for (Object o : list) {
if (o instanceof Double) {
stack.push(o);//為數字入棧
} else {
double op2 = ((Double) stack.pop()).doubleValue();
double op1 = ((Double) stack.pop()).doubleValue();
switch (((OPNode) o).op) {
case '+':
stack.push(op1 + op2);
break;
case '-':
stack.push(op1 - op2);
break;

case '*':
stack.push(op1 * op2);
break;

case '/':
stack.push(op1 / op2);
break;
}

}
}
System.out.println("結果為:" + stack.pop());
}

}
呃,太晚了,沒心思去改了
明天再說

閱讀全文

與java框架的源碼相關的資料

熱點內容
演算法學不會能當程序員嗎 瀏覽:115
程序員技術交流研究 瀏覽:812
javaresponse文件 瀏覽:732
linuxrar壓縮文件夾 瀏覽:216
魅藍手機連接不上伺服器怎麼回事 瀏覽:377
工行app怎麼改已綁定銀行卡 瀏覽:531
oppo晶元程序員 瀏覽:600
oppok3應用怎麼加密 瀏覽:325
電腦軟盤怎麼加密碼 瀏覽:813
伺服器光交換機有什麼用 瀏覽:706
app上怎麼拍蛙小俠 瀏覽:215
志高聊天app怎麼下載 瀏覽:633
郵政app怎麼不能掃付款碼 瀏覽:557
筆記本電腦雙理由配置命令 瀏覽:63
拿著文件夾怎麼畫 瀏覽:875
博瑞發動機壓縮比 瀏覽:730
linux開源郵件伺服器 瀏覽:777
ios打地鼠源碼 瀏覽:472
伺服器換主機需要什麼系統 瀏覽:749
linux監控jvm內存 瀏覽:79