1、 JAVA 1:简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是为家用消费电子产品 发送一个信息的分布式代码系统,通过发送信息控制电视机、冰箱等. 2:简单写出Java特点,写出5个以上,越多越好 简单的、面向对象的、分布式的、安全的、稳定的、与平台无关的、可解释的、多线的、动态的语言。 3:什么是Java? JAVA:一种编程语言 一种开发环境 一种应用环境 一种部署环境 4:请写出Java的版本分类,以及每种版本的应用方向 三种版本:
2、 J2ME:是面向内存有限的移动终端. 为消费性产品设计的 J2SE: 是SUN公司针对桌面开发和低端商务计算方案开发的版本。为笔记本电脑、PC机设计的 J2EE: 是一种利用JAVA 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。 为企业级的、服务器端的高端应用而设计的 5:描述Java技术的主要特性 java虚拟机 垃圾回收 代码安全性 6:描述 Java虚拟机的功能 提供硬件平台规范 解读独立于平台的已编译的字节码 可当作硬件或软件来实现 可以在JAVA技术开发工具上或在WEB浏
3、览器上实现 7:简述Java代码安全性 1.字节码校验 2.沙箱机制,提供的安全机制 8:简述Java代码的运行过程 加载代码 通过类装载器装载CLASS文件 校验代码 由字节码校验 执行代码 由解释器将字节码转换成机器码 9:简述如何搭建Java开发环境 首先下载安装JDK 然后配置环境 1. 配置PATH, 2. 配置CLASSPATH 3. 配置JAVA_HOME 10:简述classpath,path,JAVA_HOME的意义和配置方法 path
4、 操作系统运行环境的路径 classpath JAVA运行应用程序时所需要的类包路径 JAVA_HOME 供需要运行JAVA的程序使用 二: 11:请描述:一个完整的Java文件的代码分几个部分,每部分都起什么作用,大致的写法 package 当前类所在位置 import 当前类运行时所需要的包或类 public class 类名 { 属性定义; 方法定义: 构造方法定义; public static void main(String args []) 例外
5、{ 程序入口 语句; }} 注释 12:Java代码的注释有几种?分别举例说明 1. // 单行注解 2. /* */ 块注释 3. /* * * 文档注释 */ 一三:什么是Java代码的语句,什么是Java代码的块,举例说明 语句 是一行以分号终止的代码,例:int a; 块 是以{ }为边界的一些语句的集合 例:public void tt(){} 14:什么是标示符? 标识符:是赋予变量、类、方法的名称。 一五:标示符定义的
6、规则? 1.首字母只能以字母、下划线、$开头,其后可以跟字母‘下划线、$和数字 2.首字母小写中间用大写字母隔开 3.标识符具有一定的含义 16:什么是关键字? 关键字就是编程语言与机器语言的编码约定 17:true、false、null、sizeof、goto、const那些是Java关键字 true 、false 、null 为JAVA的关键字 一八:Java的基本数据类型有几种?分别是? short int long boolean float double char byte 19:请写出每种基本类型的默认
7、值?取值范围?分别给出一个定义的例子 默认值 取值范围 字节型 : 0 -2^7----2^7-1 字符型 : ' \u0000' 0----2^16-1 short : 0 -2^一五----2^一五-1 int : 0 -2^31----2^31-1 long : 0 -2^63----2^63-1
8、float : 0.0f -2^31----2^31-1 double : 0.0d -2^63----2^63-1 boolean: false true\false 20:在基本类型中,如果不明确指定,整数型的默认是什么类型?带小数的默认是什么类型? 整数类型 默认为 int 带小数的默认为 double 21:如何定义float类型和long型 float f = 1.2f long l = 1.2L 22:什么
9、是变量? 变量:一种在程序中可以改变的标识符 23:变量的定义规则? 1.首字母小写中间用大写字母隔开 其后可以跟字母‘下划线、$和数字 2.具有一定含义 3.首字母必须是字母、$、下划线, 24:请写出Java编码约定中对下列部分的要求:类、属性、方法、包、文件名、变量、 常量、控制结构、语句行、注释 类: 一个类文件中类名要和文件名相同,类名一定要以大写字母开头单词之间用大写字母分隔 属性: 属性名首字母小写中间用大写字母隔开 方法: 方法名首字母小写中间用大写字母隔开 包: 引用包
10、必须写在类文件的开头,有且只能有一个包 全部用小写字母 控制结构:当语句是控制结构的一部分时,即使是单个语句,也应使用大括号将语句 封闭: 语句行:每行只写一个语句,并使用四个缩进的空格,使代码更易读,注意用分号结束; 注释: 用注释来说明那些不明显代码的段落; 常量: 常量名一般用大写字母,单词之间用下划线分隔,一旦赋值不允许修改 25:什么是Javadoc? 按照一定格式生成程序的文档的工具 26:什么是引用类型? 一个用户定义类型, 它可引用类和数组。 27:什么是按值传递?什么是按引用传递? 值传递 : 就是将该值的副本
11、传过去(基本数据类型+String类型的传递,就是按值传递) 按引用传递 : 就是将值的内存地址传过去(除基本数据类型+String以外类型的传递,就是引用传递) 28:那些是按值传递?那些是按引用传递? 基本数据类型+String类型 按值传递 除基本数据类型+String类型以外,比如Model s[] 按引用传递 29:如何创建一个新对象?如何使用对象中的属性和方法? public class S{} 通过对象的实例 用(.)来调用属性和方法; 静态的方法和属性,也可以直接用类(.)来调用; 30:简述new关键字所
12、做的工作 new 关键字就是为事先声明的对象分配一块内存区域; 31:简述”=” 和”==”的功能和区别 "="赋值,"= ="判断= =前后两个值得内存地址是否相等; 区别: = :为赋值表达式 = = :为逻辑表达式 32:什么是实例变量?什么是局部变量?什么是类变量?什么是final变量? 实例变量: 类中定义的变量,即类成员变量,如果没有初始化,会有默认值; 局部变量: 在方法中定义的变量,必须初始化; 类变量: 用static可修饰的属性; final变量: final属性只允许赋值一次,
13、且只能通过构造方法赋值;定义后也就 是一个常量; 33:简述上述各种变量的定义规则和使用规则? 实例变量:它不需要static关键字来声明,只要对象被当作引用,实例变量就将存在; 局部变量:在方法内任意定义变量即为局部变量; 类变量:必须用static修饰; final变量:不可以在修改的 34:a++和++a的区别? a++ : 先使用,后加1 ++a : 先加1,后使用 34:请描述instanceof、?:、&、&&各自的功能 instanceof :用来判断某个实例变量是否属于某种类的类型。
14、 ?: 三目运算符: 表达式1?表达式2:表达式3 如果表达式1为true,执行表达式2,否则执行表达式3 &: 位运算:按位与 &&: 逻辑运算:逻辑与 35:请描述>>、<<、>>>的功能 >> :算术或符号右移位运算符 << :算术或符号右移位左移运算符 >>> :逻辑或非符号右移位运算符 36:请描述什么是强制类型转换?什么是自动类型转换?什么是向上造型? 并分别举例说明 强制类型转换:在一个类型前面加(),来强制转换 long l = 9L; int i = (int)
15、l; 自动类型转换: int i = 5; String str = ""+i; 向上造型:把范围小的造型为范围大的类型, int i = 2; long l = i; 37:请写出完整的if条件控制语句的结构 if(布表达式){ 语 }else{ } 38:请写出完整的switch语句的结构 switch(字符){ case 字符: 语句 break; case 字符: 语句
16、 break; default:语句 } 39:请写出完整的for语句的结构 for(初始语句;条件语句;步长){ } 40: 请写出完整的while语句的结构 while(boolean语句){ } 41:请写出完整的do while语句的结构 do{ }while(boolean语句); 42:请描述break 和 continue的功能和用法 break:终止最近的循环 continue:跳出本次循环,执行下一次循环 //以上不完全 43:定义一个一维的i
17、nt数组,先创建它,并初始化它,给它赋值,然后输出其中的一个值 public class Arr{ public static void main(String args[]){ int a[] = new int[5]; a={1,2,3,4,5};//错误 , 只能在初始化时这样做 a[0]=1; a[1]=2; System.out.println(a[0]); } } 44:定义一个一维的A类型数组,直接定义并赋值,然后输出其中的一个值 public class A{
18、 public static int i; public static void main(String args[]){ A aa = new A(); A bb = new A(); A a[] = {aa,bb}; a[0].i=2; System.out.println(a[0]); } } 45:把上面的数组改成2维的数组 public class A{ public static int i; public static voi
19、d main(String args[]){ A a[][] = new A[5][5]; a[0][0].i=2; System.out.println(a[0][0]); } } 46:举例说明数组拷贝方法的使用:arraycopy方法 public class A{ public static void main(String args[]){ int a[] = new int[5]; int b[] = new int[5]; System.arraycopy(
20、a[5],0,b[5],0,a.length) System.out.println(b[0][0]); } } 二、面向对象 1:OOP(面向对象)语言的三大特征是? 封装性,继承性,多态性 2:请描述方法定义的完整的语法结构 权限修饰符 修饰符 返回类型 方法名(参数) 例外{ 方法体;} 访问权限+访问修饰符+返回值+方法名+参数列表+例外列表+(块)方法内部代码 3:什么是重载?什么情况下出现? 在一个类中出现相同的方法名但参数列表不同时,这种情况就是重载 其本质是创建一个新的成员方
21、法 此方法在同一个类中出现 4:简述重载的规则 1.方法名相同,参数列表不同 2.返回类型可以不同 3.重载父类的方法时访问权限只能放大,例外列表只能少 5:什么是构造和析构方法?功能是? 构造方法:每个类至少有一个构造方法,类构成实例化时调用的方法 1.方法名和类名相同 2.无返回值类型 格式:访问权限 类名 {}; 1.有构造时,则无默认 2.无构造方法时,默认为空(无参数,方法体为空) jc垃圾回收 析构方法:finalize 类销毁
22、时,自动调用方法 当对象在内存中被删除时,自动调用该方法 在此方法中可以写回收对象内部的动态空间的代码 构造方法:类初始化时调用的方法。可写可不写,如果不写就会有一个默认 的构造方法 析构方法:当对象被从内存中删除时调用的方法,在析构成员方法内,可以填写 用来回收对象内部的动态空间的代码 6:简述this和super的功能和用法 this : 访问当前类的属性或方法,不可以在静态方法中使用,在调用其它构造方法时, 必须放在该构造方法的第一行 能
23、调用除构造方法以外所有的属性,方法; 通过This (.) 来调用方法和属性 super :访问父类 super 只能调用父类的方法和属性, 在调用父类的构造方法时必须放在子类构造方法下面的第一行; 通过 Super (.) 来调用父类的属性和方法 7:简述Java的访问修饰符类型?分别有什么功能? public 公开的,任何一个类都有可以访问 private 私有的,只能在本类中被访问 protected 同包同类,只可被它的子类访问 default 只能被同一个包中类访问 8
24、分别说明:在类上、在属性上、在方法上等能使用那些访问修饰符 在类上:public 在方法上: 访问权限:public protected private default 方法修饰符:static final 返回类型 : void 在属性上:public protected private default static final 9:简述什么是包?包的功能 包: 对所定义的多个JAVA
25、类进行分组,将多个功能相关的类定义到一个包(文件)中 功能: 1.易于查找和使用适当的类 2.包不止包含类和接口,还可以包含其它包,形成层次的包空间 3.有助于避免命名冲突 10:请写出5个以上的JDK中的包,以及他们的基本功能 java.awt :包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面 java.lang : 提供java编成语言的程序设计的基础类 java.io : 包含提供多种输出输入功能的类, : 包含执行与网络有关的类,如URL,SCOKET,SEVER
26、SOCKET, java.applet : 包含java小应用程序的类 java.util : 包含一些实用性的类 11:什么是包装类?Java中都有哪些包装类 Boolean Byte Short Integer Long Float Double Charactor 在JDK中针对各种基本类型分别定义相应的引用类型 --------------称为封装类 12:分别表述类的三大特性及其他们的功能 封装性 继承性 多态性 封装:隐藏类的实现细节、迫使用户去使用一个接口去访问数据、使代码更好维护 继承:子类可以直接继
27、承使用父类的方法,程序员只需要做的是定义额外特征或规定将适用的变化 多态性:同一种功能拥有许多不同的实现方式 一三:如何实现继承?继承的规则? public class A extends B{ } 1.单继承性 2.构造方法不能继承 3.super引用父类,调用父类的属性,方法 4.当子类中出现与父类的方法名,返回类型,参数列表相同的方法时要覆盖此方法 14:什么是方法的覆盖?什么情况下出现? 方法覆盖: 子类可以修改从父类继承过来的行为,子类可以创建一个与父类方法有不同功能的方法 在同类型中出现 相同的名称、返回
28、类型 方法名和参数列表的方法时 在父子类时 一五:方法覆盖的规则? 方法名要和父类中被覆盖的方法名相同,返回类型相同 参数列表要和父类中被覆盖方法的参数列表相同 访问权限要大于等于被覆盖方法的权限 例外列表要小于等于被覆盖方法的例外列表 16:如何调用父类的构造方法?如何调用自己的构造方法? 要调用父类的构造方法通过 在子类的构造方法中第一行写super(参数)能给父类传参; 要调用自己的构造方法通过 this(参数)或者直接调; 17:如何确定在多态的调用中,究竟是调用的那个方法? new的是
29、哪一个类就是调用的哪个类的方法 一八:static修饰符的功能是?可以用在什么地方?怎么访问? static 修饰符功能: 1.共用一块内存区域,也就是一个变量或成员方法对所有类的实例都 是相同的 2.静态成员方法和静态变量的优点在于他们能在没有创建类的任何一个 实例的情况下被引用 3.可以用在方法或属性上 访问方式: 1.直接使用类名调 2.new 一个实例,用实例调 19:static的基本规则 1.类中的静态方法不允许调
30、用非静态的属性和方法,只可以调用静态的属性和方法 2.可以用类名直接调用静态类中的属性和方法 3.静态方法中不允许出现this和super 4.静态方法不能被非静态方法覆盖 5.构造方法不允许声明static 6.静态变量为类变量,可以直接调 7.非静态变量为实例变量,通过实例调用 20:final修饰符的功能是?可以用在什么地方? 功能:标记所有通用的功能,不能随意更改 可以 用在类、属性和方法上 21:final的基本规则 final类不能被继承 final成员变量只允许赋值一次
31、且只能通过构造方法里赋值 final局部变量即为常量,只能赋值一次 final方法不允许被子类覆盖 final一般用于标记那些通用性的功能不能随意修改 22:什么是抽象类? 抽象类: 一个类中声明方法存在而不是实现,以及带有对已知行为的方法的实现,这样的类通常被称做抽象类 23:抽象类的规则 类内部至少包含一个没有实现体的方法 用abstract修饰 不能够直接使用抽象类,必须通过子类继承并且实现 24:什么情况下使用抽象类 当一个类的一个或多个方法是抽象类时; 当类是一个抽象类的子类,并且不能为
32、任何抽象方法提供任何实现细节或方法体时; 当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法体时 25:equals方法和”==”的功能和区别 功能:判断对象是否相等 区别: equals方法比较的是对象的值 = =:比较的是对象值的内存地址,对基本数据类型来说==比较的也是值 26:toString方法的功能和基本写法 返回一个String类型 public String toString(){ } 30:String的方法的功能和基本使用方法,请描述5个以上 substring(参数
33、1,参数2); 功能:取字符串中参数1到参数2的的所有字符; "String".subString(0,1); replace(参数1,参数2); 功能:用参数1中的值替换字符串中所有参数2的值 "String".replace(ing,tt); equals(); 功能:判断两个字符串是否相等 "String".equals("tt"); trim(); 功能:去掉字符串两边的空格 "String".trim(); indexof();
34、 功能:查找字符串中参数所在位置,并返回字符串第一个出该参数的下标 "String".indexOf("ing"); split(); 功能:根据参数分割该字符串 "String".split("-"); 31:为什么使用StringBuffer类?有什么功能和优点? --只创建一个对象 –StringBuffer 对象的内容是可以被修改的 –除了字符的长度之外,还有容量的概念 –通过动态改变容量的大小,加速字符管理 32:举例说明如何使用StringBuffer StringBuffer sb
35、 = new StringBuffer(); sb.append("aaa"); sb.flush(); 33:如何给Java代码设置系统属性?如何在程序中使用它们 设置在一个扩展名为properties的文件,内容为key、value的映射例如“a=2”; System.getProperties(); System.setProperties(); 34:简述properties文件的结构和基本用法 结构: key=value 用法: System.getProperties 方
36、法返回系统的Properties 对象。 System.getProperty(String propertyName)方法返回对应名字属性的值。 System.getProperty(String name, String value)重载方法当没有name指定的属性时,返回value 指定的缺省值。 35:什么是接口?接口的定义规则? 接口就是定义多种方法,通过实现接口中所有方法的抽象类. public interface Tt { public void outPut(); public int tt(); } 3
37、6:接口的作用?为什么使用接口? 多重继承 封装、隔离 功能,实现的分离 多态 便于后期维护 接口是可插入性的保证。 37:什么是多重接口 就是一个类实现多个接口 38:描述接口的基本思想? 封装 隔离 接口及相关机制的最基本作用在于:通过接口可以实现不相关类的相同行为, 而不需考虑这些类之间的层次关系。 根据接口可以了解对象的交互界面,而不需了解对象所属的类。 面向对象程序设计讲究“提高内聚,降低耦合”。 39:如何在代码中使用接口? public class MyCast implements Tt
38、{ public void outPut(){} public int tt(){ return 0;}} 40:举例说明如何把接口当作类型使用 public interface Animal(){ public void tt(); } public class Dog implements Animal{ public void tt(){}} Animal ani = new Dog(); 41:如何选择接口和抽象类?为什么? 1.优先选择接口 2.优先使用对象
39、组合,少用继承 3.抽象类一般用在定义子类的行为而父类又有特定行为的子类情况中 4.在接口和抽象类的选择上,必须遵守这样一个原则:行为模型应该总是通过接口而不是抽象类定义。 42:什么是异常? 程序中导致程序中断的一些情况叫做异常,一般程序员可以处理 43:简述处理异常的两种方式? 抛出和catch语句处理 43:简述try块的功能和规则 try块内部一般写一些编程人员认为可能会出现异常的代码,使程序运行不会因为出现异常而中断 44:简述catch块的功能和规则 功能:可以截获所声明的异常,并在语句块内对其进行处理 规则:catch(Exeption e){
40、 System.out.println("this is an Exeption!"); } 45:简述finally块的功能和规则 finally块一般写一些不论是否发生异常都必须执行一次的代码 例如关闭与数据库的连接等 46: 简述throw和throws的功能和使用方法 throw 指编程人员主动抛出一个异常 throw new NullPointerExeption(); throws指程序遇到异常情况自动的被动抛出一个异常 public void test() throws Exeption{} 47:异常的分类? 错误
41、Error): JVM 系统内部错误、资源耗尽等严重情况,程序员不可控制 例外(Exception):其它因编程错误或偶然的外在因素导致的一般性问题,程序 可以控制 48:什么是预定义异常 java程序中预先定义好的异常叫做预定义异常 49:简述自定义异常的规则 写一个类继承Exception 用户自定义异常通常属Exception范畴,依据惯例,应以Exception结尾,应该由人工创建并抛出。 50:什么是断言? 用来证明和测试程序的假设。 51:如何使用断言?举例说明 一种是assert<<布尔表达式>>;另一种是assert<<布尔表达式
42、>>:<<细节描述>>。 assert a= =10 : "这里a等于10"; 52:什么是集合?什么是元素? 可以包含其他对象的简单对象就叫集合 集合框架中所包含的对象就叫做元素 53:描述出Java集合框架中集合的接口关系 Collection----Set和List Set----HashSet和SortedSet List----ArrayList和LinkedList Map----HashMap、SortedMap和TreeMap 54:代码示例:Collection接口的使用,包括如何定义、初始化、赋值、取值、修改值除值 Collecti
43、on col = new ArrayList(); String oldValue = "abcd"; String newValue = "1234"; //增加 col.add(oldValue); Iterator it = col.iterator(); while(it.hasNext()){ //取值 String str = (String)it.next(); if(str.equals(oldValue)){ //删除 col.remove(oldValue); //修改 col.add(newValu
44、e); } } 55:代码示例:List接口的使用,包括如何定义、初始化、赋值、取值、修改值、删值 List col = new ArrayList(); String oldValue = "abcd"; String newValue = "1234"; col.add(oldValue); Iterator it = col.iterator(); while(it.hasNext()){ String str = (String)it.next(); if(str.equals(oldValue)){ col.remove(
45、oldValue); col.add(newValue); } } 56:代码示例:Set接口的使用,包括如何定义、初始化、赋值、取值、修改值、删值 Set col = new HashSet(); String oldValue = "abcd"; String newValue = "1234"; col.add(oldValue); Iterator it = col.iterator(); while(it.hasNext()){ String str = (String)it.next(); if(str.equals(oldV
46、alue)){ col.remove(oldValue); col.add(newValue); } } 57:代码示例:Map接口的使用,包括如何定义、初始化、赋值、取值、修改值、删 Map map = new HashMap(); String oldValue = "abcd"; String newValue = "1234"; //增加 col.put("1",oldValue); Set set = map.keySet(); Iterator it = set.iterator(); while(it.hasNext()
47、){ String key = (String)it.next(); //取值 String value = map.get(key); } //修改 map.put("1",newValue); //删除 map.remove("1"); } 58:描述List接口、Set接口和Map接口的特点 List接口中的对象按一定顺序排列,允许重复 Set接口中的对象没有顺序,但是不允许重复 Map接口中的对象是key、value的映射关系,key不允许重复 59:如何给集合排序? 实现comparable接口 三、IO 1:什么是流
48、可画图说明 字符串分解==============OutStream==========>write()方法写到文件中 2:描述I/O流的基本接口和类的结构 InputStream OutputStream 3:代码示例:如何使用URL流来进行输入输出 try { imageSource = new URL("xmysitex/~info"); } catch (MalformedURLException e) { } 4:什么是Unicode? 是一种字符的编码方式 5:代码示例:如何使用Reader和Writer来进行输入输出 InputS
49、treamReader ir = new InputStreamReader(System.in); OutStreamReader or = new OutStreamReader(System.in); 6:什么是可序列化?如何实现可序列化? 表示一个数据可以按流式输出 实现java.io.Serializable接口 7:代码示例:如何读写对象流 //读 try { String str = "123"; FileOutputStream f = new FileOutputStream("test.txt"); ObjectOutputStream s = new ObjectOutputStream(f); s.writeObject(str); f.close(); }catch(Exception e) { e.printStackTrace(); } //写 try { FileInputStream f = new FileInputStream("test.txt"); ObjectInputStream s = new ObjectInputStream(f); str =(String)s.readObject(); f.close();






