JAVA中易出错的小问题(二)
----------------------- 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学习型技术博客、期待与您交流! ----------------------
转载于:https://www.cnblogs.com/lihongyin/archive/2013/01/14/2859940.html
JAVA中易出错的小问题(二)相关推荐
- java编写代码时易出错_JAVA中易出错的小问题(一)
----------- android培训.java培训.java学习型技术博客.期待与您交流! ------------ 第一:奇数性 static boolean isodd(int i){ re ...
- java犯的小错误_[Java教程]十个JavaScript中易犯的小错误,你中了几枪?
[Java教程]十个JavaScript中易犯的小错误,你中了几枪? 0 2015-06-01 12:00:19 序言 在今天,JavaScript已经成为了网页编辑的核心.尤其是过去的几年,互联网见 ...
- Java中易忽略的基础知识
欢迎关注我的公众号[软件大爆炸] Java学习中的碎碎念 Java中易忽略的基础知识 Java面向对象基础 Java中的核心类 Java抽象类和接口 Java中的异常 Java中的泛型与集合 Java ...
- 在JAVA中记录日志的十个小建议
JAVA日志管理既是一门科学,又是一门艺术.科学的部分是指了解写日志的工具以及其API,而选择日志的格式,消息的格式,日志记录的内容,哪种消息对应于哪一种日志级别,则完全是基于经验.从过去的实践证明, ...
- Java中的大端和小端
Java整型的字节序是() A.Little-Endian(小端) B.Big-Endian(大端) C.由运行程序的CPU决定 D.由编译程序的CPU决定 对于大小端,我估计肯定有很多开发人员跟我一 ...
- 猫头鹰的深夜翻译:在JAVA中记录日志的十个小建议
前言 首先,这篇文章没有进行任何的日志功能的详细介绍,而是对日志提出了几种最佳实践.适合对日志记录有所了解的同学阅读. 下面是正文: JAVA日志管理既是一门科学,又是一门艺术.科学的部分是指了解写日 ...
- java中常用的工具类(二)FtpUtil, 汉字转拼音,zip工具类,CollectionUtil,MathUtil,
下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java package com.itjh.javaUtil;import java.io.File; import ...
- java中注解的使用与实例 (二)
java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解 ...
- Java中的泛型全解析(二)
Java中的泛型全解析(一) 泛型中的约束和局限性 现在我们有泛型类 不能用基本类型实例化类型参数 运行时类型查询只适用于原始类型 泛型类的静态上下文中类型变量失效 不能在静态域或方法中引用类型变量. ...
- Java中的屠龙之术(二):如何方便快捷地生成.class文件
在之前的"Java中的屠龙之术:如何修改语法树"中,我们详细介绍了如何使用Javac源码提供的工具类来修改语法树. 而在此基础上,有一款开源工具javapoet可以更加快捷地生成字 ...
最新文章
- ecplise 工具字体大小的调整
- Python如何优化列表接口进行分页
- 百练OJ:4003:十六进制转十进制(python三行代码实现)
- Java Set集合详解及Set与List的区别
- linux shell中各种分号和括号,linux shell 各种分号,括号使用方法总结
- Spring中的动态代理
- 50种方法巧妙优化你的SQLServer数据库(转)
- 2018-2019-2 20189205《移动平台应用开发实践》第三周作业
- mysql node 可视化_使用Prometheus进行Substrate节点可视化监控
- matlab中度数化成度分秒,度分秒转换:32.68度用度、分、秒表示=? 求解释!?请帮忙...
- Hubble数据库x某股份制商业银行 信用卡反欺诈项目构建2.4亿条社交网络库
- 元宇宙掀起新浪潮,觅伊打造沉浸式社交场景
- “创享杯”第一届电子数据取证线上大比武答案(自做)
- 基于KF32A156 - MCU Bug list
- 里加一列为1_风味人间2:大厨做的拔丝苹果,拉丝1米长,根根分明
- 读《质量·软件·管理》有感
- 【数据挖掘】任务6:DBSCAN聚类
- PHP 简单案例[5]
- 武汉长江大桥(游走武汉)
- CDQ分治入门 + 例题 Arnooks's Defensive Line [Uva live 5871]