接口文檔,代碼層次(比如公共方法寫(xiě)在哪個(gè)class里),哪些為一大類(lèi)在一個(gè)包下,數(shù)據(jù)字典,就是介紹你這個(gè)項(xiàng)目的架構(gòu)讓后來(lái)的人怎么能容易參與開(kāi)發(fā),交接什么看這個(gè)就可以方便些,輔助作用的一個(gè)文檔一般都是項(xiàng)目經(jīng)理寫(xiě)
創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比萬(wàn)榮網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式萬(wàn)榮網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋萬(wàn)榮地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴(lài)。
package com.test01;
import java.util.Scanner;
public class oop5 { public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// int x = 9;
// int y = 1;
int x = sc.nextInt();
int y = sc.nextInt();
int z;
z = add(x, y);
System.out.println("x的值為:" + x);
System.out.println("y的值為:" + y);
System.out.println("二者之和為:" + z);
}
/** 四種小算法 */
// 加法運(yùn)算
public static int add(int a, int b) {
int c;
c = a + b;
return c;
}
// 減法運(yùn)算
public static int jian(int d, int v) {
int m;
m = d - v;
return m;
}
// 乘積運(yùn)算
public static int addAdd(int q, int w) {
int e;
e = q * w;
return e;
}
// 除法運(yùn)算
public static int chu(int p, int k) {
int f;
f = p / k;
return f;
}
}
對(duì)JAVA程序員而言,換一份工作或進(jìn)入一個(gè)新的公司,往往意味著要熟悉一個(gè)新的開(kāi)發(fā)環(huán)境,要快速了解新的項(xiàng)目。
如何快速地熟悉項(xiàng)目代碼,是每個(gè)程序員都會(huì)遇到的問(wèn)題,特別是對(duì)剛進(jìn)入職場(chǎng)的應(yīng)屆畢業(yè)生,這個(gè)問(wèn)題更顯得棘手。
下面是我自己在經(jīng)歷幾個(gè)工作之后結(jié)束的一些方法,福建IT培訓(xùn)與大家分享一下,僅貢參考!1.通讀需求文檔,了解項(xiàng)目用途;一個(gè)企業(yè)級(jí)的項(xiàng)目,一定會(huì)保留一些相關(guān)文檔吧!比如需求文檔,設(shè)計(jì)文檔,項(xiàng)目計(jì)劃等,先通讀這些文檔,了解項(xiàng)目的用途、主要功能等。
2.熟悉開(kāi)發(fā)工具、常用功能;每個(gè)公司用的開(kāi)發(fā)環(huán)境都會(huì)有些不同,要熟悉新的開(kāi)發(fā)環(huán)境,了解常用的功能、快捷鍵等,特別是前后使用習(xí)慣相差比較大的開(kāi)發(fā)環(huán)境,如從MyEclipse到IntelliJIDEA。
Java的開(kāi)發(fā)環(huán)境用的比較多的有MyEclipse(Eclipse)、IntellijIDEA.C++就比較多了,從VC6到VS2008、VS2010、VS2012、VS2013都有人用,還有一些用開(kāi)源的開(kāi)發(fā)工具如Qt。
3.部署環(huán)境,把項(xiàng)目跑起來(lái);了解開(kāi)發(fā)環(huán)境后,就把相關(guān)的配置部署好,把項(xiàng)目跑起來(lái)。
好處是:1.可以進(jìn)一步實(shí)踐新的開(kāi)發(fā)環(huán)境;2.把項(xiàng)目跑起來(lái)后可以快速地了解項(xiàng)目的用途和功能。
4.整體瀏覽代碼,了解代碼結(jié)構(gòu);整體瀏覽一下代碼,對(duì)項(xiàng)目的代碼有個(gè)整體結(jié)構(gòu)的把握。
最好能把類(lèi)圖畫(huà)出來(lái),可以用一些UML工具(如EA、PowerDesign)的逆向工程把源碼導(dǎo)出類(lèi)圖。
5.抽取其中的一部分進(jìn)行細(xì)讀;對(duì)一個(gè)企業(yè)級(jí)的項(xiàng)目,特別是一些大型項(xiàng)目或積淀比較深厚的項(xiàng)目,不可一下就把所有代碼都熟悉。
那就選擇其中的一部分,如其中一個(gè)小功能,從界面開(kāi)始,通過(guò)debug模式一步一步地跟下去,以點(diǎn)帶面地去熟悉整個(gè)項(xiàng)目。
6.嘗試修改一些程序bug;修改bug是熟悉項(xiàng)目最好的方法。
根據(jù)出現(xiàn)的bug,通過(guò)debug模式一步步地定位出現(xiàn)問(wèn)題的位置,再分析出現(xiàn)問(wèn)題的原因。
當(dāng)你能夠修改bug,并且已經(jīng)改了好幾個(gè)bug的時(shí)候,就說(shuō)明你對(duì)項(xiàng)目有了一定了解了,基本熟悉這個(gè)項(xiàng)目的結(jié)構(gòu)和邏輯了。
給你個(gè)做好了的Java的源程序的記事本,自己看看就行了的,不怎么難的···
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class MyNotepad implements ActionListener{
private JFrame frame=new JFrame("新記事本");
private JTextArea jta=new JTextArea();
private String result="";
private boolean flag=true;
private File f;
private JButton jb=new JButton("開(kāi)始");
private JTextField jtf=new JTextField(15);
private JTextField jt=new JTextField(15);
private JButton jbt=new JButton("替換為");
private JButton jba=new JButton("全部替換");
private Icon ic=new ImageIcon("D:\\java課堂筆記\\GUI\\11.gif");
private String value;
private int start=0;
private JFrame jf=new JFrame("查找");
private JFrame jfc=new JFrame("替換");
@Override
public void actionPerformed(ActionEvent e) {
String comm=e.getActionCommand();
if("新建".equals(comm)){
if(!(frame.getTitle().equals("新記事本"))){
if(!flag){
write();
newNew();
}else{
JFileChooser jfc=new JFileChooser("D:\\java課堂筆記");
int returnVal = jfc.showDialog(null,"保存為");
if(returnVal == JFileChooser.APPROVE_OPTION) {//選擇文件后再執(zhí)行下面的語(yǔ)句,保證了程序的健壯性
f=jfc.getSelectedFile();
flag=false;
write();
}
}
}else if(!(jta.getText().isEmpty())){
JFileChooser jfc=new JFileChooser("D:\\java課堂筆記");
int returnVal = jfc.showDialog(null,"保存為");
if(returnVal == JFileChooser.APPROVE_OPTION) {//選擇文件后再執(zhí)行下面的語(yǔ)句,保證了程序的健壯性
f=jfc.getSelectedFile();
flag=false;
write();
newNew();
}
}else{
newNew();
}
}else if("打開(kāi)".equals(comm)){
JFileChooser jfc=new JFileChooser("D:\\java課堂筆記");
jfc.setDialogType(JFileChooser.OPEN_DIALOG);
int returnVal = jfc.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {//選擇文件后再執(zhí)行下面的語(yǔ)句,保證了程序的健壯性
f=jfc.getSelectedFile();
frame.setTitle(f.getName());
result=read();
flag=false;
value=result;
jta.setText(result);
}
}else if("保存".equals(comm)){
JFileChooser jfc=new JFileChooser("D:\\java課堂筆記");
if(flag){
int returnVal = jfc.showDialog(null,"保存為");
if(returnVal == JFileChooser.APPROVE_OPTION) {//選擇文件后再執(zhí)行下面的語(yǔ)句,保證了程序的健壯性
f=jfc.getSelectedFile();
flag=false;
write();
}
}else{
write();
}
}else if("另存".equals(comm)){
JFileChooser jfc=new JFileChooser("D:\\java課堂筆記");
int returnVal = jfc.showDialog(null,"另存");
if(returnVal == JFileChooser.APPROVE_OPTION) {//選擇文件后再執(zhí)行下面的語(yǔ)句,保證了程序的健壯性
f=jfc.getSelectedFile();
write();
}
}else if("退出".equals(comm)){
System.exit(0);
}else if("撤銷(xiāo)".equals(comm)){
jta.setText(value);
}else if("剪切".equals(comm)){
value=jta.getText();
jta.cut();
}else if("復(fù)制".equals(comm)){
jta.copy();
}else if("粘貼".equals(comm)){
value=jta.getText();
jta.paste();
}else if("刪除".equals(comm)){
value=jta.getText();
jta.replaceSelection(null);
}else if("全選".equals(comm)){
jta.selectAll();
}else if("查找".equals(comm)){
value=jta.getText();
jf.add(jtf,BorderLayout.CENTER);
jf.add(jb,BorderLayout.SOUTH);
jf.setLocation(300,300);
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}else if("替換".equals(comm)){
value=jta.getText();
GridLayout gl=new GridLayout(3,3);
JLabel jl1=new JLabel("查找內(nèi)容:");
JLabel jl2=new JLabel("替換為:");
jfc.setLayout(gl);
jfc.add(jl1);
jfc.add(jtf);
jfc.add(jb);
jfc.add(jl2);
jfc.add(jt);
jfc.add(jbt);
JLabel jl3=new JLabel();
JLabel jl4=new JLabel();
jfc.add(jl3);
jfc.add(jl4);
jfc.add(jba);
jfc.setLocation(300,300);
jfc.pack();
jfc.setVisible(true);
jfc.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}else if("版本".equals(comm)){
JDialog jd=new JDialog(frame,"關(guān)于對(duì)話(huà)框");
jd.setSize(200,200);
JLabel l=new JLabel("哈哈哈哈哈哈哈哈哈哈呵呵呵呵呵呵呵呵呵呵呵呵呵");
jd.add(l,BorderLayout.CENTER);
jd.setLocation(100,200);
jd.setSize(300,300);
jd.setVisible(true);
// jd.pack();
jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}else if("開(kāi)始".equals(comm)||"下一個(gè)".equals(comm)){
String temp=jtf.getText();
int s=value.indexOf(temp,start);
if(value.indexOf(temp,start)!=-1){
jta.setSelectionStart(s);
jta.setSelectionEnd(s+temp.length());
jta.setSelectedTextColor(Color.GREEN);
start=s+1;
jb.setText("下一個(gè)");
// value=value.substring(s+temp.length());//不能截取字串
}else {
JOptionPane.showMessageDialog(jf, "查找完畢!", "提示", 0, ic);
jf.dispose();
}
}else if("替換為".equals(comm)){
String temp=jtf.getText();
int s=value.indexOf(temp,start);
if(value.indexOf(temp,start)!=-1){
jta.setSelectionStart(s);
jta.setSelectionEnd(s+temp.length());
jta.setSelectedTextColor(Color.GREEN);
start=s+1;
jta.replaceSelection(jt.getText());
}else {
JOptionPane.showMessageDialog(jf, "查找完畢!", "提示", 0, ic);
jf.dispose();
}
}else if("全部替換".equals(comm)){
String temp=jta.getText();
temp=temp.replaceAll(jtf.getText(), jt.getText());
jta.setText(temp);
}
}
public String read(){
String temp="";
try {
FileInputStream fis = new FileInputStream(f.getAbsolutePath());
byte[] b=new byte[1024];
while(true){
int num=fis.read(b);
if(num==-1)break;
temp=temp+new String(b,0,num);
}
fis.close();
} catch (Exception e1) {
e1.printStackTrace();
}
return temp;
}
public void write(){
try {
FileOutputStream fos=new FileOutputStream(f);
fos.write(jta.getText().getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void newNew(){
frame.dispose();
new MyNotepad();
flag=true;
}
public MyNotepad(){
JMenuBar jmb=new JMenuBar();
String[] menuLab={"文件","編輯","幫助"};
String[][] menuItemLab={{"新建","打開(kāi)","保存","另存","退出"},
{"撤銷(xiāo)","剪切","復(fù)制","粘貼","刪除","全選","查找","替換"},
{"版本"}};
for(int i=0;imenuLab.length;i++){
JMenu menu=new JMenu(menuLab[i]);
jmb.add(menu);
for(int j=0;jmenuItemLab[i].length;j++){
JMenuItem jmi=new JMenuItem(menuItemLab[i][j]);
menu.add(jmi);
jmi.addActionListener(this);
}
}
frame.setJMenuBar(jmb);
jta.setLineWrap(true);//自動(dòng)換行
JScrollPane jsp=new JScrollPane(jta);//滾動(dòng)窗口面板
frame.add(jsp);
jb.addActionListener(this);
jbt.addActionListener(this);
jba.addActionListener(this);
frame.setLocation(200,50);
frame.setSize(620,660);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new MyNotepad();
}
}