----------------------- 、、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@1542a75char数组不是字符串,想要将一个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); }}
----------------------- 、、java学习型技术博客、期待与您交流! ----------------------