----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
第一:char字符转换
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="ABC";
char[] number={'1','2','3'};
System.out.print(s+" ease as "+number);
}
}
该程序打印的是:ABC ease as [C@1542a75
char数组不是字符串,想要将一个char数组转换成一个字符串,就要调用String.valueof(char[])方法。某些类库中的方法对char数组提供了类似字符串的支持,通常是提供一个object版本的重载方法和一个char[]版本的重载方法。改:
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="ABC";
object number=new char[]{'1','2','3'};
System.out.print(s+" ease as ");
System.out.println(number);
}
}
第二:比较方法(equals)
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
final String pig="length: 10";
final String dog="length: "+pig.length();
System.out.print("Animal are equal:"+pig==dog);
}
}
程序的结果是;false
在比较对象引用时,应该优先使用equals方法而不是==操作符。除非需要比较的是对象的标识而不是对象的值,另外,字符串连接的优先级不应该和加法一样。改:
System.out.println("Animal are equal:"+pig.equals(dog));
第三:字符转化
public class Text {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte bytes[]=new byte[256];
for(int i=0;i<256;i++){
bytes[i]=(byte)i;
String str=new String(bytes);
for(int i=0,n=str.length();i<n;i++)
System.out.print((int)str.charAt(i)+"");
}
}
}
每当要将一个byte序列转换成一个String时,你都在使用一个字符集,不管是否显示指定了它。指定byte数组来构造一个新的String时,该新String的长度是字符集的一个函数,因此,它可能不等于byte数组的长度。
第四:块注释符
public class Text {
public static void main(String[] args) {
System.out.print(classify('n')+classify('+')+classify('2'));
}
static String classify(char ch){
if("0123456789".indexOf(ch)>=0)
return "NUMERAL";
if("abcdefghijklmnopqrstuvwxyz".indexOf(ch)>=0)
return "LETTER";
/* (Operators not supported yet)
if("+-*/".indexOf(ch)>=0)
return "OPERATOR";
*/
return "UNKNOWN";
}
}
这个错误很简单,只是告诉你,块注释(/* */)不可靠地注释掉代码,应该用单行的注释(//)序列来代替;
第五:赋值
public class Text {
public static void main(String[] args) {
int j=0;
for(int i=0;i<100;i++)
System.out.print(j);
}
}
程序重复100次之后,还是等于0;
修正该程序非常简单:
for(int i=0;i<100;i++)
j++;
不要再单个表达式中对相同的变量赋值超过一次;
第六:符号运算以及替换
public class Text {
public static void main(String[] args) {
int minutes=0;
for(int ms=0;ms<60*60*1000;ms++)
if(ms % 60*1000 ==0)
minutes++;
System.out.print(minutes);
}
}
循环体看起来是每当毫秒计数器的计数值是60000的倍数,对分钟计数器执行增加量操作,这在循环生命周期内总共发生了3600000/60000次,即60次;但是打印的是6000;这是因为表达式【(ms %60 *1000】!=【(ms % 60000)】
改正:
public class Text {
private static final int MS_PER_HOUR=60*60*1000;
private static final int MS_PER_MINUTE=60*1000;
public static void main(String[] args) {
int minutes=0;
for(int ms=0;ms<MS_PER_HOUR;ms++)
if(ms % MS_PER_MINUTE ==0)
minutes++;
System.out.print(minutes);
}
}
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------