《Java8学习笔记》读书笔记(三)

第2章 从JDK到IDE

2.1 从Hello World开始

2.1.1 撰写Java源代码

在正式撰写程序之前,请先确定你可以看到文档的扩展名。在Windows下默认不显示扩展名,这会造成重新命名文件时的困扰,如果目前在“资源处理器”下无法看到扩展名,在文件夹与选项中进行修改。



图2.1 文件夹选项
接着选择一个文件夹来撰写Java源代码。本书都是在c:\workspace文件夹中撰写程序,请新创建一个“文本文件”,并重新命名文件为HelloWorld.java(默然说话:如果你是初学者,请严格按照大小写的规范在命名文件名,这是非常重要的!)。由于将文本文件的扩展名从.txt改为.java,系统会询问是否更改扩展名,请确定更改,接着在HelloWorld.java上右击,从弹出的快捷菜单中选择编辑命令,并开始写代码(默然说话:本人强烈推荐使用NotePad++,有缩进功能,有关键字变色功能,非常方便,目前国内各软件管理(如金山,360等的软件管理管家之类的软件)均可下载并安装,占用空间不大的。右击之后选择“NotePad++”就可以了)。


图2.2重命名的警告框
这个文件有几点必须注意:
 扩展名是.java。
 文件名与类名必须相同。类名是指class关键字后的名称,这个范例就是HelloWorld这个名称,这个名称必须与HelloWorld.java的文件名相同(默然说话:再次强调,大小写要一致)。
 注意每个字母的大小写。Java程序区分大小写,System和system对Java程序来说是完全不一样的名称。
 空格只能是半角空格或Tab字符。有些初学者可能不小心输入了全角空格符,这很不容易检查出来(默然说话:唉,我觉得如果你真是初学者,还是找个培训机构,那种有老师指导的,跟着学个一年半载的。因为计算机编程真的不是你可以买几本书,看几个视频就可以学会的,有个老师真人指导你,你的进步会很快)。


图2.3 第一个程序:Hello World

  1. 定义类
    class是用来定义类的关键词,之后接上类名称(HelloWorld)。Java程序规定,所有程序代码都要定义在“类”中。Class前有个public关键词,表示HelloWorld类是公开类,就目前为止你只要知道,一个.java文件可定义多个类,但是只能有一个公开类,而且文件名必须与公开类名称相同。
  2. 定义区块(Block)
    在程序中使用大括号“{”和“}”定义区块,大括号两两成对,目的在于区别程序代码范围。例如,程序中HelloWorld类的区块包括了main()方法,而main()方法的区块包括了一句显示信息的程序代码。
  3. 定义main()方法
    程序执行的起点就是程序进入点,Java程序执行的起点是main()方法。规定main()方法的形式一定得是:
    public static void main(String[] args)
    虽然说main()方法是规定,不过其实日后你理解每个关键词的意义,还是可以就每个元素加以解释。main()方法是public成员,表示可以被JVM公开执行;static表示JVM不用生成类实例就可以调用;Java程序执行过程的错误,都是以例外方式处理,所以main()不用传回值,声明为void即可;String[] args可以在执行程序时,取得用户指定的命令行参数。
  4. 编写代码(Statement)
    来看main()中的一行代码:
    System.out.println(“Hello World”);
    代码是程序语言中的一行指令,简单地说,就是程序语言中的“一句话”。注意每句代码的结束要用分号(;),这句描述的作用,就是请系统的输出装置显示一行文字Hello World。
    其实你使用了java.lang包中System类的public static成员out,out参考PrintStream实例,你使用PrintStream定义的println()方法,将指定的字符串(String)输出至文本模式上。println()表示输出字符串后换行,如果使用print(),输出字符串后不会换行。
    其实我真正想说的是:一个基本的Java程序这么写就对了。一下子要接受如此多概念的确不容易,如果现阶段无法理解,就先当这些是Java语法的规定,相关概念在本书之后各章节还会详细解释,届时自然就会了解第一个Java程序是怎么一回事了。

2.1.2 PATH是什么

第1章谈过*.java必须编译为*.class才可以在JVM中执行,Java的编译工具程序是javac。装好JDK之后,javac就会放在JDK安装文件夹的bin文件夹中,我们转到“命令提示行”模式,然后执行相关命令。



图2.4 执行失败!
命令不对?为什么?这是操作系统Windows在报怨,它找不到javac。如果你告诉它javac放在哪里,它就能正常执行了。


