java基础知识思考题.docx
- 文档编号:24349602
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:18
- 大小:28.38KB
java基础知识思考题.docx
《java基础知识思考题.docx》由会员分享,可在线阅读,更多相关《java基础知识思考题.docx(18页珍藏版)》请在冰豆网上搜索。
java基础知识思考题
java思考题
1、缩写JDK的含义是什么。
JDK是Java开发工具包(JavaDevelopmentKit)的缩写。
它是一种用于构建在Java平台上发布的应用程序、applet和组件的开发环境。
其中包括了Java编译器、JVM、大量的Java工具以及Java基础API里面是Java类库和Java的语言规范,同时Java语言的任何改进都应当加到其中,作为后续版本发布。
要成为一名程序员,JDK是一种最基本的工具。
(JDK是Javadevelopmenttoolkit,相当于是Java的库函数,是编译,运行java程序的工具包。
)
2、解释Java语言跨平台的技术基础。
因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。
然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。
因此对于Java编程者来说,不需要考虑硬件平台是什么。
所以Java可以跨平台。
3、什么是Java语言的自动垃圾收集。
4、说明J2SE、J2ME、J2EE各自的含义。
J2EE是Java2enterpriseedition是Java的一种企业版用于企业级的应用服务开发
J2SE是Java2standardedition是Java的标准版,用于标准的应用开发
J2ME是Java2MicroEdition是Java的微型版,常用于手机上的开发
J2EE,J2SE,J2ME是java针对不同的的使用来提供不同的服务,也就是提供不同类型的类库。
5、Java的包是什么含义,有哪些作用。
包就是用来装不同java源文件和类文件的文件夹。
作用有两个:
一个是防止重名现象,还有一个是隐藏具体实现。
6、J2SE类库中包含哪些主要的包(即java.*)。
lang util io awt
java.lang包
在所有的JAVAAPI类库中,java.lang包是最重要的,它提供了JAVA语言的核心类库,包含了运行JAVA程序必不可少的系统类,如:
基本数据类型、基本数学函数、字符串处理、线程管理和异常处理类等。
运行JAVA程序时,系统会自动加载java.lang包,既这个包的加载是默认的。
java.io包
java.io包提供了一系列用来读写文件或其他的输入输出流。
其中有基本输入/输出类、缓存流类、比特数组与字符串流类、数据流类、文件流类、管道类、流连接类和异常类等。
java.util包
java.util包提供了JAVA语言中的一些低级的实用工具,如数据结构类、日期类、随机数类、属性类、观测类和异常类等。
java.awt包
java.awt包是JAVA语言用来构建图形用户界面(GUI)的类库,包括许多界面元素和资源。
java.awt包提供JAVA语言中的图形类、组成类、容器类、排列类、几何类、事件类和工具类等。
包
包包含一些与网络相关的类和接口,以方便应用程序在网络上传输信息。
如主机名解析类、实现套接字通信的Socket类和ServerSocket类、资源定位器(URL)类等。
java.applet包
java.applet包是用来实现运行于Internet浏览器中的JAVAAPPLET的工具类库。
它包含于产生Applet的类和用于Applet通信的类。
Applet类称为小应用程序类,通常所说的Applet程序必须集成该类,Applet是一种专门化的面板,需要潜入到HTML网页中,由与JAVA语言兼容的浏览器执行。
java.awt.event包
java.awt.event包是对JDK1.0版本中原有的Event类的一个扩充,它使得程序可以用不同的方式来处理不同类型的事件,该包中定义了许多不同类型的事件监听器类,使每个图形界面元素本身可以处理它上面的事件。
7、Java中关于类、成员变量、成员方法有哪些典型的命名规范。
一切自定义名字的都是标识符,以字母下划线或者美元标志开头
类:
每个单词的首字母大写
方法:
方法名第一个单词小写,从第二个单词开始首字母大写
变量:
变量和方法命名一样
常量:
都用大写
8、Java的源文件结构一般分那些部分。
Java程序的源文件有三种,后缀名分别是.java,.class和.jar。
9、Java类的结构包含哪几个部分。
import
类声明
构造函数
变量定义
方法
10、写出Main函数的原型,说明每项的含义。
public static void main(String[] args)
"public"公有 "static" 静态 "void" 无返回类型 "main()" 方法名 String[] args 一个String[]的参数
11、Java语言的三种注释语法形式及其用法。
三种类型如下:
//注释一行/*一行或多行注释*//**文档注释**/文档注释一般放在一个变量或函数定义?
reg;前,指示在任何自动生成文档系统中调入。
12、Jar文件一般是做什么的?
jar是java中用来对java文件进行打包的,类似于zip文件(其实他的压缩编码方式和zip是一样的)。
一般来说,jar文件是用来发布java程序的,将编译得到的class文件压缩成一个文件,利于管理,也方便使用,java的库文件大都是采用jar 方式发布的.
13、Java的编译和解释都作了什么?
Java既可以被编译,也可以被解释。
通过编译器,可以把Java程序翻译成一种中间代码-称为字节码-可以被Java解释器解释的独立于平台的代码。
通过解释器,每条Java字节指令被分析,然后在计算机上运行。
只需编译一次,程序运行时解释执行。
14、环境变量的作用是什么?
path起什么作用?
classpath呢?
只有设置环境变量才能执行javac及java语句
path是你编写的原文件的地址从path中找原文件编辑后放在pathclass里
classpath是执行javac后.class文件存放的地址
(系统通过环境变量可以找到JAVA的执行文件,一些classpath对应的JAR包。
可以这么理解JAVA起的JVM可以理解是一个小型的OS,所有的程序资源分配和获取系统硬件信息都是通过JVM走底层的包(可能是JAVA程序或者C)与系统进行交互。
同样你也可以给JVM传递一些参数,也就是所谓JVM级别的环境变量。
通常是-DXXX.XXX,然后你就可以在应用中直接取XXX.XXX。
同样一般的系统都会支持一些内核参数,JVM默认的“内核参数”有XmsXmxNewSizeMaxNewSizePermSizeMaxPermSize,Rialto,Xss等等。
)
15、使用JDK怎样编译和运行程序?
配置环境变量(winxp系统):
右键点击我的电脑->属性->高级->环境变量
1.在系统变量栏点新建,出现新建系统变量对话框
变量名填JAVA_HOME
变量值填C:
\ProgramFiles\Java\jdk1.5.0_06(你安装的位置.随版本不同而不同)
2.再新建一个
变量名填classpath
变量值填.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
3.然后在系统变量栏找到变量为Path的选项,点编辑在变量值的末尾添加;%JAVA_HOME%\bin;
16、JBuilder的工程中有哪些典型的子目录,各自存储什么?
Bak子目录,即Java后备文件夹,存放每一次Java更新后的结果。
Classes子目录,即Java类文件夹,存放所有Java类的字节码。
Src子目录,存放最近一次更新的Java源程序。
17、Java的基本数据类型有哪些?
Java编程语言定义了八个原始数据类型(非类类型)和一种特殊类型(类类型)。
原始类型可分为四种:
逻辑类型boolean
字符类型char
整数类型byte、short、int、long
浮点类型double、float
(*简单数据类型:
简单数据类型是不能再简化的、内置的数据类型,由编程语言定义,表示真实的数字、字符和整数。
例如实数、整数、字符和布尔值。
*复合数据类型:
由简单数据类型的组合形成的更大、更复杂的数据类型。
例如类、接口和数字。
)
18、几个整型类型的编码长度和取值范围如何?
IntegerLength
NameorType
Range
8bits
byte
-27...27-1
16bits
short
-215...215-1
32bit
int
-231...231-1
64bits
long
-263...263-1
19、查找IEEE754的浮点数格式编码规范。
20、Java语言怎样书写16进制数。
数字0-9和字母a-f(或其大写A-F)表示0到15这些数,必须在十六进制数之前冠以0x。
21、&&和&两个运算符的区别。
&&是逻辑运算符,两边只能是布尔值,有短路特性。
&是位运算符,两边可以是布尔值也可以是数字,没有短路特性。
22、引用和非引用(简单类型)变量的区别。
(对象:
是按照“类”这个模板建立的,建立的位置则是内存
例如A是一个类。
AX则是创建一个引用变量,X=NEWA()则是在内存中建立一个对象(开辟了1片空间),对象的模板就是A(可以理解为在空间里复制了A类里的变量到空间里去。
此时就可以使用引用变量X去引用对象中的变量了。
)
23、字符串类有哪些主要的方法。
字符串类的常用方法
长度length()
相等比较equals()
大小比较compareTo()
连接concat()
子串substring()
单个字符charAt()
查找子串indexOf()
替换replace()
24、==与equals的区别。
==是指引用是否相同,equals()是指值是否相等。
(equals()是Object里的方法,任何对象都继承Object)
25、使用new操作符创建对象的过程。
对象创建——类的实例化,使用new操作符,创建对象并赋给前面的引用。
如:
Pointp1=newPoint();
虽然分为两步,p1只是Point对象的引用,但习惯性还是称p1为Point对象。
因为Java中表达对象的方法只有引用这一种,不像C++,有变量和指针两种。
26、静态成员变量、实例变量、局部变量分别是何时创建、何时销毁的?
局部变量定义在函数体内,函数被调用时,局部变量才临时的被创建,函数执行完后,局部变量自动被销毁;(全局变量是定义在整个程序空间内的,在开始运行程序时被创建,整个程序执行完了才会销毁;)静态成员变量的生命周期取决于类的生命周期,当类被加载的时候,静态变量被创建并分配内存空间,当类被卸载时,静态变量被摧毁,并释放所占有的内存;类的每一个实例都有相应的实例变量,每创建一个类的实例,java虚拟机为实例变量分配一次内存,实例变量位于堆区中,实例变量的生命周期取决于实例的生命周期,当创建实例时,为实例变量背创建,并分配内存,当实例被销毁时,实例 变量被销毁,并释放所占有的内存空间。
(类的成员变量有两种:
一种是被static关键字修饰的变量,叫类变量或静态变量,一种是没有被static修饰的,叫做实例变量
静态变量和实例变量的区别在于:
类静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享,静态变量可以通过类名直接访问。
静态变量的生命周期取决于类的生命周期,当类被加载的时候,静态变量被创建并分配内存空间,当类被卸载时,静态变量被摧毁,并释放所占有的内存。
类的每一个实例都有相应的实例变量,每创建一个类的实例,java虚拟机为实例变量分配一次内存,实例变量位于堆区中,实例变量的生命周期取决于实例的生命周期,当创建实例时,为实例变量背创建,并分配内存,当实例被销毁时,实例 变量被销毁,并释放所占有的内存空间。
假如成员变量时引用变量,该成员变量结束生命周期时,并不意味着它所引用对象也结束生命周期。
变量的生命周期和对象的生命周期是不同的概念。
)
(局部变量是在函数或方法中的变量,实例变量指的是类的一个实例,就是一个对象,成员变量就是类中的变量(不是方法中的变量!
),类变量是类中的静态变量。
局部、实例、成员变量的作用域和生存周期同局部变量一样(局部变量在定义他们的函数时被创建,而且都在该函数结束时被销毁。
),而类变量如果用public声明则作用域同全局变量,如果是private则作用域只在类的内部,生存周期同全局变量.
成员方法和类方法跟局部变量和类变量的关系一样.)
(局部变量定义在函数内部的变量称为局部变量(也可以叫内部变量),其作用域为块作用域,即只允许定义该变量的块中语句访问该变量。
更准确地说,块作用域的范围是从变量定义处开始,到块的结束处为止。
这里所说的块主要是指复合语句。
因此,定义于一复合语句中的变量,不但其他函数不能访问,该复合语句以外的语句也不能访问,即便是同一复合语句中的语句,如果它位于变量定义处之前,也不能访问该变量(一样遵循先定义后使用的原则)。
这就是“局部”的含义。
关于局部变量的作用域还要说明以下几点:
1.主函数main()中定义的内部变量,也只能在主函数中使用,其它函数不能使用。
同样,主函数也不能使用其它函数中定义的内部变量。
因为主函数也是一个函数,与其它函数是平行关系,应予以注意。
2.形参变量是局部变量,作用域在被调用函数内。
3.允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。
)
(全局变量在函数外部定义的变量称为全局变量(也可以叫外部变量)。
用于记录应用系统的全局信息,也是函数之间交换数据信息的媒介。
以此类推,在函数外部定义的数组就称为全局数组。
全局变量不属于任何一个函数,其作用域是:
从全局变量的定义位置开始,到本文件结束为止。
对于全局变量还有以下几点说明:
(1)全局变量可加强函数模块之间的数据联系,但又使这些函数依赖这些全局变量,因而使得这些函数的独立性降低。
从模块化程序设计的观点来看这是不利的,因此不是非用不可时,不要使用全局变量。
(2)在同一源文件中,允许全局变量和局部变量同名。
在局部变量的作用域内,全局变量将被屏蔽而不起作用。
当然系统不会混淆,并不意味着人也不会混淆,所以应该尽量少用同名变量。
(3)全局变量的作用域是从定义点到本文件结束。
如果定义点之前的函数需要引用这些全局变量时,需要在函数内对被引用的全局变量进行说明。
)
27、什么样的方法适合定义成静态方法(即类方法)?
在使用的时候,不需要实例化,直接使用类名.方法名;使用频率较高的方法用关键字static定义为静态方法,组织在一个类中,静态方法jvm启动后直接加载在内存中,提高访问效率。
如果方法执行过程中不使用对象的属性(也就是非静态成员变量),只是用静态成员变量或者参数传入的信息,这时候方法的处理与对象无关,所以可以设置成静态方法,也应该设置成静态方法。
(什么样的方法适合定义成静态变量?
如果一个成员变量的修改不依赖于任何一个对象个体的数据,那么它就应该是静态的。
如果一个成员变量除了变量初始化代码从来没有被修改过,或者在整个系统中只有一次与对象其它数据无关的修改,那么它就应该是终止的,必然也是静态的。
)
28、子类、父类对象之间的赋值关系如何?
子类对象可以直接赋值给父类对象,实际对象没有任何变化,不过是后者引用了新的对象而已。
但父类对象赋值给子类对象必须进行强制类型转换,而且运行时候还会进行实际的类型检查,类型不匹配将抛出异常。
29、有不可继承的成员变量或成员方法吗?
没有
子类继承父类的所有方法和变量(属性)
private的变量(属性)和方法能被继承不能被引用、访问
30、什么是方法重载、覆盖?
如果在子类中重写了一个与父类中函数原型完全相同的方法,则称为方法覆盖。
如果一个类中有相同名字的方法,称为方法重载,且这些同名方法必须在参数的类型及次序上有所不同。
(返回值类型不起作用。
)
31、This和super的用法有哪些。
(this引用
关键字this是用来引用当前对象的——当然是在类的内部。
在类的定义中,使用形式化的成员变量表示将来执行时候的实际对象成员,如果需要整体形式化地引用将来的对象,就可以使用this。
——“当前对象”是一种站在方法执行的思考角度描述的方式。
this常用在名字冲突(成员名字和方法参数或局部变量名字相同)或参数传递时候。
虽然也是在类的内部调用构造方法的一种形式,但关键字相同但含义不同,且仅限于安排在一个构造方法的首行。
super引用
super代表着当前对象的父类身份。
如果在以this身份访问从父类继承下来的成员上出现麻烦(一般是同名所带来的问题),可以通过它访问父类的成员。
(也仅限于可见成员)。
super也可以用作实参。
虽然也是前述父类构造方法的调用形式,但关键字相同但含义不同,且仅限于安排在一个构造方法的首行。
)
this引用
关键字this是用来引用当前对象的——当然是在类的内部。
this常用在名字冲突(成员名字和方法参数或局部变量名字相同)或参数传递时候。
super引用
super代表着当前对象的父类身份,通过它访问父类的成员。
super也可以用作实参。
32、抽象类有哪些特征规定?
abstract类(抽象类),必须被继承的类,它不能被实例化。
如果一个类包含有抽象方法,它必须被定义为抽象类。
33、抽象方法有哪些特征规定?
abstract方法(抽象方法),如果一个方法必须被子类覆盖,可以定义抽象方法。
34、终止类、终止方法?
终止类(final)
定义终止类,表示不能被继承。
终止方法(final)
定义终止方法,使其不能被子类覆盖。
(终止变量
定义终止变量,使其除了初始化之外,不可以再被改变值。
相当于常数变量。
)
35、实例方法和类方法各是什么含义?
(实例变量(instancevariable):
或叫实例域、实例字段(instancefield),或叫成员变量(membervariable)。
实例的变量,每个实例的变量可能不同。
实例方法(instancemethod):
或叫成员方法(membermethod)。
供实例用的方法,必须要先有实例,才能通过此实例调用实例方法。
类变量(classvariable):
或叫静态域、静态字段(staticfield),或叫静态变量(staticvariable)。
出现在这样的情况下:
一个类的所有实例需要一个公有的属性,比如,一,统计实例个数;二,常量。
类变量与类直接关联在一起。
内存当中只有一个地方存放这个变量。
任何实例都可以修改它的值(前提是它没有被final修饰符修饰,不然就是常量),但是,访问类变量并不需要实例,用类就可以操作了。
类方法(classmethod):
跟类变量的基本特点一样。
供类用的方法,可以没有实例,直接通过类来调用类方法。
类方法(classmethod):
跟类变量的基本特点一样。
供类用的方法,可以没有实例,直接通过类来调用类方法。
从形式上看,类变量和类方法,比一般的变量和方法多了一个static修饰符。
因为这个原因,类变量和类方法也被叫做静态变量和静态方法。
它们的使用方法:
实例方法可以直接访问实例变量,调用实例方法;
实例方法可以直接访问类变量,调用类方法。
但不推荐这么做,原因是不清晰,容易把类变量误认为是实例变量,把类方法误认为是实例方法(借助IDE,它会给出警告信息。
);
类方法可以直接调用类变量和类方法;
类方法不能直接调用实例变量和实例方法;
类方法里面不能使用“this”关键字,因为没有实例存在,“this”不知道引用哪个实例。
)
实例方法(instancemethod):
或叫成员方法(membermethod)。
供实例用的方法,必须要先有实例,才能通过此实例调用实例方法。
类方法(classmethod):
跟类变量的基本特点一样。
供类用的方法,可以没有实例,直接通过类来调用类方法。
供类用的方法,可以没有实例,直接通过类来调用类方法。
36、实例变量和类变量各是什么含义?
实例变量(instancevariable):
或叫实例域、实例字段(instancefield),或叫成员变量(membervariable)。
实例的变量,每个实例的变量可能不同。
类变量(classvariable):
或叫静态域、静态字段(staticfield),或叫静态变量(staticvariable)。
出现在这样的情况下:
一个类的所有实例需要一个公有的属性,比如,一,统计实例个数;二,常量。
类变量与类直接关联在一起。
内存当中只有一个地方存放这个变量。
任何实例都可以修改它的值(前提是它没有被final修饰符修饰,不然就是常量),但是,访问类变量并不需要实例,用类就可以操作了。
37、接口有哪些特征?
和继承的区别?
Java中应该也是不支持多继承的,也就是说一个类只能有一个父类,但一个类可以同时继承多个接口.(这里只作参考,本人不是做Java的)
继承是一种编程思想,接口是一种编程方法,两者没得比.你问得是不是类与接口的区别.类与接口的区别在于,类可以拥有自己的实现,接口则不能,它包含的只是一些约定,另外,接口永远不能被实例化.
38、包装类有哪些?
主要用途?
八个包装类,分别是Boolean、Byte、Character、Short、Integer、Long、Float和Double,
Java为基本类型提供包装类,这使得任何接受对象的操作也可以用来操作基本类型。
java语言建立这8个类,除了体现一下完全面向对象的语言特点之外,解决了一些小的问题,如数集中最大最小等数的常量标志符定义问题、数与串的转换问题、简单数据的对象化问题等等。
(直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。
经过包装的类,功能比原来增强,或者优化性能。
比如在io操作中,就有许多包装类.包装类主要通过“组合”的方式实现扩展。
)
39、对象销毁的方法是什么?
该方法内部一般安排什么内容?
在Java语言中拥有一套完整的对象垃圾回收机制。
即程序开发人员不需要手工的回收废弃的对象。
垃圾回收器将回收无用对象所占用的内存资源。
不过这个垃圾回收器并不是万能的,需要结合其他的对象回收方式,才能够最终解决这个对象回收的问题。
在Java中,总共有三种方式可以用来解决对象回收的问题:
一、垃圾回收器
垃圾回收器是Java平台中用的最频繁的一种对象销毁方法。
垃圾回收器会全程侦测Java应用程序的运行情况。
当发现有对象成为垃圾时,垃圾回收器就会销毁这些对象,并释放这些对象所占用的内存空间。
在这里,程序开发人员需要知道,在哪些情况下垃圾回收器会认为这些对象
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础知识 思考题
![提示](https://static.bdocx.com/images/bang_tan.gif)