这些天看了《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);
}
3.异常处理优化
直接见代码:
public static Configuration GetConfiguration(String fileName)4.TWR-(try-with-resource)
{
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)
{
}
}
该改进让我想起了.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"))--优化的写法
{
}
}