package com.zpp;public class Charge {
田東網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站成立與2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
public static void main(String [] args) {
if(args.length ==0) {
System.out.println("parameter error!");
System.out.println("java com.zpp.Charge [int]");
return;
}
int min = Integer.parseInt(args[0]);
double money = 0.0;
if (min = 0) {
money =0.0;
System.out.println("not money");
} else if (min = 60) {
money = 2.0;
} else {
money = 2.0 + (min - 60) * 0.01;
}
System.out.println("please pay: " + money);
}
} 編譯:javac -d . Charge.java運(yùn)行:java com.zpp.Charge 111
應(yīng)該是沒(méi)寫過(guò)java代碼吧!
寫個(gè)最簡(jiǎn)單的給你分析下
public class ClassName{
public ClassName(){}
public static void main(String args[]){
System.out.println("Hello World!");
}
}
上面代碼分析:public、 class 、static、void 都是java語(yǔ)言的關(guān)鍵字
通過(guò)關(guān)鍵字pubic class 定義一個(gè)名字為ClassName的公共的類;
第二行是構(gòu)造函數(shù);
第三行是主函數(shù)(程序入口);
第四行是在控制臺(tái)輸出Hello World!;其中System是java提供的API函數(shù);
復(fù)雜去了。。。。
原理很簡(jiǎn)單,因?yàn)樵趈ava中,int是占4個(gè)字節(jié)大小,double占8個(gè)字節(jié)的大小,當(dāng)你把某變量乘以2的時(shí)候,在計(jì)算機(jī)里面的處理方式是左移一位。當(dāng)使用浮點(diǎn)數(shù)進(jìn)行乘法運(yùn)算時(shí),若結(jié)果很大,會(huì)以科學(xué)計(jì)數(shù)法表示。
下面具體分析:
1、表達(dá)式0x7FFFFFFF == (int)(0x7FFFFFFF * 2.0)
0x7FFFFFFF 已經(jīng)占了4個(gè)字節(jié),也就是int型的最大范圍,以二進(jìn)制表示出來(lái)為01111111 11111111 11111111 11111111
0X7FFFFFFF*2.0 計(jì)算出來(lái)的結(jié)果為double型,那么結(jié)果將會(huì)以科學(xué)計(jì)數(shù)法來(lái)表示,也就是4.294967294E9, 以二進(jìn)制表示為0 11111111 11111111 11111111 11111110,以16進(jìn)制表示為0xFF FF FF FE,注意,這里的計(jì)算結(jié)果并沒(méi)有超出double的范圍8字節(jié)。
(int)(0x7FFFFFFF * 2.0) 在上面已經(jīng)看到0x7FFFFFFFF的二進(jìn)制表示為01111111 11111111 11111111 11111111乘以2就表示左移一位,結(jié)果為0 11111111 11111111 11111111 11111110 (注意,這個(gè)數(shù)并未超出8字節(jié)的范圍)然后再把結(jié)果強(qiáng)制轉(zhuǎn)換為int型,也就是從最高位開始向下取4個(gè)字節(jié),因此最后一位的0被丟棄(取double的最大值,因此丟棄最低位),最后結(jié)果以二進(jìn)制表示為01111111 11111111 11111111 11111111,以16進(jìn)制表示為0x7F FF FF FF,可以看到與0x7FFFFFFFF的相同,因此第一個(gè)表達(dá)式0x7FFFFFFF == (int)(0x7FFFFFFF * 2.0)反回true。
2、表達(dá)式(int)(0x7FFFFFFF * 2.0) == (int)(0x7FFFFFFF * 2)
(int)(0x7FFFFFFF * 2.0)這部分的結(jié)果在上面介紹過(guò)了,這里就不用介紹了,結(jié)果還是為0x7F FF FF FF。
(int)(0x7FFFFFFF * 2) 其中0x7FFFFFFF*2表示把0x7FFFFFFF左移一位,其二進(jìn)制結(jié)果為0 11111111 11111111 11111111 11111110,因?yàn)樽詈鬄閕nt型,計(jì)算結(jié)果超出4個(gè)字節(jié),因此最高位的0被丟棄(int型的計(jì)算是拋棄最高位),結(jié)果為11111111 11111111 11111111 11111110,以16進(jìn)制表示為0xFF FF FF FE與0x7FFFFFFF不相同,因此結(jié)果為false。
要注意,在計(jì)算機(jī)中數(shù)值是以補(bǔ)碼的形式表示的(包括以上的計(jì)算結(jié)果全都是以補(bǔ)碼表示的),補(bǔ)碼知識(shí)不作介紹,這里只要知道,正數(shù)的被碼就為原來(lái)的正數(shù),而負(fù)數(shù)的補(bǔ)碼為符號(hào)位不變,其余各位按位取反再加1。因此0xFF FF FF FE除符號(hào)位不變(在java中int型最高位為符號(hào)位),其余各位取反再加1,結(jié)果為10000000 00000000 00000000 00000010最后結(jié)果為-2,以16進(jìn)制表示為0x80 00 00 02,因此使用print輸出該數(shù),則為-2,并不為0xFF FF FF FE的十進(jìn)制數(shù)值。
3、表達(dá)式0x7FFFFF * 2.0== (int)(0x7FFFFF * 2)
因?yàn)閮蓚€(gè)數(shù)字計(jì)算的結(jié)果都沒(méi)有出現(xiàn)超出int型的4個(gè)字節(jié)的情況,因此計(jì)算結(jié)果相同,這個(gè)就不介紹了,相信你應(yīng)該明白了。
好了,現(xiàn)在相信你應(yīng)該明白了
public Static Animal get(String choice)//這句是定義一個(gè)靜態(tài)方法get ,static表示該方法是靜態(tài)方法, void表示方法沒(méi)有返回值(在方法沒(méi)有返回值時(shí)用),而該句的返回值類型是Animal (Animal是一個(gè)用戶自定義的類 類似你熟知的int,string,char等), 例如public viod get(){}這個(gè)方法就沒(méi)有返回值且是非靜態(tài)方法 而public static string set(){}這個(gè)方法就是靜態(tài)方法且返回值的string類型。請(qǐng)不要混淆返回值類型與static二者并非一個(gè)概念
靜態(tài)與非靜態(tài):當(dāng)一個(gè)函數(shù)或者一個(gè)變量前面加上static時(shí)表示該方法或變量是靜態(tài)的,否則就是非靜態(tài)的。java和c#一樣是面向?qū)ο蟮恼Z(yǔ)言,創(chuàng)建一個(gè)類后需要實(shí)例類的對(duì)象調(diào)用方法或者變量,當(dāng)聲明的方法或者變量時(shí)靜態(tài)時(shí)就可以直接用類名調(diào)用,因?yàn)殪o態(tài)的是屬于類所有,并非屬于類的某個(gè)對(duì)象
choice是什么意思? choice是get方法的形式參數(shù)(形參)通俗一些就是個(gè)傀儡,只有這個(gè)get方法被調(diào)用的時(shí)候形參就被賦予了實(shí)參的值,才真正有了意義。例如你的例子Animal al=Store.get("dog");中調(diào)用了get方法并傳遞實(shí)參"dog" ,此時(shí)choice的值就是"dog","dog"與"dog"當(dāng)然是倆個(gè)相等的字符串 所以程序最后輸出的肯定和狗有關(guān)。如果get方法被調(diào)用時(shí)傳的實(shí)參不是"dog",Animal al=Store.get("pig");此時(shí)choice值就是"pig","pig"與“dog”不是相同的字符串所以最后結(jié)果肯定和貓又關(guān)(呵呵)
if(choice.equalsIgnoreCase("dog"))是什么意思? 這是判斷當(dāng)get函數(shù)被調(diào)用時(shí)傳遞的實(shí)參是否是“dog”, java中equalsIgnoreCase是判斷兩個(gè)字符串是否相等它不考慮大小寫,如果兩個(gè)字符串的長(zhǎng)度相等,并且兩個(gè)字符串中的相應(yīng)字符都相等(忽略大小寫),則認(rèn)為這兩個(gè)字符串是相等的。(當(dāng)get被調(diào)用時(shí)choice的值就變?yōu)閷?shí)參的值)
正如LS所說(shuō)main 方法是java程序的入口,當(dāng)程序運(yùn)行時(shí)首先運(yùn)行main方法中的內(nèi)容 ,記住main方法的格式就行,以后你會(huì)慢慢理解main
如果還有不是很清楚的地方 百度hi我……
這回答應(yīng)該通俗易懂不知lz滿意否?怎么樣給分吧……
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.Point;
import java.awt.Rectangle;
import javax.swing.ImageIcon;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.Font;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Date;
public class Game extends JFrame {
/**
* This method initializes jButton1
*
* @return javax.swing.JButton
*/
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setBounds(new Rectangle(478, 361, 164, 51));
jButton1.setText("重新開始");
jButton1.setVisible(false);
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
jButton1.setVisible(false);
jLabel.setVisible(false);
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
// TODO 自動(dòng)生成 catch 塊
e1.printStackTrace();
}
reset();
}
});
}
return jButton1;
}
public static void main(String[] args) {
Game game = new Game();
game.start();
game.reset();
game.gogo();
}
public void reset() {
kup = false;
kdown = false;
kleft = false;
kright = false;
int chushihua = 0;
while (chushihua zidanshu) {
((JButton) buttonal.get(chushihua)).setBounds(new Rectangle(-50,
-50, 10, 10));
chushihua++;
}
gamexunhuan = true;
jButton.setIcon(new ImageIcon(fileLoc));
jButton.setLocation(320, 320);
p = jButton.getLocation();
x=p.getX();
y=p.getY();
firsttime=new Date().getTime();
}
public void start() {
int chushihua = 0;
while (chushihua zidanshu) {
JButton jb = new JButton();
jb.setBounds(new Rectangle(-50, -50, 10, 10));
jb.setEnabled(false);
Threads ths = new Threads(jb);
Thread th = new Thread(ths);
buttonal.add(jb);
threadal.add(th);
chushihua++;
}
Game.Move move = new Move();
Thread tm = new Thread(move);
tm.start();
}
public void gogo() {
int chushihua = 0;
while (chushihua zidanshu) {
((Thread) threadal.get(chushihua)).start();
chushihua++;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO 自動(dòng)生成 catch 塊
e.printStackTrace();
}
}
}
// private static Game game;
private long firsttime;
private long lasttime;
private static final long serialVersionUID = 1L;
private JPanel jPanel = null;
private JButton jButton = null;
private boolean kup ;
private boolean kdown ;
private boolean kleft ;
private boolean kright ;
// 定義玩家的行走步伐,數(shù)值越大,移動(dòng)速度越快 private int step = 3;
Point p; // @jve:decl-index=0:
double x = 0.0;
double y = 0.0;
// 定義了子彈的個(gè)數(shù) int zidanshu = 70;
// 定義子彈初始值,這個(gè)是不變的
// int chushihua = 0;
// 定義控制子彈行走的循環(huán)false就不走了
private boolean gamexunhuan = true;
private JLabel jLabel = null;
private JButton jButton1 = null;
private ArrayList buttonal = new ArrayList();
private ArrayList threadal = new ArrayList();
URLClassLoader urlLoader = (URLClassLoader)this.getClass().getClassLoader();
URL fileLoc = urlLoader.findResource("MyGameIcons/gwl1.gif"); // @jve:decl-index=0:
URL fileLoc1 = urlLoader.findResource("MyGameIcons/gwls1.gif");
/**
* This is the default constructor
*/
public Game() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(700, 700);
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(1);
}
});
this.setResizable(false);
this.setContentPane(getJPanel());
this.setTitle("范傳奇的小游戲!(模擬撐過(guò)30秒的小DEMO)");
this.setVisible(true);
}
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
private JPanel getJPanel() {
if (jPanel == null) {
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(42, -33, 595, 308));
jLabel.setFont(new Font("Dialog", Font.BOLD, 24));
jLabel.setForeground(new Color(250, 2, 2));
jLabel.setEnabled(true);
jLabel.setVisible(false);
jPanel = new JPanel();
jPanel.setLayout(null);
jPanel.add(getJButton(), null);
jPanel.setForeground(new Color(1, 1, 1));
jPanel.setBackground(new Color(1, 1, 1));
jPanel.setVisible(true);
jPanel.add(jLabel, null);
jPanel.add(getJButton1(), null);
}
return jPanel;
}
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
class Move implements Runnable {
public void run() {
while(true){
while (gamexunhuan) {
p = jButton.getLocation();
if (kup) {
if (kleft) {
x = p.getX();
y = p.getY();
if (x 0 y 0) {
jButton.setLocation((int) x - step, (int) y
- step);
}
} else if (kright) {
x = p.getX();
y = p.getY();
if (x + 40 700 y 0) {
jButton.setLocation((int) x + step, (int) y
- step);
}
} else {
x = p.getX();
y = p.getY();
if (y 0) {
jButton.setLocation((int) x, (int) y - step);
}
}
}
if (kdown) {
if (kleft) {
x = p.getX();
y = p.getY();
if (y + 60 700 x 0) {
jButton.setLocation((int) x - step, (int) y
+ step);
}
} else if (kright) {
x = p.getX();
y = p.getY();
if (x + 40 700 y + 60 700) {
jButton.setLocation((int) x + step, (int) y
+ step);
}
} else {
x = p.getX();
y = p.getY();
if (y + 60 700) {
jButton.setLocation((int) x, (int) y + step);
}
}
}
if (kleft) {
if (kup) {
x = p.getX();
y = p.getY();
if (x 0 y 0) {
jButton.setLocation((int) x - step, (int) y
- step);
}
} else if (kdown) {
x = p.getX();
y = p.getY();
if (y + 60 700 x 0) {
jButton.setLocation((int) x - step, (int) y
+ step);
}
} else {
x = p.getX();
y = p.getY();
if (x 0) {
jButton.setLocation((int) x - step, (int) y);
}
}
}
if (kright) {
if (kup) {
x = p.getX();
y = p.getY();
if (x + 40 700 y 0) {
jButton.setLocation((int) x + step, (int) y
- step);
}
} else if (kdown) {
x = p.getX();
y = p.getY();
if (x + 40 700 y + 60 700) {
jButton.setLocation((int) x + step, (int) y
+ step);
}
} else {
x = p.getX();
y = p.getY();
if (x + 40 700) {
jButton.setLocation((int) x + step, (int) y);
}
}
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO 自動(dòng)生成 catch 塊
e.printStackTrace();
}
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO 自動(dòng)生成 catch 塊
e.printStackTrace();
}
}
}
}
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(320, 320, 30, 30));
jButton.setBackground(new Color(1, 1, 1));
p = jButton.getLocation();
x = p.getX();
y = p.getY();
jButton.setIcon(new ImageIcon(fileLoc));
jButton.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent e) {
if(e.getKeyCode()==10){
if(!gamexunhuan){
jButton1.setVisible(false);
jLabel.setVisible(false);
reset();
}
}
if (e.getKeyCode() == 37) {
kleft = false;
}
if (e.getKeyCode() == 38) {
kup = false;
}
if (e.getKeyCode() == 39) {
kright = false;
}
if (e.getKeyCode() == 40) {
kdown = false;
}
}
public void keyPressed(java.awt.event.KeyEvent e) {
if (e.getKeyCode() == 37) {
kleft = true;
}
if (e.getKeyCode() == 38) {
kup = true;
}
// 觸發(fā)按右鍵
if (e.getKeyCode() == 39) {
kright = true;
}
if (e.getKeyCode() == 40) {
kdown = true;
}
}
});
}
return jButton;
}
class Threads implements Runnable {
public Threads(JButton jjb) {
jb = jjb;
}
JButton jb = null;
private boolean first = true;
public void run() {
while (gamexunhuan) {
go();
}
}
public void go() {
int zzx = 0;
int zzy = 0;
int zx = 0;
int zy = 0;
while (true) {
if(gamexunhuan){
int fangxiang = (int) (Math.random() * 4 + 1);
// 四個(gè)if隨即從四個(gè)邊發(fā)射子彈
if (fangxiang == 1) {
zx = 0;
zy = (int) (Math.random() * 701);
}
if (fangxiang == 2) {
zx = (int) (Math.random() * 701);
zy = 0;
}
if (fangxiang == 3) {
zx = 700;
zy = (int) (Math.random() * 701);
}
if (fangxiang == 4) {
zx = (int) (Math.random() * 701);
zy = 700;
}
// 初始化子彈,有了就不在加了
if (first) {
jPanel.add(jb, null);
first = false;
}
jb.setBounds(new Rectangle(zx, zy, 10, 10));
// 定義子彈與物體之間的步長(zhǎng)
zzx = (int) (((x + 15) - zx) / 30);
zzy = (int) (((y + 15) - zy) / 30);
}
while (gamexunhuan) {
try {
zx += zzx;
zy += zzy;
jb.setLocation(zx, zy);
if (zx + 5 x zx + 5 x + 30 zy + 5 y
zy + 5 y + 30) {
jButton.setIcon(new ImageIcon(fileLoc1));
gamexunhuan = false;
first = true;
jButton1.setVisible(true);
jLabel.setVisible(true);
lasttime = new Date().getTime();
Date gametime = new Date(lasttime-firsttime);
int min =0;
int sec =0;
min = gametime.getMinutes();
sec = gametime.getSeconds();
String endtime = "";
if(min!=0){
endtime=min + "分 " + sec + "秒";
}else{
endtime=sec + "秒";
}
jLabel.setText(" GAME OVER!!! \n用時(shí):" + endtime);
break;
}
// 超出邊線停止循環(huán)
if (zx 700 | zy 700 | zx 0 | zy 0) {
break;
}
Thread.sleep(60);
} catch (InterruptedException e) {
// TODO 自動(dòng)生成 catch 塊
e.printStackTrace();
}
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO 自動(dòng)生成 catch 塊
e.printStackTrace();
}
}
}
}
} // @jve:decl-index=0:visual-constraint="10,10"
這是一個(gè)以前寫過(guò)的“是男人就撐過(guò)30秒的小游戲源碼”
如果想要執(zhí)行程序,麻煩留個(gè)郵箱。
最簡(jiǎn)單的java代碼肯定就是這個(gè)了,如下:
public class MyFirstApp
{
public static void main(String[] args)
{
System.out.print("Hello world");
}
}
“hello world”就是應(yīng)該是所有學(xué)java的新手看的第一個(gè)代碼了。如果是零基礎(chǔ)的新手朋友們可以來(lái)我們的java實(shí)驗(yàn)班試聽,有免費(fèi)的試聽課程幫助學(xué)習(xí)java必備基礎(chǔ)知識(shí),有助教老師為零基礎(chǔ)的人提供個(gè)人學(xué)習(xí)方案,學(xué)習(xí)完成后有考評(píng)團(tuán)進(jìn)行專業(yè)測(cè)試,幫助測(cè)評(píng)學(xué)員是否適合繼續(xù)學(xué)習(xí)java,15天內(nèi)免費(fèi)幫助來(lái)報(bào)名體驗(yàn)實(shí)驗(yàn)班的新手快速入門java,更好的學(xué)習(xí)java!