第一章 语言基础.docx
《第一章 语言基础.docx》由会员分享,可在线阅读,更多相关《第一章 语言基础.docx(64页珍藏版)》请在冰豆网上搜索。
第一章语言基础
第一章语言基础
考点01源文件
规则01:
源文件是一个包含java代码的文本文件,以java作为文件后缀名。
源文件通过编译产生的可执行的字节代码文件,即类文件,该源文件对应的类文件以.class作为文件后缀名。
该文件中的字符必须满足java语言的语法规定,否则在编译时会产生编译错误。
采用JDK命令行方式编译一个源文件的示例如下:
Javacsourcefilename.java
规则02:
一个源文件最多只能包含一个顶层的public类定义。
如果在一个源文件中存在两个或两个以上的public类定义,则会产生编译错误,但允许没有顶层的public类定义,并且一个源文件可以包含不限数量多个非public类定义。
规则03:
源文件名必须满足java语言标识符的规定。
规则04:
一个源文件可以不包含任何代码定义,即它是一个空文件,编译时不会产生编译错误,一个包含类定义的最小源文件的内容仅为classclassname{}。
规则05:
在一个源文件中,如果存在一个顶层的public类定义,则该源文件名必须与顶层的public类名一致。
如果源文件中没有一个顶层public类定义,则该源文件名可以随意命名,不需要与源文件中定义的任何类名一致,只要符合java语言标识符规定即可。
规则06:
一个源文件共有3种顶层元素,分别为package(包声明),import(输入语句)和class(类声明)。
这3种顶层元素并非必须同时出现,如果同时存在,则必须要按package、import、class的顺序出现,即任何输入语句都出现在所有类定义之前。
如果使用包声明,则包声明必须出现在类各输入语句之前。
规则07:
包是用来组织类的,在源文件中包声明通过关键字package后跟包名称来实现。
包名由一系列以句点作为分隔符的路径名构成。
由于包名称的构成元素映射的是系统路径名,所以包名的字符满足路径名的要求,例如不能包含/、\、:
、*、?
等字符。
注意,一个源文件最多只能包含一个包声明语句。
如果源文件中没有包声明语句,则类被放置在默认的包中。
规则08:
import语句用于引用其他包中的类,以供源文件中的代码使用。
既可以引入一个明确指定的类,例如importjava.util.Dictionary,也可以通过通配符*引入整个包中的所有类,但需要在使用类写全其所在包名,例如java.util.Datenow=newjava.util.Date(),这正是应用import语句解决写全包名烦琐问题的所在。
注意,import语句不同于包声明语句,在一个源文件中,包声明语句只能有一条,而import语句则可以有多条,并用分号隔开。
规则09:
如果在通过通配符*此入的两个不同的包中存在同名的类,例如java.util和java.sql包中都有一个名为date的类,当代码中不加包名直接使用date类时,则会产生编译错误因为编译器无法确定那个包中的同名类被使用。
解决此问题有两种方式,一是明确引入要使用包中的类,二是在使用类时写全包名来明确调用。
规则10:
java.lang包由系统自动引入,不需要明确引入就可使用其中的类。
规则11:
注释语句既可以单独占有一行,也可以放在一行语句的后面。
注释可以出现在源文件中3种顶层元素package、import和class之前。
示例01:
请问,以下哪些描述是正确的?
请选择所有正确答案:
(1)如果package语句存在,则必须出现在源文件的非空白首行。
(2)如果import语句存在,则必须出现在源文件的非空白首行。
(3)如果main()方法存在,则必须出现在源文件的非空白首行。
(4)如果在源文件中声明了一个public接口,则其名称必须和源文件名一致。
答案:
(1)(4)
详解:
本题考查的核心是java源程序和结构。
选项
(1)正确,因为java语言规定,package顶层元素必须出现在源程序的首行。
即时于注释行之后,所有非注释语句之前,包括顶层元素Import语句和Class定义语句。
选项
(2)错误,因为java语言import顶层元素只有当没有package顶层元素时,才必须位于首行。
如果存在顶层元素时,则必须位于package顶层元素之后,其他语句之前。
选项(3)错误,因为java语言没有规定main()方法必须位于首行,且由于main()方法属于类,其正确位置应位于类体内。
选项(4)正确,因为java语言规定源文件的文件名必须和公共类名相同。
示例02:
请问,为了使一个名为MyClass的public类成功编译,需满足以下哪些条件?
请选择一个正确答案:
(1)MyClass类中必须定义一个正确的main()方法。
(2)MyClass类必须定义在MyClass.java源文件中。
(3)MyClass类必须定义在MyClass包中。
(4)MyClass类必须被导入。
答案:
(2)
详解:
本题考查的核心是源文件中类的限定,一个Java源文件中可以包含不受数量限制的多个非公共类定义,但只能包含一个公共类定义,因为每个被声明为public的类都必须而且只能被包含在自己的源文件中,该公共类名要和源文件名致,所以只有选项
(2)正确。
选项
(1)错误,因为一个类中可以没有main()方法,main()方法只是作为Java应用程序的入口而已。
示例03:
请问,现有一个Java源文件,其中包含有一个名为Example的public类,为了成功编译该文件,需要满足以下哪些条件?
请选择一个正确答案:
(1)源文件必须导入java.lang包。
(2)源文件必须声明一个main()方法。
(3)源文件名必须为Example.java。
(4)源文件必须具有package包语句。
答案:
(3)
详解:
本题考查的核心是源文件名的限定,一个Java源文件名必须和其中惟一的顶层public类名一致,所以只有选项(3)正确,选项
(1),
(2)和选项(4)是否存在,与源文凭是否能编译成功无关。
示例04:
请问,以下哪些是正确的Java注释形式?
请选择所有正确答案:
(1)\\Thisisacomment.
(2)/*Thisisacomment.*/
(3)/**Thisisacomment.*/
(4)\*Thisisacomment.*\
答案:
(2)(3)
详解:
本题考查的核心是Java注释的正确书写形式,Java语言共有两种注释,一种是多行注释,以/*开头,跨越多行,最后以*/结束,另一种是单行注释,以//开头,没有结束标记,表示这一行的所有内容都是注释。
因此,只有选项
(2),(3)和注释格式正确,而选项
(1),(4)的注释格式不正确。
示例05:
请问,为了使一个名为Example的类可以成功编译、运行,必须满足以下哪些条件?
请选择正确答案:
(1)Example类必须定义在Example.java文件中。
(2)Example类必须声明为public类。
(3)Example类必须定义一个正确的main()方法。
(4)Example类必须导入java.lang包。
答案:
(3)
详解:
本题考查的核心是Java应用类的限定。
本题材的难点在于实现“成功运行”。
选项
(1)错误。
因为一个Java类并不需要和源文件名一致,除非它是源文件中惟一的public类。
选项
(2)错误,如果Example类不是名为源文件中惟一的类,则不必声明为public类,选项(4)错误,因为java.lang包是由虚拟机自动导入类的,选项(3)正确,因为题目要求该是能够成功运行,因此该类就必须声明一个main()方法来作为执行的入口,如果没有main()方法,照样可正常编译,但无法执行。
示例06:
请问,以下哪些修饰符不能用于顶层类?
请选择一个正确答案:
(1)public
(2)private
(3)abstract
(4)final
答案:
(2)
详解;本题考查的核心是顶层类的限制。
在Java中规定,能够应用在一个非内部类即顶层类的访问修饰符只有public一个。
一个顶层类规定它不能是一个私有类,即不能用private修饰符修饰。
其实,这个道理很简单,如果该顶层类为私有,那么该类就无法被访问,也就失去存在的意义。
考点02关键字和标识符
规则01:
Java语言中共有51个关键字和保留字。
abstract
booleanbreakbyte
casecatchcharclassconstcontinue
defaultdodouble
elseextends
falsefinalfinallyfloatfor
goto
ifimplementsimportinstanceofintimterface
long
nativenewnull
packageprivateprotectedpublic
return
shortsrsticstricftpsuperswithsynchronized
thisrhrowthrowstransienttruetry
voidvolatile
while
规则02:
goto和const是保留字,尽管在Java语言中末被使用,但程序员不能使用其作为标识符。
规则03:
Java语言中规定,标识符不能使用规定的关键字和保留字,并且标识符只能以字母、$或_开头,随后的字符只能是字母、$、_和数字。
示例01:
请问,以下哪些是Java中合法的标识符?
请选择所有正确答案:
(1)_xpoints
(2)r2d2
(3)bBb$
(4)set-flow
(5)thisisCrazy
答案:
(1)
(2)(3)(5)
详解:
本题考查的核心是标识的正确表示,选项(4)错误,因为-不是Java中构成标总值符和合法字符。
示例02:
请问,以下哪些是合法变量名?
请选择氖正确答案:
(1)_int
(2)%large
(3)$fred
(4)integer
(5)2much
答案:
(1)(3)(4)
详解:
本题考查的核心是标识符的正确表示,选项
(2)错误,因为%不是Java中构成标识符的合法字符。
选项(5)错误,尽管数字是构成Java标总值符的合法字符,但不能以数字作为标识符开头字符。
示例03:
请问,以下啊些是Java中的合法标识符?
请选择所有正确答案:
(1)%id
(2)$id
(3)_id
(4)#id
答案:
(2)(3)
详解:
本题考查的核心是标识符的正确表示,选项
(1)错误,因为%不是Java中构成标识符的合法字符,选项(4)错误,因为#不是Java中构成标识符的合法字符。
示例04:
请问,以下哪些是Java中的合法标识符?
请选择正确答案:
(1)my-id
(2)my_id
(3)101ids
(4)id101
答案:
(2)(4)
详解:
本题考查的核心是标识符的正确表示。
选项
(1)错误,因为-不是Java中构成标识符的合法字符。
选项(3)错误,尽管数字是构成Java标识符,但不能以数字作为标只符开头字符。
示例05:
请问,以下哪些是合法的标识符?
请选择所有正确答案:
(1)%abcd
(2)Sabcd
(3)1abcd
(4)package
(5)_a_long_name
答案:
(2)(5)
详解:
本题考查的核心是标识符的正确表示。
选项
(1)错误,因为%符号不是Java中构成标识符的合法字符,选项(3)错误,尽管数字是构成Java标识符的合法字符,但不能以数字1作为标识符开头字符。
选项(4)错误,因为package是Java语言中的保留字,它不能作为标识符使用。
示例06:
请问,以下哪此是Java中合法的关键字?
请选择所有正确答案:
(1)array
(2)boolean
(3)integer
(4)protect
(5)super
答案:
(2)(5)
详解:
本题考查的核心是Java中的合法关键字的辨认。
选项
(1)错误,因为Java语言中数组为一个对象,声明一个数组采用元素类型表示,并无关键字array。
选项(3)错误,因为integer代表一个整型封装器,不是关键字。
选项(4)错误,因为关键字protect的正确形式应为protected。
示例07:
请问,以下哪些是Java语言中合法的关键字?
请选择所有正确答案:
(1)then
(2)synchronized
(3)volatile
(4)transient
(5)this
答案:
(2)(3)(4)(5)
详解:
本题考查的核心是Java中的合法关键字的辨认,选项
(1)错误,因为then关键字在VB、pascal等语言中用于if条件语句结构中,而在Java语言中的if结构为if{}else{},不需要then关键字。
示例08:
请问,以下哪些是Java语言中的关键字?
请选择所有正确答案:
(1)run
(2)default
(3)implement
(4)import
答案:
(2)(4)
详解:
本题考查的核心是Java中的合法关键字的辨认。
选项
(1)错误,因为run关键字未在Java语言中定义。
选项(3)错误,因为关键字implement的正确形式应为impements,代表类实现某接口。
示例09:
请问,以下哪些是Java中定义的合法关键字?
请选择所有正确答案:
(1)NULL
(2)sizeof
(3)friend
(4)extends
(5)synchronized
答案:
(4)(5)
详解:
本题考查的核心是Java中的合法关键字的辨认。
选项
(1)错误,Java中的关键字都是小写字符,不能有大写字符存在。
选项
(2)错误,不像C++语言中有运算符sizeof,其在Java中未有定义,因为Java中所有基本类型的大小都是固定的。
选项(3)错误,因为关键字friend不是Java语言中定义的合法关键字。
Java语言中规定,在属性或类前不加任何访问修饰符,其效果同C++中的friendly.
示例10:
请问,以下哪些是Java中定义的合法关键字?
请选择一个正确答案:
(1)NULL
(2)null
(3)extends
(4)Main
答案:
(2)(3)
详解:
本题考查的核心是Java中的合法关键字的辨认。
选项
(1)和选项(4)错误,因为Java中的关键字都是小写字符,不能有大写字符存在。
示例11:
请问,以下哪些是Java中定义的合法关键字?
请选择所有正确答案:
(1)interface
(2)sizeof
(3)super
(4)volatile
答案:
(1)(3)(4)
详解:
三题考查的核心是Java中合法关键字的辨认,选项
(2)错误,sizeof用在C和C++语言中,在C和C++语言中,不同的数据在不同的机器上可能有不同的大小,通过sizeof可以实现“移植”,但在Java中不需要sizeof运算来满足这方面的需要,因为所有数据类型在所有机器上的大小都是相同的。
考点03基本数据类型
规则01:
Java语言中共有8种基本数据类型,分别为布尔型(boolean)、字符型(char)、字节型(byte)、短整型(short)、整型(int)、长整型(long)、单精度型(float)和双精度型(double)。
规则02:
8种基本数据类型的有效字节表示位数。
类型有效比特数类型有效比特数
boolean1int32
byte8float32
char16long64
short16double64
规则03:
Java语言中的boolean数据类型的取值只能为true或false,不像其他语言,
例如C++,可以允许用整型值代替true或false。
规则04:
Java语言中共有4种带符号的整数型基本数据类型,分别为byte、short、int和long。
规则05:
4种带符号的整数基本数据类型的取值范围也有规定。
类型有效字节数最小值最大值
byte8-2727-1
short16-215215-1
int32-231231-1
long64-263263-1
取值范围计算公式为2(numberofbit-1)到2(numberofbit-1)-1.最小值和最大值中底数2的指数均比对应类型的有效字节数小1.
规则06:
java语言中的char基本数据类型属于整数型,但是无符号的整数型其取值范围为0~216-1.
规则07:
java语言中的字符型是基于16位的统一字符集,不是基于7位的ASCII字符集.为了和ASCII字符集兼容,统一字符集包括了ASCII字符集,即用高9位为0的字符映射为ASCII字符集中对应编码的字符。
也就是说,高9位为0,低7位和ASCII字符集中对应字符的编码一致。
例如,65在ASCII字符集和统一字符集中均代表大写字母A。
规则08:
Java语言中共有两种浮点型基本数据类型,分别为float和double,它们对应的封装类Float和Double都定义有NaN、POSITIVE_INFINITY、NEGATIVE_INFINITY常量,用于表示非正常运算结果,NaN(NotaNumber)常量类属性代表运算结果是一个非数值,POSITIVE_INFINITY常量类属性代表正无限大,NEGATIVE_INFINITY常量类属性代表负无限大。
注意,尽管两个INFINITY常量代表无限值,但其只是一个特殊数值,而不是非数值,这一点不同于NaN常量类属性。
示例01:
请问,以下哪个是int型数据的正确取值范围?
请选择一个正确答案:
(1)取决于编译器。
(2)-231..231-1
(3)-231-1..231
(4)-215..215-1
(5)-215-1..215
答案:
(2)
详解:
本题材考查的核心是int型数据取值范围,int型是32位的带符号数据类型,其取值范围为-232-1..232-1-1,即选项
(2)(-231..231-1)正确。
示例02:
给出以下代码,请问变量X的有效取值范围?
intx;
请选择一个正确答案:
(1)-231..231-1
(2)-231-1..231
(3)-215..215-1
(4)-215-1..215
(5)取决于运行平台。
答案:
(1)
详解:
本题考查的核心依然是int型数据的取值范围,只不过换了一种提问方式和范围表达方式。
示例03:
请问,字符型数据的取值范围是什么?
请选择一个正确答案:
(1)0..216
(2)0..216-1
(3)0..215
(4)0..215-1
答案:
(2)
详解:
本题考查的核心是字符型数据的取值范围。
字符型是一个不带符号的16位整数,其取值范围为0..216-1,因此选项
(2)正确。
注意,char属于整数型,但它是惟一的无符号整数型。
示例04:
请问,字节基本数据类型的取值范围是什么?
请选择一个正确答案:
(1)0..+255
(2)-127..+128
(3)-128..+127
(4)0..65535
(5)-32767..+32768
答案:
(3)
详解:
本题考查的核心是字节型数据的取值范围。
字节型是一个带符号8位整数,其取值范围为-27..27-1即-128..+127,所以选项(3)正确。
示例05:
请问,以下哪些是短整型数据的取值范围?
请选择一个正确答案:
(1)0..216
(2)-216..216
(3)-215..215
(4)-215..215-1
答案:
(4)
详解:
本题考查的核心是短整型数据的取值范围。
短整型是一个带符号的16位整数,其取值范围为-215..215-1,所以选项(4)正确。
示例06:
请问,Java语言中一个长整数由几位字节表示?
请选择一个正确答案:
(1)取决于编译器。
(2)2
(3)4
(4)8
(5)64
答案:
(5)
详解:
本题考查的核心是长整型数据的有效字节表示位数,选项(5)正确,因为long型数据的有效字节表示位数为64位,选项
(1)错误,因为Java语言中的数据类型长度是独立于平台的,与具体编译器无关。
示例07:
请问,以下哪些代码片断正确?
请选择所有正确答案:
(1)publictransientstaticfinalint_FRAMEX=850;
(2)this(“a”,”b”);
(3)privatetransientstaticfinalint_FRAMEX=850;
(4)booleanb=0;
答案:
(1)
(2)(3)
详解:
本题材考查的核心是数据类型的正确取值。
选项(4)错误,因为Java语言中boolean型的取值只能为true或false,不像其他语言(例如C++)可以允许用整型值0、1代替false和true。
示例08:
请问,以下哪些描述是正确的?
请选择所有正确答案:
(1)字符型char具有16位宽度。
(2)Unicode编码字符具有16位宽度。
(3)Unicode编码字符具有32位宽度。
(4)UTF编码字符具有24位宽度。
答案:
(1)
(2)
详解:
本题考查的核心是字符型数据的有效字节表示位数。
Java语言中的字符型是基于16位的统一字符编码集,不像C和C++中的8位字符。
这是因为8位字符只能表示255个字符,这对早期基于U.S./English字母表的计算机技术已是足够。
但是要适应现在所有国家的字母有是远远不够的,所以采用16位字符,这样可以表示出65000以上的不同字符,因此选项
(1)、
(2)正确。
示例09:
给出以下代码,请问该程序的运行结果是什么?
classExample{
publicstaticvoidmain(Stringargs[]){
booleanflag=false;
if(flag=true){
System.out.println(“true”);
}
else{
System.out.println(“false”);
}
}
}
请选择一个正确答案:
(1)代码编译失败,if语句错误。
(2)代码编译成功,但在运行期时if语句处抛出异常。
(3)打印输出true。
(4)打印输出false。
(5)无内容输出。
答案:
(3)
详解:
本题考查的核心是布尔型数据的使用。
Java语言中的boolean类型的取值只能为true或false。
本题的难点在于if表达式不是一个比较表达式而是一个赋值表达式,实际上if表达式只要其最终运算结果为一个确定的布尔型数值即可,而不必为一个逻辑表达式。
示例中由于flag取值为true,执行System.out.println(“true”)语句,最终输出结果为true,所以选项(3)正确。
示例10:
请问,以下啊个描述正确?
请选择所有正确答案:
(1)int类型是一个32位的有符号整数值。
(2)short类型是一个16位的无符号整数值。
(3)char类型是一个16位的Unicode编码字符。
(4)float类型是一个64位的浮点数值。
(5)long类型是一个64位的有符号整数值。
答案:
(1)(3)(5)
详解:
本题考查的核心是基本型数据的有效字节表示位数。
各数据类型具体有效字节数参考规则02