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