java程序员修炼之道(1)

时间:2023-02-12 08:58:39

  这些天看了《java程序员修炼之道》这本书,觉得还不错,将自己的一些理解以及对本书中的重点归纳了下,希望对后来者有些帮助,后续会根据每天理解的内容,陆续地写一些文章,望自己能够每天都处在学习中。

第一章主要是介绍了java7的改进地方:

  1.java是解释性语言还是编译性语言

     在这一点上,本人跟作者的观点有些不一样,c/c++这些都是典型的编译性语言,而java/c#等之类的语言是解释性的语言。因为我们知道编译性语言编译之后直接可以以机器语言的形式运行,而像java c#等语言编译之后转换为IL语言,运行时被平台(jvm .net)解释为机器语言运行,所以我个人认为java应该是一种解释性的语言。

  2.语法糖

     语法糖是众多高级语言的必备,为什么会出现语法糖?个人认为正是语言的简洁以及学习成本导致的,当一个语言能够以更简洁的形式来实现目的,那将会诱使更多的人来使用该语言。所以后续出现的python ruby等之类的语言,究其根本,其实就是专业化以及简洁的需求导致的。所以在我们的学习中,对待这种语法糖的形式了解之后,更要深究该用法的实际表示方式,这样你才能够更好地运用。如下的例子:

     (提醒一下,当我使用intelij idea的时候,写出下面的代码,会报错(你使用的模块时java6。。。),但是我的工具已经换成java8了,为什么会出现这种情况呢?后来查询了一些资料,终于知道我的项目的模块设置出现错误,如图)

public static void main(String[] args) {
int para = Integer.parseInt("1100110",2);
System.out.println(para);
int param = 0b1100110;
//Process();
System.out.println(param);
}

java程序员修炼之道(1)

   3.异常处理优化

      直接见代码:

    public static Configuration GetConfiguration(String fileName)
{
Configuration config = null;

try
{
config = GetConfiguration("");
}catch(FileNotFoundException fileEx)//旧方式
{

}catch(IOException ex)
{

}catch(ConfigurationException configEx)
{

}catch(ParseException parasEx) {

}catch (FileNotFoundException | ConfigurationException | ParseException ex)//修改后的方式-更加清晰
{

}catch(final Exception em)
{

}
}
     4.TWR-(try-with-resource)

        该改进让我想起了.net中的释放非托管资源的用法,using(filestream fs = file.open(""))。java中的优化如下:

       

public static void Process()
{
try {
InputStream input = null;
URL url = new URL("http://www.baidu.com");
try {
input = url.openStream();
OutputStream out = new FileOutputStream("a.txt");
try {
byte[] bt = new byte[4096];
int length = 0;
while ((length = input.read(bt)) > 0) {
out.write(bt, 0, length);
}
} catch (IOException io) {

} finally {
try {
out.close();
} catch (IOException clo) {

}
}
} catch (IOException ex) {

} finally {
try {
input.close();
} catch (IOException clos) {

}
}
}catch (MalformedURLException e) {
}

try(OutputStream out = new FileOutputStream("a.txt"))--优化的写法
{

}
}
简单地介绍了第一章的知识点,可能有些没有总结自己的理解,直接使用了代码来展现,也是希望自己多动手来理解。谢谢!