作為一個(gè)Java開發(fā)攻城獅(lao si ji),我可以負(fù)責(zé)任地告訴你,多看多寫~
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、魚峰網(wǎng)站維護(hù)、網(wǎng)站推廣。
首先,鑒于題主你說你是剛接觸地階段,我并不推薦你你上來就要寫工業(yè)級(jí)或者企業(yè)級(jí)的代碼,當(dāng)下的話應(yīng)該是迅速積累項(xiàng)目經(jīng)驗(yàn),快速掌握java web的開發(fā)流程為主,可以網(wǎng)上看看什么視頻教程,有些還是能學(xué)到規(guī)范的。
分享一下我的經(jīng)歷吧~
讀大學(xué)的時(shí)候我接一些外包【朋友介紹】,一開始也很虛啊,覺得這里不對(duì),那里不對(duì)的。寫得多了,慢慢理解整個(gè)開發(fā)流程后,就覺得也就是增刪改查嘛,沒什么的。每次都要寫,好麻煩啊,既然這樣,不如自己造一些輪子,后來就是項(xiàng)目多了,又造了一些輪子,然后做了系列的封裝。期間穿插讀了 重構(gòu)和effective java兩本書,代碼方法保持整潔,但一些代碼上還是不規(guī)范。
再后來,學(xué)習(xí)了java的一些高級(jí)特性,反射、自省【提高了寫代碼250%的效率】以及參考了部分阿里的規(guī)范,感覺逐漸能寫出比以前看上去優(yōu)雅的代碼了。
接下來的一段時(shí)間,因?yàn)榕d趣的原因,研究了一下三大框架,自己強(qiáng)行擼了三個(gè)閹割版?;厝タ丛创a的時(shí)候,發(fā)現(xiàn)spring寫得真的太優(yōu)雅了,然后又小小改了一下風(fēng)格。
最后,出來工作了,哦謝特~ 大家寫得什么鬼啊~ 什么規(guī)范都不參照~ 簡(jiǎn)直內(nèi)心爆炸,一萬點(diǎn)傷害~ 好吧,我還是照著我原先的思路,搞一搞~
所以說,工業(yè)級(jí)、企業(yè)級(jí)代碼不是每個(gè)公司都有,但是對(duì)自身有要求是好事啊~ 你也別急,慢慢寫,也能逐漸規(guī)范起來~ 只是現(xiàn)在,不合適~ 加油~
還有問題的話,歡迎聯(lián)系我~
給你一個(gè)前幾天才幫人寫的
“計(jì)算整錢兌零”。程序要求用戶輸入一個(gè)雙精度數(shù)代表總元數(shù),就會(huì)列出總值與其等價(jià)的1元幣、二角五分幣、5分幣和1分幣的數(shù)目。程序報(bào)告的數(shù)目是1元幣的最大數(shù)、其次是二角五分幣的最大數(shù),等等,依此類推。只顯示非零的單位。對(duì)單個(gè)單位顯示單數(shù)單詞,對(duì)多于一個(gè)單位的顯示復(fù)數(shù)單詞
import java.util.Scanner;
public class MoneyCalculate {
public static void main(String[] args) {
int max100 = 0;
int max25 = 0;
int max5 = 0;
int max1 = 0;
double money = getMoneyFromInput();
String str = String.valueOf(money).trim();
String[] ary = str.split("\\.");
max100 = Integer.parseInt(ary[0]);
if(ary.length == 2){
int fen = Integer.parseInt(ary[1]);
if(ary[1].trim().length() == 1){
fen = Integer.parseInt(ary[1]) * 10;
}
max25 = fen / 25;
if(fen % 25 != 0){
fen = fen % 25;
}else{
fen = 0;
}
max5 = fen / 5;
max1 = fen % 5;
}
StringBuilder sb = new StringBuilder(money + " = ");
if(max100 != 0){
sb.append(max100);
sb.append("*1 ");
}
if(max25 != 0){
sb.append(max25);
sb.append("*0.25 ");
}
if(max5 != 0){
sb.append(max5);
sb.append("*0.05 ");
}
if(max1 != 0){
sb.append(max1);
sb.append("*0.01 ");
}
System.out.println(sb.toString());
}
private static double getMoneyFromInput() {
Scanner scanner = new Scanner(System.in);
return scanner.nextDouble();
}
}
-----------
2.49
2.49 = 2*1 1*0.25 4*0.05 4*0.01
-----------
2.5
2.5 = 2*1 2*0.25
-----------
37.23
37.23 = 37*1 4*0.05 3*0.01
-----------------
123.569
123.569 = 123*1 22*0.25 3*0.05 4*0.01
我有計(jì)算器程序
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap;
/**
* 我的計(jì)算器。MyCalculator 繼承于 JFrame,是計(jì)算器的界面
*/
public class Calculator extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);
private JTextField textbox = new JTextField("0");
private CalculatorCore core = new CalculatorCore();
private ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
String label = b.getText();
String result = core.process(label);
textbox.setText(result);
}
};
public Calculator(String title) throws HeadlessException {
super(title); // 調(diào)用父類構(gòu)造方法
setupFrame(); // 調(diào)整窗體屬性
setupControls(); // 創(chuàng)建控件
}
private void setupControls() {
setupDisplayPanel(); // 創(chuàng)建文本面板
setupButtonsPanel(); // 創(chuàng)建按鈕面板
}
// 創(chuàng)建按鈕面板并添加按鈕
private void setupButtonsPanel() {
JPanel panel = new JPanel();
panel.setBorder(border);
panel.setLayout(new GridLayout(4, 5, 3, 3));
createButtons(panel, new String[]{
"7", "8", "9", "+", "C",
"4", "5", "6", "-", "CE",
"1", "2", "3", "*", "", // 空字符串表示這個(gè)位置沒有按鈕
"0", ".", "=", "/", ""
});
this.add(panel, BorderLayout.CENTER);
}
/**
* 在指定的面板上創(chuàng)建按鈕
*
* @param panel 要?jiǎng)?chuàng)建按鈕的面板
* @param labels 按鈕文字
*/
private void createButtons(JPanel panel, String[] labels) {
for (String label : labels) {
// 如果 label 為空,則表示創(chuàng)建一個(gè)空面板。否則創(chuàng)建一個(gè)按鈕。
if (label.equals("")) {
panel.add(new JPanel());
} else {
JButton b = new JButton(label);
b.addActionListener(listener); // 為按鈕添加偵聽器
panel.add(b);
}
}
}
// 設(shè)置顯示面板,用一個(gè)文本框來作為計(jì)算器的顯示部分。
private void setupDisplayPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBorder(border);
setupTextbox();
panel.add(textbox, BorderLayout.CENTER);
this.add(panel, BorderLayout.NORTH);
}
// 調(diào)整文本框
private void setupTextbox() {
textbox.setHorizontalAlignment(JTextField.RIGHT); // 文本右對(duì)齊
textbox.setEditable(false); // 文本框只讀
textbox.setBackground(Color.white); // 文本框背景色為白色
}
// 調(diào)整窗體
private void setupFrame() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 當(dāng)窗體關(guān)閉時(shí)程序結(jié)束
this.setLocation(100, 50); // 設(shè)置窗體顯示在桌面上的位置
this.setSize(300, 200); // 設(shè)置窗體大小
this.setResizable(false); // 窗體大小固定
}
// 程序入口
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Calculator frame = new Calculator("我的計(jì)算器");
frame.setVisible(true); // 在桌面上顯示窗體
}
}
/**
* 計(jì)算器核心邏輯。這個(gè)邏輯只能處理 1~2 個(gè)數(shù)的運(yùn)算。
*/
class CalculatorCore {
private String displayText = "0"; // 要顯示的文本
boolean reset = true;
int MaxLen = 30;
private BigDecimal number1, number2;
private String operator;
private HashMapString, Operator operators = new HashMapString, Operator();
private HashMapString, Processor processors = new HashMapString, Processor();
CalculatorCore() {
setupOperators();
setupProcessors();
}
// 為每種命令添加處理方式
private void setupProcessors() {
processors.put("[0-9]", new Processor() {
public void calculate(String command) {
numberClicked(command);
}
});
processors.put("\\.", new Processor() {
public void calculate(String command) {
dotClicked();
}
});
processors.put("=", new Processor() {
public void calculate(String command) {
equalsClicked();
}
});
processors.put("[+\\-*/]", new Processor() {
public void calculate(String command) {
operatorClicked(command);
}
});
processors.put("C", new Processor() {
public void calculate(String command) {
clearClicked();
}
});
processors.put("CE", new Processor() {
public void calculate(String command) {
clearErrorClicked();
}
});
}
// 為每種 operator 添加處理方式
private void setupOperators() {
operators.put("+", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.add(number2);
}
});
operators.put("-", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.subtract(number2);
}
});
operators.put("*", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.multiply(number2);
}
});
operators.put("/", new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.divide(number2, 30, RoundingMode.HALF_UP);
}
});
}
// 根據(jù)命令處理。這里的命令實(shí)際上就是按鈕文本。
public String process(String command) {
for (String pattern : processors.keySet()) {
if (command.matches(pattern)) {
processors.get(pattern).calculate(command);
break;
}
}
return displayText;
}
// 當(dāng)按下 CE 時(shí)
private void clearErrorClicked() {
if (operator == null) {
number1 = null;
} else {
number2 = null;
}
displayText = "0";
reset = true;
}
// 當(dāng)按下 C 時(shí),將計(jì)算器置為初始狀態(tài)。
private void clearClicked() {
number1 = null;
number2 = null;
operator = null;
displayText = "0";
reset = true;
}
// 當(dāng)按下 = 時(shí)
private void equalsClicked() {
calculateResult();
number1 = null;
number2 = null;
operator = null;
reset = true;
}
// 計(jì)算結(jié)果
/**
*
*/
private void calculateResult() {
number2 = new BigDecimal(displayText);
Operator oper = operators.get(operator);
if (oper != null) {
try {
BigDecimal result = oper.process(number1, number2);
displayText = result.toString();
} catch (RuntimeException e) {
clearClicked();//將計(jì)算器置為初始狀態(tài)
JOptionPane.showMessageDialog(null,"不能用零作除數(shù)","出錯(cuò)了",JOptionPane.OK_OPTION);
//e.printStackTrace();
}
}
}
// 當(dāng)按下 +-*/ 時(shí)(這里也可以擴(kuò)展成其他中間操作符)
private void operatorClicked(String command) {
if (operator != null) {
calculateResult();
}
number1 = new BigDecimal(displayText);
operator = command;
reset = true;
}
// 當(dāng)按下 . 時(shí)
private void dotClicked() {
if (displayText.indexOf(".") == -1) {
displayText += ".";
} else if (reset) {
displayText = "0.";
}
reset = false;
}
// 當(dāng)按下 0-9 時(shí)
private void numberClicked(String command) {
if (reset) {
displayText = command;
} else {
if(displayText.length() MaxLen)
displayText += command;
else
JOptionPane.showMessageDialog(null,"輸入的數(shù)字太長(zhǎng)了","出錯(cuò)了",JOptionPane.OK_OPTION);
}
reset = false;
}
// 運(yùn)算符處理接口
interface Operator {
BigDecimal process(BigDecimal number1, BigDecimal number2);
}
// 按鈕處理接口
interface Processor {
void calculate(String command);
}
}
我來,代碼十分鐘后加上來.
(貼上來了)你不選我,我就跟你拼了!!!!! (僅針對(duì)沒有獎(jiǎng)的時(shí)候,現(xiàn)在隨你了)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
public static String getNumber(String message){
//從鍵盤輸入
System.out.println(message);
String str=null;
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
try {
str=buf.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
//叛斷輸入的是不是一個(gè)數(shù)
public static String checkNumber(){
String str=null;
str=getNumber("請(qǐng)輸入一個(gè)數(shù): ");
int number=0;
try {
number=Integer.parseInt(str);
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
System.out.println("您輸入的不是一個(gè)數(shù)...");
System.exit(1);
}
return str;
}
public static void isOrNotFiveAndHuiyan(){
int sum=0;
String str=checkNumber();
if(str.length()!=5){
System.out.println("不是一個(gè)五位數(shù)...");
System.exit(0);
//判斷是不是五位數(shù)
}else{
System.out.println("這是一個(gè)五位數(shù)...");
}
String str1="";
for(int i=0;istr.length();i++){
str1+=str.charAt(str.length()-i-1);
}
if(str1.equals(str)){
System.out.println("這是一個(gè)回文數(shù): ");
//判斷是不是回文數(shù)
}else{
System.out.println(str+","+str1);
System.out.println("這不是一個(gè)回文數(shù): ");
}
for(int i=0;istr.length();i++){
sum+=Integer.parseInt(str.charAt(i)+"");
}
System.out.println("這個(gè)回文數(shù)的各位和為: "+sum);
}
public static void main(String[] args){
isOrNotFiveAndHuiyan();
}
}
百度百科是這樣介紹java的:
Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C語言的各種優(yōu)點(diǎn),還摒棄了C里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程 [1] 。
Java具有簡(jiǎn)單性、面向?qū)ο?、分布式、健壯性、安全性、平臺(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn) [2] 。
Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等 [3] 。
簡(jiǎn)單的說:java就是一門語言,是計(jì)算機(jī)和我們的溝通語言,計(jì)算機(jī)可以懂Java這門語言。我們學(xué)會(huì)java就意味著我們可以和計(jì)算機(jī)進(jìn)行溝通。
經(jīng)過了多年的發(fā)展,Java早已由一門單純的計(jì)算機(jī)編程語言,演變?yōu)榱艘惶讖?qiáng)大的技術(shù)體系。是的,什么是Java,我想技術(shù)體系四個(gè)字應(yīng)該是最好的概括了吧。Java設(shè)計(jì)者們將Java劃分為3種結(jié)構(gòu)獨(dú)立但卻彼此依賴的技術(shù)體系分支,它們分別對(duì)應(yīng)著不同的規(guī)范集合和組件:
Java SE(標(biāo)準(zhǔn)版),主要活躍在桌面領(lǐng)域,主要包含了Java API組件。
Java EE(企業(yè)版),活躍在企業(yè)級(jí)領(lǐng)域,除了包含Java API組件外,還擴(kuò)充有Web組件、事務(wù)組件、分布式組件、EJB組件、消息組件等,綜合這些技術(shù),開發(fā)人員完全可以構(gòu)建出一個(gè)具備高性能、結(jié)構(gòu)嚴(yán)謹(jǐn)?shù)钠髽I(yè)級(jí)應(yīng)用,并且Java EE也是用于構(gòu)建SOA(面向服務(wù)架構(gòu))的首選平臺(tái)。
Java ME(精簡(jiǎn)版),活躍在嵌入式領(lǐng)域,稱之為精簡(jiǎn)版的原因是,它僅保留了Java API中的部分組件,以及適應(yīng)設(shè)備的一些特有組件。
上面講到Java技術(shù)體系的分支,那既然Java是一種技術(shù)體系,我們來看一下組成這種技術(shù)體系的技術(shù):
Java編程語言
字節(jié)碼
Java API,包括Java API類庫(kù)和來自商業(yè)機(jī)構(gòu)以及開源社區(qū)的第三方類庫(kù)
Java虛擬機(jī)
抽象類的應(yīng)用
package com.test.sample;
/**
* 1抽象類和最終類的使用
* ⑴ 定義一個(gè)抽象類Shape用于描述圖形,具有“名稱”(name)
* 屬性以及計(jì)算其面積和周長(zhǎng)的兩個(gè)抽象方法GetArea()和GetLength()。
* 定義一個(gè)最終類Circle繼承自類Shape,增加了一個(gè)描述半徑的屬性radius及帶參的構(gòu)造函數(shù)用于該類對(duì)象的初始化操作,
* 同時(shí)實(shí)現(xiàn)了Shape類中的兩個(gè)抽象方法來計(jì)算圓的面積和周長(zhǎng)。
* 定義一個(gè)最終類Rectangle繼承自類Shape,
* 增加了兩個(gè)屬性length和width用于描述矩形的長(zhǎng)和寬及帶參的構(gòu)造函數(shù)用于完成對(duì)該類對(duì)象的初始化,
* 同時(shí)實(shí)現(xiàn)了Shape類中的兩個(gè)抽象方法來計(jì)算矩形的面積和周長(zhǎng)。
* @author Administrator
*
*/
public abstract class Shape {
public static double PI=3.14;
public String name;
public abstract double GetArea();
public abstract double GetLength();
}
=================================================
package com.test.sample;
/**
* 用于圓的子類
* @author Administrator
*
*/
public class Circle extends Shape {
private double radius;
public Circle(String name,double radius)
{
this.radius=radius;
this.name=name;
}
@Override
public double GetArea() {
// TODO Auto-generated method stub
return PI*radius*radius;
}
@Override
public double GetLength() {
// TODO Auto-generated method stub
return 2*PI*radius;
}
}
===================================================
package com.test.sample;
/**
* 矩形
* @author Administrator
*
*/
public class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(String name,double length,double width)
{
this.name=name;
this.length=length;
this.width=width;
}
@Override
public double GetArea() {
// TODO Auto-generated method stub
return length*width;
}
@Override
public double GetLength() {
// TODO Auto-generated method stub
return 2*(length+width);
}
}