图2.5 指定工具程序位置
javac如果编译成功,会静静的结束,所以没有看到信息就是好消息,但是这样下指令实在太麻烦了,每次都要指定路径。能不能让操作系统“记住”这个路径,然后每次只要输入javac命令,操作系统自已会去找到javac呢?
当你输入一个命令而没有指定路径信息时,操作系统会依照一个叫PATH的环境变量中设定的路径顺序,依次寻找各路径下是否有这个指令。可以执行echo %path%来查看目前系统PATH环境变量中包括哪些路径信息。PATH就是操作系统“记住”路径的变量。


图2.6 设定path环境变量
所以,要让操作系统“记住”路径,那就是把该路径添加到PATH变量中即可。在Windows中的命令就是set path=”c:\program files\java\jdk1.8.0_51\bin”;%path%(默然说话:注意在最后结束要加上分号(;)%path%,如果不加,以前的path会被全部丢失,这会是一个很严重的问题,因为你会发现你原来可以执行的各种命令全执行不了啦,搞不好,你得重装系统了。)
设定若是有多个路径,使用分号(;)进行分隔。
不过在“命令提示符”模式中设定,关掉“命令提示符”之后,下次还得重新设定。为了方便,可以在“用户环境变量”或“系统环境变量”中设定path。在windows7/8中可以右击“计算机”图标,在弹出的快捷菜单中选择“属性”,在打开的窗口中单击“高级系统设置”超链接,进入“系统属性”对话框,接着切换至“高级”选项卡,单击“环境变量”按钮,在“环境变量”对话框的“系统变量”列表中编辑PATH变量。(默然说话:最好在系统变量下面编辑,因为这里是一个全局变量,不会因为你换了个用户登录,然后又要重新设置一遍。


设定系统变量

图2.7设定系统变量
在完成相应的path设定之后,一定要记得重新启动“命令提示符”模式,这样刚做的设定才能生效。
另外建议将JDK的bin路径放在Path变量的最前方,因为系统搜索路径时,会从最前的路径开始找,如果找到就会直接执行。如果有重名的命令,放在不同的路径下,那先找到哪个就执行哪个。

2.1.3 JVM与CLASSPATH

完成编译HelloWorld.java之后,相同文件夹下就会出现HelloWorld.class。JVM的可执行文件就是.class,接下来要启动JVM,要求JVM执行HelloWorld。
启动JVM的命令是java,而要求JVM执行HelloWorld时,只要指定类名称就可以了,不用附加.class扩展名,附加.class反而报错。
然后,这里又涉及了一个问题:JVM如何找到所需要执行的class文件?JVM同样需要知道路径才能找到所需要执行的class文件。而JVM使用CLASSPATH这个环境变量来“记住”各种路径。画个表吧。

操作系统 搜索路径 可执行文件
Windows PATH .exe、.bat
JVM CLASSPATH .class

如何在启动JVM时告知可执行文件(.class)的位置?可以使用-classpath(缩写-cp)参数来说明。多路径同样使用分号(;)分隔。路径搜索原则也是按先后顺序搜索,先找到先加载。
另外一个问题,就是JVM比较笨,如果你不提醒它,它是不会搜索当前路径下的类文件的,当前路径我们用点(.)表示。所以通常在classpath里,我们会在最前面写一个“.;”,以提醒JVM首先找下当前路径有没有我们要执行的类文件。
要执行Java程序,不可避免的一定会用到Java提供的类库,这也是Java方便的原因:不仅仅只有个简单的语法支持,还提供了功能丰富好用的类库(默然说话:这就是称Java为平台,而不仅仅把它叫语言的原因),Java的类库通常封装为JAR文件(默然说话:我叫它们“架包”),也就是扩展名为.jar的文件。这种文件使用ZIP格式压缩,里面都是.class文件(默然说话:对,自制jar包的方法就是把自己写的.class文件用zip压缩,然后把扩展名.zip直接重命名为.jar就完成了)。
如何在你的程序中指定这个jar文件的路径呢?其实很简单,使用classpath即可。例如,我们有tool.jar和rt.jar两个类库在c:\lib下面,可以这样写:
java –cp .;c:\lib\tool.jar;c:\lib\rs.jar HelloWorld
上面的这个路径几乎我们每运行一个程序时都是会使用到的classpath,如果每次都这样写实在是很麻烦的。我们还可以新增一个环境变量来设置。操作步骤和前面编辑path环境变量的步骤一样,只是path是Windows已默认存在的变量,我们需要找到它,并进行“编辑”,而classpath却是Windows原来不存在的,所以最后一步不是“编辑”,而是点“新建”按钮。然后增加一个叫classpath的环境变量(默然说话:同样强烈建议在系统变量那一部分去增加,以避免人品错误出现。

2.1.4 编译程序(javac)与CLASSPATH

编译形成类文件与执行类文件一样需要classpath。如果你不告诉它去哪儿找到你的类文件里引用的别的类,那编译只会告诉你一堆找不到的错误信息。
http://openhome.cc/Gossip/JavaEssence/ChickenOrEggFirst.html

2.2 管理源代码与字节码文件

如果程序规模稍大,一堆.java和.class文件放在一起,将会十分混乱,你需要有效率地管理源代码和字节码文件。

2.2.1 编译程序与SOURCEPATH

首先必须解决源代码文件和字节码文件放一起的问题。通常我们总是把源代码文件放在一个叫src的文件夹里,而字节码文件放在一个叫classes的文件夹里。而javac的-sourcepath就是用来在编译程序时指定源代码文件在哪里的参数,-d参数就是用来指定字节码文件放在哪个文件夹里。如下:
javac –sourcepath src –d classes src/Main.java
指定了这样的路径,编译程序(javac)就会自动在src下面自动查找Main的源代码文件及所需要的源代码文件(.java),把编译好的字节码(.class)文件自动放到classes文件夹里了。

2.2.2 使用package管理类

上一节谈到使用sourcepath进行管理类和文件,比起不管理,的确好很多,但还不够好。因为这其实是对文件的管理,并非对类的管理。我们应该把类也分门别类的进行放置,这样使用的过程中才能更方便查找。
一个应用程序会有多很个类彼此合作,目前通常会让很多个团队共同分工,完成应用程序的各个功能,最后再组合在一起。那么若A部门写了个Util并编译为Util.class,B部门也写了个Util并编译为Util.class。整合时,就相互覆盖了,如果连源代码也要统一进行管理,那源代码文件也极有可能相互覆盖。
Java语法中,提供了一个package(包)关键词,可以协助你达到这个目的。
包通常会用组织或者单位的网址命名。举例来说,我的网址是speakermore.com.cn,包就会反过来命名为cn.com.speakermore,由于网址都是独一无二的,这样的命名方式,比较不会与其他组织或单位的包名称发生同名冲突。
当类文件开始使用package进行分类时,就会具有四种管理上的意义:
 原代码文件要放在与package所定义名称层级相同的文件夹中。
 package所定义名称与class所定义名称,共同组成完全限定名(Full Qualified Name)。
 类文件要放置在与package所定义名称相同的文件夹中。
 需要让包可以轻松使用的类或方法必须声明为public。

  1. 源代码文件与包管理
    目前计划将所有源代码文档放在src文件夹中管理,由于没有工具,所以目前必须手动建立文件夹。
    这样做的好处显而易见,日后若不同组织或单位的源码要放在一起管理,就不容易发生源码文件彼此覆盖的问题
  2. 完全限定名
    在源代码中指定使用某个类时,如果是相同包中的类,只要使用类名即可,如果是不同的包,则必须使用完全限定名。
    这样做的好处是,如果另一个组织或单位有同名的类,也不会出现重复的类名。名称冲突问题轻松解决。
  3. 类文件与包管理
    默然说话:此处无解释内容

2.2.3 使用import偷懒

使用包管理,解决了类文件与编写程序时类名称冲突的问题,但若每次写程序时,都要输入完全限定名,会非常麻烦。所以Java提供了一个偷懒的关键字:import。
只要在文件的开头import编写程序时会用到的包名称,你在程序中只要直接写类名就可以了。import让你少打字符,让编译程序多做事情。你就可以偷懒了。“少干活,多挣钱”,真正的好办法。
如果同一个包下会使用到很多类,你可以这样写import:
import cn.com.speakermore.*;
不过有一种情况需要注意。比如你写了一个Date类。

package cn.com.speakermore;
public class Date{
    …
}

然后你在别的类里写了如下代码:

import cn.com.speakermore.*;
import java.util.*;
public class Test{
    public static void main(String[] args){
        Date today;
        …
    }
}

编译时,就会看到错误信息:



图2.8 编译错误:类引用不明确
当编译器分析Test.java时,他会记住,如果遇到不知名的类时,到cn.com.speakermore和java.uitl这两个包下面去找,但是结果它发现这两个包下面都有一个叫Date的类,于是,编译器,醉了。
如果我们遇到这种情况,就必须明确的写出Date是哪个类,也就是用前面提到的完全限定名来描述Date,具体的代码就象这样。

import cn.com.speakermore.*;
import java.util.*;
public class Test{
    public static void main(String[] args){
        //默然说话:带包名的类名称为完全限定名。
        cn.com.speakermore.Date today=new cn.com.speakermore.Date();
        …
    }
}

这样就能过编译了。
在Java中有许多常用类,它们是放在java.lang包下的,所以编译会默认帮你导入这个包,所以我们无需专写个import语句来导入java.lang包(默然说话:当然,你如果你喜欢写,那就写吧,反正然并卵,写不写都一样的。
类在同一个包,也不需要写import,因为编译器看到类名时,就会先在同包中寻找,找不到才会找别的import包。

2.3 使用IDE

通过前面的学习,大家一定已经感觉到了,写个Java程序是如何的麻烦呀,还是去吃碗杂酱面压压惊吧。呵呵~还是考虑使用IDE(integrated Development Environment)吧,IDE可以帮助你搞定这些七七八八的杂碎,让你集中精力去解决你应该重点去解决的问题。

2.3.1 IDE项目管理基础

在Java领域,有太多的IDE,其中有不少是优秀的开放源代码产品。最常见的有Eclipse、Jdeveloper等。不同的IDE可能会有不同的特色,但基本概念是一样的,最重要的是,只要你了解JDK与相关指令操作,就不容易被特定的IDE给限制。
我们将选择NetBeans IDE进行基本介绍,选择它的原因在于,NetBeans直接使用你安装的JDK,而它给予我的们帮助足够方便,更为重要的一点是,它是全中文的。
可以到NetBeans IDE下载页面获取, 它分为很多版本,就我们所范围来看,选择基本版(Java SE)就可以了,当然你也可以选择完全版(All)。(默然说话:我是下载的All
网址:http://netbeans.org/downloads/

默然说话:不知道为何,我现在点开这个链接,打开非常慢,可能我们需要多点耐心等它打开。不着急,慢慢来,会比较快。

图2.9 NetBeans下载页面
下载之后安装,基本上就是点下一步就可以了。
在IDE中要写程序,第一步就是新建项目,在NetBeans下面,可以这样新建项目。

  • (1)选择文件|新建项目…命令,在弹出的”新建项目”对话框的“类别”列表中选择Java文件夹,在“项目”列表中选择“Java应用程序”,接着单击下一步。


图2.10 新建项目

  • (2)在“项目名称”文本框中输入项目名称Hello2,在“项目位置”文本框中输入c:\workspace,注意,“项目文件夹”会保存至”c:\workspace\hello2”。


图2.11 新建项目(点击下一步后)

  • (3)在“创建主类”文本框中输入cn.com.speakermore.Main,这表示会有个Main类放在cn.com.speakermore包中,其中会自动建立main()入口方法,接着单击完成按钮建立新的项目。

图2.12 新建项目完成后NetBeans界面
项目建立后,IDE会在左边显示项目,方便你检视一些项目资源。在图2.13中可以看到“源包”中包含cn.com.speakermore,其中有Main.java,这方便你以包为单位查看源代码文件。“库”中看到使用了JDK1.8,里面有许多的jar文件(默然说话:我读做“驾”包,我还听到有人读作“炸”包,“抓”包的,呵呵,大家看着办吧,反正我是读“驾”包了。实在是不太知道怎么读,那就读做j-a-r包吧),这些表示IDE管理的CLASSPATH会包括这些JAR文件。

图2.13 NetBeansIDE的“项目”选项卡(新建项目后的左侧出现)
点击“项目”右侧的“文件”选项卡,你可以看到实际的文件情况。这是一个以文件夹形式显示的情况。


图2.14 NetBeans的“文件”选项卡
这个就是hello2文件夹里的内容,就目前来说,可先注意build/classes,与src文件夹。classes就是字节码文件(.class)的存放位置,而src就是源文件的存放位置。两个文件夹里都会按package的指定创建对应的文件夹结构。这都是IDE完成的,这就是IDE的作用,让我们少干活,多挣钱。
如果要运行这个项目,可以直接单击工具栏上的“运行”按钮(一个绿色的三角),也可以按F6。在IDE的下方就会弹出“输出”选项卡显示输出结果。


图2.15 NetBeans的“运行”选项卡
在IDE中编辑程序代码,若出现红色虚线,通常表示那是导致编译错误的语法。如果看到红色虚线就把光标移至红色虚线上,就会显示编译错误信息。


图2.16 红色虚线表示有编译错误
对于编译错误,如果按下Alt+Enter组合键,就会给出改错建议,当然你也可以点击左边行号上出现的小灯泡(默然说话:在这个改错提示上,我觉得还是Eclipse比较方便,因为你不需要按任何的快捷键,也不需要把鼠标移动到边上,直接放红虚线上,错误信息和改错建议同时出现)。

2.3.2 使用了哪个JRE

你的计算机中可能不只存在一套JRE。某些程度上,可以将一个java.exe就视作有一套JRE。
如果你在安装JDK时选择安装了JRE,那么你的计算机上就有了2套JRE。那计算机如何决定使用哪个JRE呢?
首先找到java.exe,然后再根据Java.exe的位置寻找可用的JRE。
 是否在java.exe的文件夹下有链接库?
 是否在上一层路径中存在jre文件?
在刚到一个新开发环境时(例如到客户那边去),先确认版本是很重要的一件事。cmd模式下若要确认JRE的版本,可以使用java –version查看。
如果要使用NetBeans来更换JRE,可以先在“工具”|“Java平台”命令,找开“Java平台管理器”对话框,单击“添加平台”按钮。


图2.17 工具菜单
第2步在打开的“添加Java平台”对话框中,选择想要的JDK目录,单击“下一步”按钮。


图2.18 Java平台管理器
第3步确认预设的“平台名称”“平台源”和“平台javadoc”是你想要的设定值后,单击“完成”按钮完成平台添加。


图2.19 确认选择正确,点“完成”按钮
完成平台的建立之后,可以在项目属性中进行更换。

2.3.3 类文件(.class)版本

如果使用新版本JDK编译出字节码文件(.class),在旧版JRE上执行,就会发生错误UnsupportedClassVersionError。
在cmd,可以使用JDK工具程序javap加上-v或-verbose参数,来确认类文件(.class)的版本号。
在Java程序中,可以使用System.getProperty(“java.class.version”)取得JRE支持的类文件版本号。使用System.getProperty(“java.runtime.version”)取得JRE运行时的版本号

图2.20 System.getProperty()的执行结果

默然说话:需要指出,Sun JDK1.0.2的JVM实现支持的类文件版本号为45.0-45.3。1.1.X支持45.0-45.65535(向前兼容),Java 2平台支持45.0-46.0,Java SE 5与6支持49.0-50.0,Java SE 7支持51.0,Java SE 8则支持52.0。

如果要在IDE中设定版本(-source与-target),NetBeans8.0可以在项目上右击,选择属性命令,打开“项目属性”对话框,在左边的“类别”中选择“源”,在右边的“源/二进制格式”列表框中选择JDK8。


图2.21 NetBeans项目属性

2.4 重点复习

在正式开始编写程序之前,请先确定你可以看到文件的扩展名(后缀)。写Java代码时有几点必须注意:
 扩展名是.java。(默然说话:这是源代码文件的标志,不要问我为啥,大家都这么做,你也要一样。)
 文件名必须与公有类的名称相同。(默然说话:同样是规范,没有为什么。而且这个如果不对,IDE会划到你天荒地老的红色波浪线)
 注意每个字母的大小写。(默然说话:同样是规范,没有为什么。想用Java挣钱么?想就给我乖乖遵守!)
 空格只能是英文空格。(默然说话:那边的同学,别挖鼻屎了,好好听着!只能是英文空格,你打个中文空格看我怎么修理你!!!)
 main方法必须是:public static void main(String[] args)(默然说话:看好2件事,第一件事,这句英语的唯一大写字母是String的S,第二件,String后面有个中括号[],中括号,有木有!看到了有木有?!)
 当然输入一个指令而同有指定路径时,计算机首先会在当前路径寻找该指令,如果找不到,计算机就会去path环境变量中指定的路径下去寻找该指令,直到找到第一个为止,如果找不到,就会报错,无法执行该指令。IDE也一样,只不过IDE可以自己设置路径,而不用去设置操作系统提供的path。
 在JVM中执行某个类(.class)文件,就要告诉JVM该类应该在哪个路径下去寻找所用到的类文件,这是通过classpath来设置的,同样IDE也可以用可视化的方式进行设置。当前路径要使用点“.”明确指定。
 Jar包实际就是使用ZIP格式压缩的文件,里面一堆.class。classpath只要指定到放有jar文件的文件夹即可。
 源代码文件可以使用package关键字进行管理,把不同的源文件放到不同的文件夹中,形成文件夹层级。
 package所定义的名称要与文件夹名称对应。
 要跨包使用的类或方法必须声明为公有(public)
 import只是偷懒的关键字,它可以让你不用使用完全限定名

2.5 课后练习

  1. 如果在hello.java中有如下代码:
    public class Hello {
    public static void main(String[] args) {
    System.out.println("Hello World");
    }
    }
    以下描述正确的是()
    A.执行时显示Hello World
    B.执行时出现NotClassDefFoundError
    C.执行时出现找不到主要方法的错误
    D.编译失败

  2. 如果在Main.java中有如下代码:
    public class Main {
    public static void main(String[] args) {
    System.out.println("Hello World");
    }
    }
    以下描述正确的是()
    A.执行时显示Hello World
    B.执行时出现NotClassDefFoundError
    C.执行时出现找不到主要方法的错误
    D.编译失败

  3. 如果在Main.java中有如下代码:
    public class Main {
    public static void main() {
    System.out.println("Hello World");
    }
    }
    A.执行时显示Hello World
    B.执行时出现NotClassDefFoundError
    C.执行时出现找不到主要方法的错误
    D.编译失败

  4. 如果在Main.java中有如下代码:
    public class Main {
    public static void main(string[] args) {
    System.out.println("Hello World");
    }
    }
    A.执行时显示Hello World
    B.执行时出现NotClassDefFoundError
    C.执行时出现找不到主要方法的错误
    D.编译失败

  5. 如果C:\workspace\Hello\classes中有以下源代码编译而成的Main.class
    public class Main {
    public static void main(String[] args) {
    System.out.println("Hello World");
    }
    }
    在“命令提示符”模式下你的工作路径是C:\workspace,那么执行Main类正确的是()
    A.java C:\workspace\Hello\classes\Main
    B.java Hello\classes Main
    C.java –cp Hello\classes Main
    D.以上皆非

  6. 如果C:\workspace\Hello\classes中有以下源代码编译而成的Main.class
    package com.speakermore
    public class Main {
    public static void main(String[] args) {
    System.out.println("Hello World");
    }
    }
    在“命令提示符”模式下你的工作路径是C:\workspace,那么执行Main类正确的是()
    A.java C:\workspace\Hello\classes\Main
    B.java Hello\classes Main
    C.java –cp Hello\classes Main
    D.以上皆非

  7. 如果有个Console类的源代码开头定义如下:
    package com.speakermore;
    public class Console{
    ……
    }
    其完全限定名应该是()
    A.com.speakermore.Console
    B.package.com.speakermore.Console
    C.com.speakermore.class.Console
    D.以上皆非

  8. 如果C:\workspace\Hello\src中有Main.java如下:
    package com.speakermore;
    public class Main{
    public static void main(String[] args){
    System.out.println(“Hello World”);
    }
    }
    “命令提示符”模式下你的工作路径是C:\workspace\Hello,那么编译与执行Main类正确的是()
    A. javac src\Main.java
    java C:\workspace\Hello|classes\Main
    B. javac –d classes src\Main.java
    java –cp classes Main
    C. javac –d classes src\Main.java
    java –cp classes com.speakmore.Main
    D. javac –d classes src\Main.java
    java –cp classes/com/speakermore Main

  9. 如果有个Console类的源代码开头定义如下:
    package com.speakermore;
    public class Console{
    ……
    }
    在另一个类中写import正确的是()
    A.import com.speakermore.Console;
    B.import com.speakermore;
    C.import com.speakermore.*;
    D.import Console;

  10. 关于包以下描述正确的是()
    A.要使用Java SE API的System类必须import java.lang.System;
    B.在程序中import java.lang.System;会发生编译错误,因为java.lang中的类不用import
    C.import 并不影响执行效能
    D.程序中import com.speakermore.Main,执行java指令时只要写下java Main就可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,490评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,493评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,043评论 25 707
  • 2017年.6.26日 对世人,仅是生命中会度过的一天。 对你我,是时间最好的见证。 亲爱的,7周年快乐! ✔01...
    魏然w阅读 473评论 0 1
  • 王小波说,人生很长,一定要和有趣的人在一起。 容貌总会随岁月改变,人会不可避免地衰老,可是对于生活的趣味却是历久弥...
    左岸萧萧阅读 417评论 0 0