java新手编程常见问题有哪些?java新手编程常见问题

在进行java编程的时候,如果我们马虎就会导致各种问题,尤其是对于新手来说,本来就不是很熟悉,如果再不用心,那么要写好代码还是需要花很多时间的,那java新手编程常见问题有哪些?下面来我们就来给大家讲解一下。

一、字符串连接误用

错误的写法:

String s = "";
for (Person p: persons)
{
    s += ", " + p.getName();
}
s = s.substring(2); //remove first comma

正确的写法:

StringBuilder sb = new StringBuilder(persons.size() * 16); // well estimated buffer
for (Person p: persons)
{
    if (sb.length() > 0) sb.append(", ");
    sb.append(p.getName);
}

二、测试字符串相等性

错误的写法:

if (name.compareTo("John") == 0) ...
if (name == "John") ...
if (name.equals("John")) ...
if ("".equals(name)) ...

上面的代码没有错,但是不够好。compareTo不够简洁,==原义是比较两个对象是否一样。另外比较字符是否为空,最好判断它的长度。

正确的写法:

if ("John".equals(name)) ...
if (name.length() == 0) ...
if (name.isEmpty()) ...

三、请使用XML解析器

错误的写法:

int start = xml.indexOf("") + "".length();
int end = xml.indexOf("");
String name = xml.substring(start, end);

正确的写法:

SAXBuilder builder = new SAXBuilder(false);
Document doc = doc = builder.build(new StringReader(xml));
String name = doc.getRootElement().getChild("name").getText();

四、未指定字符编码

错误的写法:

Reader r = new FileReader(file);
Writer w = new FileWriter(file);
Reader r = new InputStreamReader(inputStream);
Writer w = new OutputStreamWriter(outputStream);
String s = new String(byteArray); // byteArray is a byte[]
byte[] a = string.getBytes();

这样的代码主要不具有跨平台可移植性。因为不同的平台可能使用的是不同的默认字符编码。

正确的写法:

Reader r = new InputStreamReader(new FileInputStream(file), 
"ISO-8859-1");
Writer w = new OutputStreamWriter(new FileOutputStream(file), 
"ISO-8859-1");
Reader r = new InputStreamReader(inputStream, "UTF-8");
Writer w = new OutputStreamWriter(outputStream, "UTF-8");
String s = new String(byteArray, "ASCII");
byte[] a = string.getBytes("ASCII");

五、无限使用heap内存

错误的写法:

byte[] pdf = toPdf(file);

这里有一个前提,就是文件大小不能讲JVM的heap撑爆。否则就等着OOM吧,尤其是在高并发的服务器端代码。最好的做法是采用Stream的方式边读取边存储(本地文件或database)。

正确的写法:

File pdf = toPdf(file);

另外,对于服务器端代码来说,为了系统的安全,至少需要对文件的大小进行限制。

六、忽略所有异常

错误的写法:

try
{
    doStuff();
}
cach(Exception e)
{
    log.fatal("Could not do stuff");
}
doMoreStuff();

这个代码有两个问题, 一个是没有告诉调用者, 系统调用出错了. 第二个是日志没有出错原因, 很难跟踪定位问题。

正确的写法:

try
{
    doStuff();
}
catch (Exception e)
{
    throw new MyRuntimeException("Could not do stuff because: " + e.getMessage, e);
}

在进行java编程的时候,我们一定要认真细心,注意一些细节问题,因为很多时间就是一些小细节就会导致代码的错误,因此大家要多实践多记,这样就不会出现问题了!最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。

推荐阅读:

java如何创建线程?java创建线程的四种方式

java程序的并发机制是什么?Java运行机制是怎样的?

javabean怎么转成json键值对?javabean转json方法