Java考题.docx
《Java考题.docx》由会员分享,可在线阅读,更多相关《Java考题.docx(18页珍藏版)》请在冰豆网上搜索。
Java考题
Java考题
3、Java提供两种创建线程方式,一是实现Runabel接口,二是继承Thread类。
线程的操作代码则写于run()方法内,调用线程对象的start()
方法启动线程
11、JDBC中连接数据库将查询出来的数据放到______Result_类的对象中。
18、Java语言单行注释语句是:
//多行注释语句是:
/*……*/。
5、下列常用包中,存放用户图形界面类库的包是A。
A.java.awtB.java.langC.java.utilD.Java.io
2、Java的图形用户界面设计中,一般用到的布局管理器有(列出四种即可)___边界____,___卡片_____,___流式____,____网络_____。
5、Java的默认包是____java.lang。
8、在Java程序中定义的类有两种成员:
属性和方法。
9、Java中所有类都是类Object的子类。
14、抽象类不能实例化,最终类不能继承。
标示符
凡是可以自己起名字的地方都叫标示符,其命名规则如下:
●由字母、“_”、“$”或数字组成
●开头不能为数字
●大小写敏感,无长度限制
标示符应做到见名知意,且不能与关键字相同
Intas;intfor;int3/%s;
goto和const虽从未被使用过,但也被用作java关键字保留
变量
从本质上讲,变量其实是内存的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须先申请(声明),然后必须进行赋值(填充内容),之后才能使用。
程序的执行过程
java基本数据类型
4类8种
●逻辑型——boolean
●字符型——char
●整数型——byte、short、int、long
●浮点型——float、double
基本数据类型转换
boolean类型不可转换为其他的数据类型
数据类型按容量大小排序:
byte,short,char->int->long->float->double
byte,short,char三者之间不会互相转化,并且三者之间做运算时首先转换成int类型。
bytea=0,b=1,c=a+b;
容量小的可以向容量大的自动转换,容量大的转为容量小的时需强制转换,强制转换时,容量大的数据不应超过容量小的数据类型的最大表示范围
●三目条件运算符:
?
:
x?
y:
z;
其中x为boolean类型表达式,先计算x的值,若为true表达式的值为y,否则为z
inta=2,b=1,c=11;
a>b?
3:
c++;(c=11)
●字符串连接运算符:
+,运算符两侧的操作数中只要有一个是字符串类型,系统会自动将另一个操作数转换成为字符串然后再进行连接
inta=0;Strings=a+“”;
当使用System.out.println()语句进行打印时,无论任何类型的数据,都自动转为字符串进行打印
对象和类的概念
面向对象的思想分析问题:
(lizi)
1.考虑问题中有哪些类和对象
2.考虑这些类和对象有哪些属性
3.考虑这些类之间是什么关系定它们之间的方法。
类的成员变量和方法
成员变量可以是Java语言中任何一种数据类型和引用类型
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化
(double)
●引用类型数据占用两块内存(栈内存和堆内存),通过栈内存引用找到其指向的堆中东西
对象的创建包括:
对象的声明、类的实例化和对象的初始化三个部分。
类的构造方法(构造函数/构造器)
●使用new关键字创建一个新的对象时会自动调用其构造方法
●构造方法与类同名而且没有返回值
●使用构造方法用来初始化成员变量
●构造方法(或者方法)执行完之后,在栈内为其所分配的所有的局部变量的内存空间全部消失
●每个开发者自己创建java类后,若没有指定构造方法那么系统会添加一个默认的构造方法:
className(){}
Classa{}
a(){}
方法的重载
方法的重载是指一个类中可以定义有名字相同,但参数不同的多个方法。
两个关键字:
this,static
publicclassTest{
privatestaticinti=0;
Test(){
this.i=1;
System.out.println(i++);
}
publicstaticvoidmain(String[]args){
Testt=newTest();
}
}
Daimazhixingjieguo?
JieshiyixiathiszhideshishuibingshuomingIdezhifangzaineicundenakuaiquyu?
J2SDK中主要包
java.lang-包含一些java语言的核心类,如String,Math、Integer、System和Thread,提供常用功能。
该包不需要引入,其里面的内容就可以使用。
本类包括的Object类是java中最原始、最重要的类,每个java类都是它的子类,它实现了每个类都必须具有的基本方法
java.awt,抽象窗口工具集。
java.applet、、java.io、java。
包含执行与网络相关的操作类
java.io包含能提供多种输入输出功能的类
java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数
除了java.lang包之外,其他的类包都不是java语言必须的,如果程序中使用到这些类包时,必须使用import语句将相应的类包导入到程序中。
Java权限修饰符publicprotectedprivatedefault
重写overwrite/override
●在子类中可以根据需要对从基类种继承来的方法进行重写
●重写方法必须和被重写方法具有相同方法名称、参数列表和返回值类型
●重写方法不能使用比被重写方法更严格的访问权限
重写方法最好是去copy父类的方法。
继承中的构造方法
子类的构造过程中必须先调用其父类的构造方法。
●如果子类的构造方法中没有显示地调用基类的构造方法,则系统默认调用基类无参数的构造方法
接口(interface)
接口的特点是:
1.可以实现多重继承
2.接口中声明的属性默认为publicstaticfinal(写不写都可以)的;也只能是publicstaticfinal的(写不写都可以)
3.接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public的。
接口可以继承其他接口并添加新的属性和抽象方法
4.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。
与继承关系类似,接口与实现类之间存在多态性。
5.实现接口的类必须实现其中所有的方法,类实现接口时要使用implements关键字
数组的声明
Java中声明数组时不能指定其长度,因为数组是分配在堆上的。
Java中使用关键字new创建数组对象:
数组名=new数组元素类型[数组元素个数]。
一维数组声明
int[]var1;
intvar2[];
var2=newint[5];
intvar[5];//不合法的声明
数组对象的创建
数组初始化(动态初始化,静态初始化)
动态初始化:
数组定义与数组元素分配空间和赋值的操作分开进行,先分配空间之后在赋值
例:
int[]var;
var=newint[2];
var[0]=1;
var[1]=2;varvar
静态初始化:
在定义数组同时就为数组元素分配空间并赋值
inta[]={3,6,9};
默认初始化:
数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化,如:
inta[]=newint[5];
System.out.println(a[3]);
结果输出0
数组的引用
定义并用运算符new为之分配空间后,才可以引用数组中的每个元素,数组元素的饮用方式为:
arrayName[index]
index为数组元素下标,可以使整型常量或整型表达式。
如:
a[3],b[i],c[3*j]
数组元素下标从0开始,长度为n的数组合法下标取值范围是0~n-1
数组长度:
每个数组都有一个属性(并非方法,没有加括号)length指明它的长度:
a.length的值为数组a的长度(元素个数)。
二维数组
二维数组可以看成为数组的数组,例如
int[][]a={{1,2},{3,4,5,6},{7,8,9}};//内存分布如图
二维数组初始化按照从高维到低维的顺序,例如
inta[][]=newint[3][];
a[0]=newint[2];
a[1]=newint[3];
a[2]=newint[2];
//非法intb[][]=newint[][4];
//由二维数组在内存中存储表示可知必须给一维分配空间后
//才能给二维分配
静态初始化
int[][]a={{1,2},{3,4,5,6},{7,8,9}};
//非法int[3][2]a={{1,2},{3,4},{7,8}};
动态初始化
inta[][]=newint[2][3];
intb[][]=newint[3][];
b[0]=newint[2];
b[1]=newint[3];
b[2]=newint[5];
数组常用操作
数组的复制
对于相同类型的数组变量单纯的通过"="来完成复制操作的结果是将两个变量指向同一引用,
使用java.lang.System类中的静态方法
●publicstaticvoidarraycopy(objectsrc,intsrcPos,objectdest,intdestPos,intlength)
可以用于数组src从第srcPos项元素开始的length个元素拷贝到目标数组从destPos项开始的length个位置
publicclassArrayCopy{
publicstaticvoidmain(String[]args){
String[]s={"lenovo","acer","dell","apple","HTC"};
String[]sc=newString[8];
System.arraycopy(s,0,sc,0,s.length);
for(inti=0;iSystem.out.println(sc[i]);
}
}
}
还可使用Arrays类中的如下两个方法来完成数组内容的拷贝(xxx代表任意数据类型):
●publicstaticxxx[]copyOf(xxx[]original,intnewLength)
original为原数组,newLength为要拷贝的数组元素个数(或新数组的长度),当newLength的值小于原数组的长度时只复制从0号开始的部分数组元素,反之多余数组元素初始值设为0或者null
●publicstaticxxx[]copyOfRange(xxx[]original,intfrom,intto)
original为原数组,from为起始元素下标,to为结束元素下标
数组排序
java的Arrays类中提供了两种为数组自动排序的方法:
●publicstaticvoidsort(xxx[]a)
为数组元素全部排序,结果还放在原来数组中
●publicstaticvoidsort(xxx[]a,intfromIndex,inttoIndex)
对指定下表区间fromIdex到toIndex内的数组排序,排序结果还放在原来数组中
查找指定元素
对于已排好序的数组,Arrays类中提供了两种在数组中查找指定元素的方法:
●publicstaticintbinarySearch(xxx[]a,xxxkey)
a为要搜索的数组,key为要搜索的元素,如果key在a中则方法返回其索引否则返回负数
●publicstaticintbinarySearch(xxx[]a,intfromIndex,inttoIndex,xxxkey)
在数组a当中指定的区间范围fromIndex到toIndex搜索元素key,如若存在返回其索引否则返回负数
数组填充
●publicstaticvoidfill(xxxa[],xxxvar)
该方法用指定的值var来填充数组a,执行该方法的结果是:
数组a中所有元素的值都变成var。
数组的比较
Arrays类中的equals方法用于比较两个数组的引用,如果相同返回true否则返回false
●publicstaticvoidequals(xxx[]a,xxx[]b)
线程状态转换
线程对象自其被创建后,一般会经历生命周期中五种不同的状态(新建状态,准备状态,运行状态,等待/阻塞状态,死亡状态),下图给出了5中状态之间的转换关系.
常用两种Container
Window:
表示自由停泊的顶级窗口,分为Frame和Dialog。
Panel:
表示不能自由停泊,必须被添加到其他Container(如window或Applet)里面。
消息对话框
消息对话框是有模式对话框,可以调用Javax.swing包中的JOptionPane类的静态方法创建:
FlowLayout是Panel类的默认布局管理器。
BorderLayout是Frame类的默认布局管理器
JDBC操作步骤
1)引入驱动开发包
各个数据都会提供JDBC的驱动程序开发包,直接把JDBC操作所需的开发包(一般为*.jar或*.zip)引入到项目中就可以了。
具体操作为在MyEclipse中右击项目选择“BulidPath”——“ConfigureBuildPath”——“Libraries”——“AddExternalJARs…”然后选择相应的jar文件。
2)连接数据库
驱动开发包进入之后就可以在程序中编写代码连接数据库了。
数据库不同链接地址也不一样,但绝大多数数据库在进行连接时都会需要输入用户名和密码。
以MySQL数据库为例,进行数据库连接需要以下两步:
i.使用Class类的forName方法加载驱动
Class.forName("org.gjt.mm.mysql.Driver");
不同数据库的驱动程序路径不一样,MySQL中的数据库驱动路径是org.gjt.mm.mysql.Driver。
各个数据库的驱动程序路径实际上就是驱动开发包提供的类名称,采用“包.类”名称的方式,以MySQL为例,使用winrar打开驱动开发包jar文件就会看到一个名为Driver.class的文件。
ii.使用DriverManager类的getConnection方法连接数据库
StringDBURL="jdbc:
mysql:
//localhost:
3306/student";//数据库连接地址
Connectionconn=DriverManager.getConnection(DBURL,“userName”,“password”);
DBURL是数据可连接地址,指明了所需连接数据库的类型,主机地址,端口号以及数据库名。
3)使用SQL语句进行数据库操作
Statementstmt=conn.createStatement();//实例化Statement对象
stmt.execute(SQLSentence);//执行sql语句更新数据库信息
4)处理SQL语句执行结果
5)关闭数据库连接
数据库操作完毕之后需要关闭连接以释放资源。
stmt.close();//关闭操作
conn.close();//关闭数据库
99乘法表
publicclassExamp_11_4
{
publicstaticvoidmain(String[]args)
{
intx1,x2;
for(x1=1;x1<=9;x1++)
{
for(x2=1;x2<=9;x2++)
{
System.out.print(x2+"x"+x1+"="+x1*x2+"\t");
if(x1==x2)
{
break;
}
}
System.out.print("\n");
}
}
}
/*
运行结果如下:
1x1=1
1x2=22x2=4
1x3=32x3=63x3=9
1x4=42x4=83x4=124x4=16
1x5=52x5=103x5=154x5=205x5=25
1x6=62x6=123x6=184x6=245x6=306x6=36
1x7=72x7=143x7=214x7=285x7=356x7=427x7=49
1x8=82x8=163x8=244x8=325x8=406x8=487x8=568x8=64
1x9=92x9=183x9=274x9=365x9=456x9=547x9=638x9=729x9=81
*/