Java知识点解析
JAVA
1:简述Java的基本历史
java起源于SUN公司的一个GREEN的项目,其原先目的是为家用消费电子产品
发送一个信息的分布式代码系统,通过发送信息控制电视机、冰箱等.
2:简单写出Java特点。写出5个以上,越多越好
简单的、面向对象的、分布式的、安全的、稳定的、与平台无关的、可解释的、多线的、动态的语言。
3:什么是Java?
JAVA:一种编程语言
一种开发环境
一种应用环境
一种部署环境
4:请写出Java的版本号分类及应用方向
三种版本号:
J2ME:是面向内存有限的移动终端. 为消费性产品设计的
J2SE: 是SUN公司针对桌面开发和低端商务计算方案开发的版本号。
为笔记本电脑、PC机设计的
J2EE: 是一种利用JAVA 2平台来简化企业解决方式的开发、部署和管理相关的复杂问题的体系结构。 为企业级的、server端的高端应用而设计的
5:描写叙述Java技术的主要特性
java虚拟机
垃圾回收
代码安全性
6:描写叙述 Java虚拟机的功能
提供硬件平台规范
解读独立于平台的已编译的字节码
可当作硬件或软件来实现
能够在JAVA技术开发工具上或在WEB浏览器上实现
7:简述Java代码安全性
1.字节码校验
2.沙箱机制,提供的安全机制
8:简述Java代码的执行过程
载入代码 通过类装载器装载CLASS文件
校验代码 由字节码校验
运行代码 由解释器将字节码转换成机器码
9:简述怎样搭建Java开发环境
首先下载安装JDK 然后配置环境
1. 配置PATH,
2. 配置CLASSPATH
3. 配置JAVA_HOME
10:简述classpath,path,JAVA_HOME的意义和配置方法
path 操作系统执行环境的路径
classpath JAVA执行应用程序时所须要的类包路径
JAVA_HOME 供须要执行JAVA的程序使用
二:
11:请描写叙述:一个完整的Java文件的代码分几个部分,每部分都起什么作用,大致的写法
package 当前类所在位置
import 当前类执行时所须要的包或类
public class 类名 {
属性定义;
方法定义:
构造方法定义;
public static void main(String args []) 例外{ 程序入口
语句;
}}
凝视
12:Java代码的凝视有几种?分别举例说明
1. // 单行注解
2. /* */ 块凝视
3. /* *
* 文档凝视
*/
13:什么是Java代码的语句,什么是Java代码的块。举例说明
语句 是一行以分号终止的代码,例:int a;
块 是以{ }为边界的一些语句的集合 例:public void tt(){}
14:什么是标示符?
标识符:是赋予变量、类、方法的名称。
15:标示符定义的规则?
1.首字母仅仅能以字母、下划线、$开头,其后能够跟字母‘下划线、$和数字
2.首字母小写中间用大写字母隔开
3.标识符具有一定的含义
16:什么是keyword?
keyword就是编程语言与机器语言的编码约定
17:true、false、null、sizeof、goto、const那些是Javakeyword
true 、false 、null 为JAVA的keyword
18:Java的基本数据类型有几种?各自是?
short int long boolean float double char byte
19:请写出每种基本类型的默认值?取值范围?分别给出一个定义的样例
默认值 取值范围
字节型 : 0 -2^7----2^7-1
字符型 : ' \u0000' 0----2^16-1
short : 0 -2^15----2^15-1
int : 0 -2^31----2^31-1
long : 0 -2^63----2^63-1
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:什么是变量?
变量:一种在程序中能够改变的标识符
23:变量的定义规则?
1.首字母小写中间用大写字母隔开 其后能够跟字母‘下划线、$和数字
2.具有一定含义
3.首字母必须是字母、$、下划线,
24:请写出Java编码约定中对下列部分的要求:类、属性、方法、包、文件名称、变量、
常量、控制结构、语句行、凝视
类: 一个类文件里类名要和文件名称同样。类名一定要以大写字母开头单词之间用大写字母分隔
属性: 属性名首字母小写中间用大写字母隔开
方法: 方法名首字母小写中间用大写字母隔开
包: 引用包必须写在类文件的开头,有且仅仅能有一个包 所实用小写字母
控制结构:当语句是控制结构的一部分时,即使是单个语句。也应使用大括号将语句
封闭:
语句行:每行仅仅写一个语句,并使用四个缩进的空格,使代码更易读。注意用分号结束;
凝视: 用凝视来说明那些不明显代码的段落。
常量: 常量名一般用大写字母,单词之间用下划线分隔。一旦赋值不同意改动
25:什么是Javadoc?
依照一定格式生成程序的文档的工具
26:什么是引用类型?
一个用户定义类型, 它可引用类和数组。
27:什么是按值传递?什么是按引用传递?
值传递 : 就是将该值的副本传过去(基本数据类型+String类型的传递,就是按值传递)
按引用传递 : 就是将值的内存地址传过去(除基本数据类型+String以外类型的传递。就是引用传递)
28:那些是按值传递?那些是按引用传递?
基本数据类型+String类型 按值传递
除基本数据类型+String类型以外。比方Model s[] 按引用传递
29:怎样创建一个新对象?怎样使用对象中的属性和方法?
public class S{}
通过对象的实例 用(.)来调用属性和方法;
静态的方法和属性,也能够直接用类(.)来调用;
30:简述newkeyword所做的工作
new keyword就是为事先声明的对象分配一块内存区域;
31:简述”=” 和”==”的功能和差别
"="赋值,"= ="推断= =前后两个值得内存地址是否相等;
差别:
= :为赋值表达式
= = :为逻辑表达式
32:什么是实例变量?什么是局部变量?什么是类变量?什么是final变量?
实例变量: 类中定义的变量,即类成员变量,假设没有初始化,会有默认值;
局部变量: 在方法中定义的变量,必须初始化。
类变量: 用static可修饰的属性;
final变量: final属性仅仅同意赋值一次,且仅仅能通过构造方法赋值;定义后也就
是一个常量;
33:简述上述各种变量的定义规则和使用规则?
实例变量:它不须要statickeyword来声明,仅仅要对象被当作引用,实例变量就将存在。
局部变量:在方法内随意定义变量即为局部变量;
类变量:必须用static修饰;
final变量:不能够在改动的
34:a++和++a的差别?
a++ : 先使用。后加1
++a : 先加1。后使用
34:请描写叙述instanceof、?:、&、&&各自的功能
instanceof :用来推断某个实例变量是否属于某种类的类型。
?: 三目运算符:
表达式1?表达式2:表达式3
假设表达式1为true,运行表达式2。否则运行表达式3
&: 位运算:按位与
&&: 逻辑运算:逻辑与
35:请描写叙述>>、<<、>>>的功能
>> :算术或符号右移位运算符
<< :算术或符号右移位左移运算符
>>> :逻辑或非符号右移位运算符
36:请描写叙述什么是强制类型转换?什么是自己主动类型转换?什么是向上造型?
并分别举例说明
强制类型转换:在一个类型前面加(),来强制转换
long l = 9L;
int i = (int)l;
自己主动类型转换:
int i = 5;
String str = ""+i;
向上造型:把范围小的造型为范围大的类型,
int i = 2;
long l = i;
37:请写出完整的if条件控制语句的结构
if(布表达式){
语
}else{
}
38:请写出完整的switch语句的结构
switch(字符){
case 字符: 语句
break;
case 字符: 语句
break;
default:语句
}
39:请写出完整的for语句的结构
for(初始语句;条件语句;步长){
}
40: 请写出完整的while语句的结构
while(boolean语句){
}
41:请写出完整的do while语句的结构
do{
}while(boolean语句);
42:请描写叙述break 和 continue的功能和使用方法
break:终止近期的循环
continue:跳出本次循环,运行下一次循环
//以上不全然
43:定义一个一维的int数组,先创建它。并初始化它。给它赋值,然后输出当中的一个值
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{
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 void 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(a[5],0,b[5],0,a.length)
System.out.println(b[0][0]);
}
}
二、面向对象
1:OOP(面向对象)语言的三大特征是?
封装性。继承性,多态性
2:请描写叙述方法定义的完整的语法结构
权限修饰符 修饰符 返回类型 方法名(參数) 例外{
方法体;}
訪问权限+訪问修饰符+返回值+方法名+參数列表+例外列表+(块)方法内部代码
3:什么是重载?什么情况下出现?
在一个类中出现同样的方法名但參数列表不同一时候。这样的情况就是重载
其本质是创建一个新的成员方法
此方法在同一个类中出现
4:简述重载的规则
1.方法名同样,參数列表不同
2.返回类型能够不同
3.重载父类的方法时訪问权限仅仅能放大。例外列表仅仅能少
5:什么是构造和析构方法?功能是?
构造方法:每一个类至少有一个构造方法,类构成实例化时调用的方法
1.方法名和类名同样
2.无返回值类型
格式:訪问权限 类名 {}。
1.有构造时,则无默认
2.无构造方法时,默觉得空(无參数,方法体为空)
jc垃圾回收
析构方法:finalize
类销毁时,自己主动调用方法
当对象在内存中被删除时,自己主动调用该方法
在此方法中能够写回收对象内部的动态空间的代码
构造方法:类初始化时调用的方法。可写可不写,假设不写就会有一个默认
的构造方法
析构方法:当对象被从内存中删除时调用的方法。在析构成员方法内。能够填写
用来回收对象内部的动态空间的代码
6:简述this和super的功能和使用方法
this : 訪问当前类的属性或方法,不能够在静态方法中使用,在调用其他构造方法时,
必须放在该构造方法的第一行
能调用除构造方法以外全部的属性,方法;
通过This (.) 来调用方法和属性
super :訪问父类
super 仅仅能调用父类的方法和属性,
在调用父类的构造方法时必须放在子类构造方法以下的第一行。
通过 Super (.) 来调用父类的属性和方法
7:简述Java的訪问修饰符类型?分别有什么功能?
public 公开的,不论什么一个类都有能够訪问
private 私有的,仅仅能在本类中被訪问
protected 同包同类,仅仅可被它的子类訪问
default 仅仅能被同一个包中类訪问
8:分别说明:在类上、在属性上、在方法上等能使用那些訪问修饰符
在类上:public
在方法上: 訪问权限:public protected private default
方法修饰符:static
final
返回类型 : void
在属性上:public protected private default
static
final
9:简述什么是包?包的功能
包: 对所定义的多个JAVA类进行分组,将多个功能相关的类定义到一个包(文件)中
功能: 1.易于查找和使用适当的类
2.包不止包括类和接口,还能够包括其他包,形成层次的包空间
3.有助于避免命名冲突
10:请写出5个以上的JDK中的包,以及他们的基本功能
java.awt :包括构成抽象窗体工具集的多个类,用来构建和管理应用程序的图形用户界面
java.lang : 提供java编成语言的程序设计的基础类
java.io : 包括提供多种输出输入功能的类,
java.net : 包括运行与网络有关的类。如URL,SCOKET,SEVERSOCKET。
java.applet : 包括java小应用程序的类
java.util : 包括一些有用性的类
11:什么是包装类?Java中都有哪些包装类
Boolean Byte Short Integer Long Float Double Charactor
在JDK中针对各种基本类型分别定义对应的引用类型 --------------称为封装类
12:分别表述类的三大特性及其它们的功能
封装性 继承性 多态性
封装:隐藏类的实现细节、迫使用户去使用一个接口去訪问数据、使代码更好维护
继承:子类能够直接继承使用父类的方法,程序猿仅仅须要做的是定义额外特征或规定将适用的变化
多态性:同一种功能拥有很多不同的实现方式
13:怎样实现继承?继承的规则?
public class A extends B{
}
1.单继承性
2.构造方法不能继承
3.super引用父类,调用父类的属性。方法
4.当子类中出现与父类的方法名,返回类型,參数列表同样的方法时要覆盖此方法
14:什么是方法的覆盖?什么情况下出现?
方法覆盖:
子类能够改动从父类继承过来的行为,子类能够创建一个与父类方法有不同功能的方法
在同类型中出现 同样的名称、返回类型 方法名和參数列表的方法时
在父子类时
15:方法覆盖的规则?
方法名要和父类中被覆盖的方法名同样,返回类型同样
參数列表要和父类中被覆盖方法的參数列表同样
訪问权限要大于等于被覆盖方法的权限
例外列表要小于等于被覆盖方法的例外列表
16:怎样调用父类的构造方法?怎样调用自己的构造方法?
要调用父类的构造方法通过 在子类的构造方法中第一行写super(參数)能给父类传參;
要调用自己的构造方法通过 this(參数)或者直接调;
17:怎样确定在多态的调用中,到底是调用的那个方法?
new的是哪一个类就是调用的哪个类的方法
18:static修饰符的功能是?能够用在什么地方?怎么訪问?
static 修饰符功能:
1.共用一块内存区域,也就是一个变量或成员方法对全部类的实例都
是同样的
2.静态成员方法和静态变量的长处在于他们能在没有创建类的不论什么一个 实例的情况下被引用
3.能够用在方法或属性上
訪问方式:
1.直接使用类名调
2.new 一个实例。用实例调
19:static的基本规则
1.类中的静态方法不同意调用非静态的属性和方法,仅仅能够调用静态的属性和方法
2.能够用类名直接调用静态类中的属性和方法
3.静态方法中不同意出现this和super
4.静态方法不能被非静态方法覆盖
5.构造方法不同意声明static
6.静态变量为类变量。能够直接调
7.非静态变量为实例变量,通过实例调用
20:final修饰符的功能是?能够用在什么地方?
功能:标记全部通用的功能,不能任意更改
能够 用在类、属性和方法上
21:final的基本规则
final类不能被继承
final成员变量仅仅同意赋值一次,且仅仅能通过构造方法里赋值
final局部变量即为常量,仅仅能赋值一次
final方法不同意被子类覆盖
final一般用于标记那些通用性的功能不能任意改动
22:什么是抽象类?
抽象类: 一个类中声明方法存在而不是实现,以及带有对已知行为的方法的实现,这种类通常被称做抽象类
23:抽象类的规则
类内部至少包括一个没有实现体的方法
用abstract修饰
不可以直接使用抽象类,必须通过子类继承而且实现
24:什么情况下使用抽象类
当一个类的一个或多个方法是抽象类时;
当类是一个抽象类的子类,而且不能为不论什么抽象方法提供不论什么实现细节或方法体时。
当一个类实现一个接口,而且不能为不论什么抽象方法提供实现细节或方法体时
25:equals方法和”==”的功能和差别
功能:推断对象是否相等
差别:
equals方法比較的是对象的值
= =:比較的是对象值的内存地址,对基本数据类型来说==比較的也是值
26:toString方法的功能和基本写法
返回一个String类型
public String toString(){
}
30:String的方法的功能和基本用法,请描写叙述5个以上
substring(參数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(); 功能:查找字符串中參数所在位置,并返回字符串第一个出该參数的下标
"String".indexOf("ing");
split(); 功能:依据參数切割该字符串 "String".split("-");
31:为什么使用StringBuffer类?有什么功能和长处?
--仅仅创建一个对象
–StringBuffer 对象的内容是能够被改动的
–除了字符的长度之外,还有容量的概念
–通过动态改变容量的大小,加速字符管理
32:举例说明怎样使用StringBuffer
StringBuffer sb = new StringBuffer();
sb.append("aaa");
sb.flush();
33:怎样给Java代码设置系统属性?怎样在程序中使用它们
设置在一个扩展名为properties的文件。内容为key、value的映射比如“a=2”;
System.getProperties();
System.setProperties();
34:简述properties文件的结构和基本使用方法
结构:
key=value
使用方法:
System.getProperties 方法返回系统的Properties 对象。
System.getProperty(String propertyName)方法返回相应名字属性的值。
System.getProperty(String name, String value)重载方法当没有name指定的属性时,返回value 指定的缺省值。
35:什么是接口?接口的定义规则?
接口就是定义多种方法,通过实现接口中全部方法的抽象类.
public interface Tt {
public void outPut();
public int tt();
}
36:接口的作用?为什么使用接口?
多重继承
封装、隔离
功能,实现的分离
多态
便于后期维护
接口是可插入性的保证。
37:什么是多重接口
就是一个类实现多个接口
38:描写叙述接口的基本思想?
封装 隔离
接口及相关机制的最基本作用在于:通过接口能够实现不相关类的同样行为,
而不需考虑这些类之间的层次关系。
依据接口能够了解对象的交互界面,而不需了解对象所属的类。
面向对象程序设计讲究“提高内聚,减少耦合”。
39:怎样在代码中使用接口?
public class MyCast implements Tt{
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.优先使用对象组合,少用继承
3.抽象类一般用在定义子类的行为而父类又有特定行为的子类情况中
4.在接口和抽象类的选择上,必须遵守这样一个原则:行为模型应该总是通过接口而不是抽象类定义。
42:什么是异常?
程序中导致程序中断的一些情况叫做异常,一般程序猿能够处理
43:简述处理异常的两种方式?
抛出和catch语句处理
43:简述try块的功能和规则
try块内部一般写一些编程人员觉得可能会出现异常的代码,使程序执行不会由于出现异常而中断
44:简述catch块的功能和规则
功能:能够截获所声明的异常,并在语句块内对其进行处理
规则:catch(Exeption e){
System.out.println("this is an Exeption!");
}
45:简述finally块的功能和规则
finally块一般写一些不论是否发生异常都必须运行一次的代码
比如关闭与数据库的连接等
46: 简述throw和throws的功能和用法
throw 指编程人员主动抛出一个异常
throw new NullPointerExeption();
throws指程序遇到异常情况自己主动的被动抛出一个异常
public void test() throws Exeption{}
47:异常的分类?
错误(Error): JVM 系统内部错误、资源耗尽等严重情况,程序猿不可控制
例外(Exception):其他因编程错误或偶然的外在因素导致的一般性问题。程序
能够控制
48:什么是提前定义异常
java程序中预先定义好的异常叫做提前定义异常
49:简述自己定义异常的规则
写一个类继承Exception
用户自己定义异常通常属Exception范畴。根据惯例,应以Exception结尾。应该由人工创建并抛出。
50:什么是断言?
用来证明和測试程序的如果。
51:怎样使用断言?举例说明
一种是assert<<布尔表达式>>;还有一种是assert<<布尔表达式>>:<<细节描写叙述>>。
assert a= =10 : "这里a等于10";
52:什么是集合?什么是元素?
能够包括其它对象的简单对象就叫集合
集合框架中所包括的对象就叫做元素
53:描写叙述出Java集合框架中集合的接口关系
Collection----Set和List
Set----HashSet和SortedSet
List----ArrayList和LinkedList
Map----HashMap、SortedMap和TreeMap
54:代码演示样例:Collection接口的使用,包含怎样定义、初始化、赋值、取值、改动值除值
Collection 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(newValue);
}
}
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(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(oldValue)){
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()){
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:什么是流?可绘图说明
字符串分解==============OutStream==========>write()方法写到文件里
2:描写叙述I/O流的基本接口和类的结构
InputStream
OutputStream
3:代码演示样例:怎样使用URL流来进行输入输出
try {
imageSource = new URL("http://mysite.com/~info");
} catch (MalformedURLException e) {
}
4:什么是Unicode?
是一种字符的编码方式
5:代码演示样例:怎样使用Reader和Writer来进行输入输出
InputStreamReader 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();
}catch(Exception e){
e.printStackTrace();
}
8:简述File类的基本功能
处理文件和获取文件信息,文件或目录的管理
除了读写文件内容其它的都能够做
9:代码演示样例:怎样使用随机文件读写类来读写文件内容
RW表示文件时可读写的
读:
try{
RandomAccessFile f = new RandomAccessFile("test.txt", "rw");
long len = 0L;
long allLen = f.length();
int i = 0;
while (len < allLen) {
String s = f.readLine();
if (i > 0) {
col.add(s);
}
i++;
//游标
len = f.getFilePointer();
}
}catch(Exception err){
err.printStackTrace();
}
写:
try{
RandomAccessFile f = new RandomAccessFile("test.txt", "rw");
StringBuffer buffer = new StringBuffer("\n");
Iterator it = col.iterator();
while (it.hasNext()) {
buffer.append(it.next() + "\n");
}
f.writeUTF(buffer.toString());
}catch(Exception err){
err.printStackTrace();
}
10:代码演示样例:怎样使用流的基本接口来读写文件内容
try{
DataInputStream in =
new DataInputStream(
new BufferedInputStream(
new FileInputStream("Test.java")
)
);
while ((currentLine = in.readLine()) != null){
System.out.println(currentLine);
}
}catch (IOException e){
System.err.println("Error: " + e);
}
四、线程
1:什么是线程?
轻量级的进程
2:线程的三个部分是?
处理机
代码
数据
3:为什么使用多线程
使UI响应更快
利用多处理器系统
简化建模
4:代码演示样例:Java中实现多线程的两种方式,包含怎样定义多线程。怎样使用多线程
4.1实现Runnable接口
class Thread1 implements Runnable{
public void run(){
//run里一般写一个while(true)循环
System.out.println(Runnable);
}
}
4.2继承Thread
class Thread2 extends Thread{
public void run(){
System.out.println(extends);
}
}
public class Test{
public static void main(String[] a){
Thread1 r = new Thread1();
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t1.start();
t2.start();
Thread t3 = new Thread2();
t3.start();
}
}
5:怎样实现线程的调度?怎样暂停一个线程的执行
调度用wait和notify
sleep()
6:什么是线程的优先级
推断哪个线程先运行的级别
7:简述sleep方法和wait方法的功能和差别
sleep是让线程休眠一段时间
wait是让线程挂起
8:什么是守候线程
隐藏在后台持续执行的线程
9:什么是临界资源
指多个线程共享的资源
10:什么是相互排斥锁。Java中怎样实现
用来保证在任一时刻仅仅能有一个线程来訪问临界资源的那个标记
用在对象前面限制一段代码的运行
用在方法声明中,表示整个方法为同步方法。
11:什么是死锁?怎样避免?
假设程序中有多个线程竞争多个资源,就可能会产生死锁。
当一个线程等待
由还有一个线程持有的锁,而后者正在等待已被第一个线程持 有的锁时,就会
发生死锁。
要避免死锁,应该确保在获取多个锁时,在全部的线程中都以同样的顺序获取锁。
尽量少用临界资源
12:简述wait和notify,notifyAll的使用
被锁定的对象能够调用wait()方法,这将导致当前线程被堵塞并放弃该对象
的相互排斥锁,即解除了wait()方法的当前对象的锁定状态,其 他的线程就有机
会訪问该对象。
notify使等待队列上的一个线程离开堵塞状态
notifyAll使等待队列上的全部线程离开堵塞状态
13:什么是url?主要的格式是?
统一资源定位器
Http://www.163.com:port
14:简述IP,Port,TCP的基本功能
IP代表网络位置
Port代表port号
TCP可保证不同厂家生产的计算机能在共同网络环境下执行,解决异构网通信问题,是眼下网络通信的基本协议
15:简述Java网络模型的基本功能
描写叙述服务端和client的连接过程
16:简述Java网络编程到底做些什么?怎样做?
1.建立连接
2.准备输出的数据。流式输出
3.流式输入,编程业务须要的格式
4.关闭连接
server分配一个port号。假设客户请求一个连接,server使用accept()方法打开socket连接。
客户在host的port端口建立连接。
server和客户使用InputStream和OutputStream进行通信。
17:代码演示样例:基于Socket编程
try {
ServerSocket s = new ServerSocket(8888);
while (true) {
Socket s1 = s.accept();
OutputStream os = s1.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("Hello," +s1.getInetAddress() + "port#" + s1.getPort() + "\nbye!");
dos.close();
s1.close();
}
}catch (IOException e) {
System.out.println("程序执行出错:" + e);
}
18:代码演示样例:基于UDP编程
19:TCP和UDP差别
TCP能保证传输内容的完整和准确,UDP不能
五、设计模式
1:什么是设计模式?
就是经过实践验证的用来解决特定环境下特定问题的解决方式
2:设计模式用来干什么?
寻找合适的对象
决定对象的粒度
指定对象的接口
描写叙述对象的实现
运用复用机制
反复使用经过实践验证的正确的,用来解决某一类问题的解决方式来达到降低
工作量、提高正确率等目的
3:什么是对象粒度
对象中方法的多少就是粒度
4:主要的Java编程设计应遵循的规则?
面向接口编程。优先使用对象组合
5:设计模式的应用范围
所能解决的特定的一类问题中
6:简述什么是单例模式,以及他解决的问题,应用的环境。解决的方案,
模式的本质
在不论什么时间内仅仅有一个类实例存在的模式
须要有一个从中进行全局訪问和维护某种类型数据的区域的环境下使用单例模式
解决方式就是保证一个类仅仅有一个类实例存在
本质就是实例共用同一块内存区域
7:代码演示样例:单例模式的两种实现方法,并说明优缺点
public class Test{
public Test(){
}
private static Test test = new Test();
public static Test getInstance(){
return test;
}
}
public class Test{
private static Test test = null;
private Test(){
}
public static Test getInstance(){
if(test==null){
test = new Test();
}
return test;
}
}
另外一种方式不需每次都创建一个类实例。而仅仅是在第一次创建
8:简述什么是工厂模式。以及他解决的问题。应用的环境。解决的方案,模式的本质
利用工厂来解决接口选择的问题的模式
应用环境:当一个类无法预料要创建哪种类的对象或是一个类须要由子类来指定
创建的对象时,就须要用到工厂模式
解决方式:定义一个创建对象的接口,让子类来决定详细实例化哪一个类
本质就是依据不同的情况来选择不同的接口
9:代码演示样例:工厂模式的实现方法
public class Factory{
public static Sample creator(int which){
if (which==1){
return new SampleA();
}else if (which==2)
return new SampleB();
}
}
}
Public class MyFactory{
Public static myFactory f = null;
Public MyFactory(){
}
Public static MyFactory getInstance(){
If(f==null){
F=new MyFactory();
}
}
Public DBDAO getDAO(){
Return new DBDAOImpl();
}
}
10述什么是值对象模式。以及他解决的问题。应用的环境。解决的方案,模式的本质
用来把一组数据封装成一个对象的模式
解决这个问题:在远程方法的调用次数添加的时候。相关的应用程序性能将会有非常大的下降
解决方式:使用值对象的时候。能够通过只一次方法调用来取得整个对象,而不是使用多次方法调用以得到对象中每一个域的数值
本质:就是把须要传递的多个值封装成一个对象一次性传过去
11:代码演示样例:值对象模式的实现方法
public class UserModel{
private String userId;
private String userName;
public void setUserId(String id){
this.userId = id;
}
public String getUserId(){
return userId;
}
public void setUserName(String name){
this.userName = name;
}
public String getUserName(){
return userName;
}
}
12:简述什么是DAO模式,以及他解决的问题。应用的环境。解决的方案。模式的本质
数据訪问对象
解决这个问题:依据数据源不同。数据訪问也不同。
依据存储的类型(关系数据库、
面向对象数据库、纯文件等)和供应商实现不同,持久性存储(如数据库)的訪问区别也非常大。怎样对存储层以外的模块屏蔽这些复杂性,以提供统一的调用存储实现。程序的分布式问题
解决方式:式将数据訪问逻辑抽象为特殊的资源。也就是说将系统资源的接口从
其底层訪问机制中隔离出来;通过将数据訪问的调用打包,数据訪问对象能够
促进对于不同数据库类型和模式的数据訪问。
DAO的本质就是一层屏蔽一种变化
本质:分层,是系统组件和数据源中间的适配器。
(一层屏蔽一种变化)
13:代码演示样例:DAO模式的实现方法
public interface CustomerDAO {
public int insertCustomer(...);
public Collection selectCustomersVO(...);
}
14:什么是开放-封闭法则(OCP)
可扩展可是不能够更改已有的模块
对扩展是开放的 对改动是封闭
15:什么是替换法则(LSP)
使用指向基类(超类)的引用的函数。必须可以在不知道详细派生类(子类)对象
类型的情况下使用
16:怎样综合使用我们学过的设计模式来构建合理的应用程序结构
是採用接口进行隔离,然后同一时候暴露值对象和工厂类。假设是须要数据存储的功能,又会通过DAO 模式去与数据存储层交互。
17:构建经常使用的合理的Java应用包结构
Ui(表现层)
business--factory,ebi,ebo
dao--factory,dao,impl
六、awt
1:什么是GUI中的容器?什么是GUI中的组件?
容器:是Component的一个抽象子类,它同意其它的组件被嵌套在里面,它能够容纳组件或其它容器
组件:AWT提供的具有一定功能类。且帶自己的界面,比如MenuBar、Button等
2:简述AWT中的Frame、Panel和组件的关系
组件直接加入在Panel上,而多個Panel能够叠加到Frame上,Frame一般仅仅有一个,各个Panel能够互相在Frame上切换
3:简述怎样使用一个组件
初始化,加到容器中。注册事件。实现对应的事件
Panel pan = new Panel();
TextField td = new TextField();
td.setText("this is in a TextField.");
pan.add(td);
4:描写叙述一个GUI界面的基本构成?
Frame,Panel,組件
Popmenu
6:怎样控制外观,如颜色、字体等?
可使用setColor(),setFont()方法
比如:
Frame f = new Frame();
Font font = new Font("TimesRoman", Font.PLAIN, 14);
f.setColor(Color.red);
f.setFont(f);
7:什么是布局管理器?
用来管理GUI界面中组件的分布情況,负责决定布局方针以及其容器的每个子组件的大小
8:描写叙述每种布局管理器的基本特点
FlowLayout 从左到右分布。排满推到下一行
BorderLayout 上下左右中分布
CardLayout 卡片式分布
GridLayout 网格式分布
XYLayout 坐标分布
四:swing
1:什么是JFC(Java基础类)?
是关于GUI组件和服务完整集合
2:Swing和AWT的差别?
Swing提供了更完整的组件,引入了很多新的特性和能力。
Swing API是环绕着实现AWT 各个部分的API 构筑的。
AWT 採用了与特定平台相关的实现。而绝大多数Swing 组件却不是这样做的,因此Swing 的外观和感觉是可客户化和可插的。
3:什么是双缓冲?
在后台进行界面的更新。然后在前台进行界面交换
功能:双缓冲能够改善一个被频繁改变的组件的外观
4:描写叙述GUI的事件机制
事件源:是一个事件得产生者,或产生事件的组件对象
事件监听器:调用事件处理方法的对象
事件处理器:就是一个接收事件、解释事件并处理用户交互的方法。
5:描写叙述Swing应用程序的基本结构?
组件定义
初始化界面
各种事件处理方法
各种适配类
6:描写叙述表现层的基本功能?
展示数据
人机交互
收集參数、调用逻辑层api
7:描写叙述在开发Swing应用程序中,一般都要写那些代码?都写到什么地方?
一般要在类的初始化的时候给组件赋值,写在jinit的方法里面
一般要在按扭的事件处理中写收集參数,组织參数。调用业务接口的方法
8:对于GUI组件而言。最基本的方法是哪些?
初始化
怎样给组件初始化
怎样从组件中取值
设计组件的属性
9:怎样学习GUI组件的使用方法?
主要学回組件的定义、取值、赋值的方法
类比学习
以下一篇博文将解说web端的知识点。