有兩種類(lèi)型的開(kāi)發(fā)人員,優(yōu)秀的開(kāi)發(fā)人員和聰明的開(kāi)發(fā)人員,你是哪一種?掌握一些技巧能讓我們變成一個(gè)聰明的開(kāi)發(fā)人員。
有兩種類(lèi)型的開(kāi)發(fā)人員,優(yōu)秀的開(kāi)發(fā)人員和聰明的開(kāi)發(fā)人員,你是哪一種?掌握一些技巧能讓我們變成一個(gè)聰明的開(kāi)發(fā)人員。

1.main()函數(shù)的不同寫(xiě)法
從使用 Java 的第一天開(kāi)始,我們應(yīng)該就會(huì)這么寫(xiě):
public class Example {
public static void main(String [ ] args){
System.out.println(“Hello World”);
}
}
那么你知道 main() 方法的不同寫(xiě)法嗎?
方式一
public class Example {
public static void main(String . . . args){
System.out.println(“Hello World”);
}
}
方式二
public class Example {
static public void main(String . . . args){
System.out.println(“Hello World”);
}
}
看出什么差別了嗎?
2.數(shù)值交換
數(shù)值交換的典型寫(xiě)法:
class Example {
public static void main(String a[]) {
int x = 10;
int y = 5;
x = x + y;
y = x - y;
x = x - y;
System.out.println("交換后的值為:"+ " x = " + x + ", y = " + y);
}
}
聰明的寫(xiě)法:
class Example {
public static void main(String a[]) {
int x = 10;
int y = 5;
y= x+y - (x=y);
System.out.println("After swaping:"+ " x = " + x + ", y = " + y)
}
}
3.沒(méi)有main()函數(shù)的Java代碼
{
static
{
System.out.println("Hello World!");
System.exit(0); // 防止“main method not found” 錯(cuò)誤
}
}
4.測(cè)量程序運(yùn)行時(shí)間
currentTimeMillis():返回自大紀(jì)元以來(lái)以毫秒為單位的當(dāng)前時(shí)間,以長(zhǎng)為單位。
long startTime = System.currentTimeMillis();
long estimatedTime = System.currentTimeMillis() - startTime;
nanoTime():返回最精確的可用系統(tǒng)定時(shí)器的當(dāng)前值,以納秒為單位,以 long 為單位。nanoTime() 用于測(cè)量相對(duì)時(shí)間間隔而不是提供絕對(duì)時(shí)間。
long startTime = System.nanoTime();
long estimatedTime = System.nanoTime() - startTime;
5.檢查奇數(shù)
常規(guī)寫(xiě)法:
public boolean oddOrNot(int num) {
return num % 2 == 1;
}
考慮到負(fù)奇數(shù),除以 2 的余數(shù)不會(huì)是 1。因此,返回的結(jié)果將是 false,這是不正確的!
聰明的寫(xiě)法:
public boolean oddOrNot(int num) {
return (num & 1) != 0;
}
使用這段代碼,不僅解決了負(fù)奇數(shù)的問(wèn)題,而且這段代碼也進(jìn)行了高度優(yōu)化。由于與除法和乘法相比,算術(shù)和邏輯運(yùn)算要快得多,因此在第二個(gè)片段中可以更快地獲得結(jié)果。
6.在 Java 中搜索字符串
這可能不是所謂的技巧,但它是 Java 開(kāi)發(fā)人員應(yīng)該知道的東西。Java 提供了一個(gè) indexOf() 的庫(kù)方法。此方法與 String 對(duì)象一起使用,返回所需字符串的索引位置。如果未找到該字符串,則返回 -1。
public class Example {
public static void main(String[] args) {
String myString = "Hello String!";
if(myString.indexOf("String") == -1) {
System.out.println("String not Found!");
} else {
System.out.println("String found at: " + myString.indexOf("String"));
}
}
}
7.明智的判斷
當(dāng)我們做判斷時(shí),首先想到的是 If-else。這是在 Java 中做判斷的最簡(jiǎn)單方法。如下:
class Example{
public static void main(String [ ] main){
int n1 = 5;
int n2 = 10;
if(n1>n2){
System.out.println(“n1 is greater”);
} else{
System.out.println(“n2 is greater”);
}
}
}
使用三木運(yùn)算更加簡(jiǎn)潔:
class Ternary {
public static void main(String[] args)
{
int n1 = 5;
int n2 = 10;
int max = (n1 > n2) ? n1 : n2;
System.out.println("Maximum is = " + max);
}
}
8.使用堆棧跟蹤
捕捉錯(cuò)誤可能是 Java 開(kāi)發(fā)過(guò)程中最耗時(shí)的部分。堆棧跟蹤能準(zhǔn)確跟蹤項(xiàng)目拋出異常的位置。
import java.io.*;
Exception e = …;
java.io.StringWriter sw = new java.io.StringWriter();
e.printStackTrace(new java.io.PrintWriter(sw));
String trace = sw.getBuffer().toString();
9.使用 System.in.read() 進(jìn)行用戶(hù)輸入
用戶(hù)輸入是任何應(yīng)用程序的重要方面之一。Java 常見(jiàn)的方式為:
- 使用 Scanner 類(lèi)
- 使用 BufferedReader 類(lèi)
更簡(jiǎn)潔的方法:
import java.io.IOException;
class ExamTest{
public static void main(String args[]) throws IOException{
int sn=System.in.read();
System.out.println(sn);
}
}
10.小心使用字符串
如果在“for”循環(huán)中使用“+”運(yùn)算符連接兩個(gè)字符串,那么它每次都會(huì)創(chuàng)建一個(gè)新的字符串對(duì)象。這會(huì)導(dǎo)致內(nèi)存浪費(fèi)并增加執(zhí)行時(shí)間。此外,在實(shí)例化字符串對(duì)象時(shí),應(yīng)避免使用構(gòu)造函數(shù),而應(yīng)直接進(jìn)行實(shí)例化。
//實(shí)例化慢,創(chuàng)建新對(duì)象
String bad = new String("bad");
//實(shí)例化快
String good = "good"