《Java™ Programming Language, Fourth Edition》读书笔记-1.1

版权声明:本文为博主抛砖引玉之作,欢迎各位同仁批评指正。转载请注明。 https://blog.csdn.net/baluzju/article/details/52557828

1.1. Getting Started

首先是开宗明义地介绍基本术语和概念:

1、java程序由class构成,class包含成员成员分为字段方法字段表示对象或class的状态,方法是操作字段(状态)的语句集合。语句定义了class的行为:赋值、求值、调用方法、控制执行流。

2、对象是class的实例。若把对象比作零件,class就是工厂。(我觉得应该把虚拟机当作工厂,class当做零件设计图和制造说明?)


然后是HelloWorld,通过它介绍class、方法、语句的写法:

class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, world");
    }
}

范例中使用默认包的好处,还在于不用写类似下面的编译和执行语句,让初学者疑惑

javac com\sun\java\docs\tjpl\package\HelloWorld.java
java com.sun.java.docs.tjpl.package.HelloWorld


这里有两点引起了注意:

1、和c不同,java的main函数不需要返回值,也许是java设计者认为,程序返回一个整数给运行环境的设计太low了?

2、HelloWorld类没有public修饰符,说明它仅是包内可见。但这不能阻止虚拟机调用它的main方法,它也能作为MANIFEST.MF文件中的Main-Class。

这样看来,内部类不管是否private,应该也能用它的main方法作为程序的主方法,不过实际上应该没人这么写。

而且java8支持接口定义静态方法,那么接口也能作为Main-Class了。(有空试试)


balu ~ $ cat Test.java

interface Test
{
        public static void main(String[] args)
        {
                System.out.println("hello,world!");
        }


}
balu ~ $ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) Server VM (build 24.80-b11, mixed mode)
balu~ $ javac Test.java
Test.java:4: error: modifier static not allowed here
        public static void main(String[] args)
                           ^
Test.java:5: error: interface methods cannot have body
        {
        ^
2 errors
balu~ $

balu ~ $ sudo update-java-alternatives -s java-8-oracle
balu ~ $ java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) Server VM (build 25.111-b14, mixed mode)
balu@balu-VGN-CR31-P ~ $ javac Test.java
balu@balu-VGN-CR31-P ~ $ java Test
hello,world!






阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页