资源描述
1、 简述Statement接口与PreparedStatement接口的区别和联系
区别主要有以下两点:
PreparedStatement接口包含已编译的SQL语句,而Statement没有
PreparedStatement接口中的SQL语句可包含若干个in参数,也可用“?”占位符,而Statement没有。
.联系:PreparedStatement接口继承Statement接口,它具有Statement的所有方法,同时添加了一些新的方法。
2、 简述实现线程的同步机制的目的
当多个线程同时访问一个对象时,为了保持对象数据的统一性和完整性,必须采用线程的同步机制。
3、简述Java中的异常分类
两种类型:
(1)内部错误,又称为致命错误;
(2)运行时异常。
4.简述接口与抽象类的异同点
接口与抽象类的主要异同点如下:接口定义了一组特定功能的对外接口与规范,抽象类一般作为公共的父类为子类的扩展提供基础,而接口不考虑属性,只考虑方法,使得子类可以自由的填补或者扩展接口所定义的方法。一个类只能使用一次继承。接口可以解决多重继承问题。接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种只包含常量与抽象方法的特殊的抽象类,实现抽象类和接口的类必须实现其中的所有方法。
5.简述Java语言特性
简单性、面向对象、分布式、解释型、可靠、安全、平台无关、可移植、高性能、多线程、动态性等。
6.简述基本数据类型和引用数据类型的基本特点
Java的基本数据类型都有固定的数据位,不随运行平台的变化而变化。基本数据类型包括byte、short、int、long、float、double、boolean和char。
引用类型都是用类或对象实现的,引用数据类型包括:类、数组、接口。
7.简述结构化程序设计的基本控制流程
循环、分支和顺序。
8.简述面向对象的软件开发有哪些优点
提高代码的可重用性(或者称为复用性);
提升程序的开发与运行效率;
提高程序的可靠性与可维护性;
提高程序的可扩展性;
增强程序的可控制性。
9.简述什么是封装,Java语言中的封装类有哪些?
封装是表示把数据项和方法隐藏在对象的内部,把方法的实现内容隐藏起来。Java中的封装类有Double、Integer、Float、Byte、Long、Character、Short、Boolean等类。
10. 简述什么是异常,Java中的异常分为哪几类?
异常是指程序运行过程中产生的错误,它出现在程序运行过程中。
Java中的异常分为两种类型:(1)内部错误,又称致命错误,比如硬盘损坏、软驱中没有软盘等。(2)运行时异常,比如除数为0、数组下标越界。
11.Java程序是由什么组成的?一个程序中必须有public类吗?Java源程序的命名规则是怎样的?
一个Java源程序是由若干个类组成的。一个Java程序不一定需要有public类:如果源文件中有多个类时,则只能有一个类是public类;如果源文件中只有一个类,则不将该类写成public类也将被默认为主类。
源文件命名时要求源文件中主名应与主类(即用public修饰的类)的类名相同,扩展名为.java。如果没有定义public类,则可以任何一个类名为主文件名,当然这是不主张的,因为它将无法进行被继承使用。
12.简述一个类是如何实现接口的,而实现某接口的类是否一定要重载该接口中的所有抽象方法。
一个类使用关键字implements实现某接口。实现某接口的类如果不是抽象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以不必实现该接口中的所有抽象方法。
13.简述线程与进程的区别
进程是程序的一次执行,对应了从代码的加载、执行到执行结束的完整过程。
线程是比进程更小的执行单元,是程序执行流的最小单元。
它们的区别主要是:每个进程对应一个单独的地址空间,而多个线程共用一个存储空间;一个进程可以产生若干个线程,进程负责线程的创建和启动。
14.简述Java多态性实现中方法的重载与覆盖的区别
面向对象的一个重要特征是多态性,Java中多态性是通过方法的重载和覆盖来实现的。类层次结构中,如果子类的一个方法与父类中的方法有相同的方法名并具有相同数量和类型的参数列表,则称子类中的方法覆盖了父类中方法。在同一个类中有两种或两种以上的方法可以有相同的名字,只要它们的参数声明不同即可,这种情况称为方法的重载。
15.简述怎样区分应用程序和小应用程序
Java Application是完整的程序,需要独立的解释器来解释运行;而Java Applet则是嵌在HTML编写的Web页面中的非独立运行程序,由Web浏览器内部包含的Java解释器来解释运行。
两者的主要区别是:
任何一个Java Application应用程序必须有且只有一个main方法,它是整个程序的入口方法;任何一个Applet小应用程序要求程序中有且必须有一个类是系统类Applet的子类,即该类头部分以extends Applet结尾。
16.简述把一个类放在包里的作用
Java中的包(Package) 是一种松散的类的集合,是用来组织与管理类与接口的容器。包的作用主要是把需要协同工作的不同的类组织在一起,使得程序功能清楚、结构分明。
17.简述开发与运行Java程序需要经过哪些主要步骤和过程
(1) 下载、安装JDK;(1分)
(2) 设置运行环境参数:JAVA_HOME、PATH、CLASSPATH;(1分)
(3) 使用文本编辑器编写原代码如HelloWorld.java;(1分)
(4) 运行命令“javac HelloWorld.java” 编译HelloWorld.java为HelloWorld.class;(1分)
(5) 运行“java HelloWorld”生成HelloWorld.exe。(1分)
18.简述在循环中使用break、continue和return的不同之处
(1)break用于跳出整个循环语句,在循环结构中一旦遇到break语句,不管循环条件如何,程序立即退出所在的循环体。
(2)continue用于跳过本次循环中尚未执行的语句,但是仍然继续执行下一次循环中的语句。
(3)在循环中使用return语句,将终止当前方法调用,同时终止循环,使流程返回到调用语句的下一个语句执行。
19.简述区分接口与抽象类的使用场合的不同之处
(1)如果预计要创建类的多个版本,则创建抽象类。抽象类提供简单的方法来控制类版本。
(2)如果创建的功能将在大范围的异类对象间使用,则使用接口。
(3)如果要设计小而简练的功能块,则使用接口。
(4)如果要设计大的功能单元,则使用抽象类。
(5)如果要向类的所有子类提供通用的已实现功能,则使用抽象类。
20.简述Java的异常处理机制
异常处理机制是为程序提供错误处理的能力。根据这个机制,对程序运行时可能遇到的异常情况,预先提供一些处理的方法。在程序执行代码的时候,一旦发生异常,程序会根据预定的处理方法对异常进行处理,处理完成后,程序进行运行。
21.简述什么是流,区分输入流和输出流有什么不同。
流是一组有序的数据序列。数据序列从文件、内存或其他设备中流入到CPU的,称为输入流。数据序列从CPU流出到文件、内存或其他设备的,称为输出流。
22.简述Java开发包的种类
Java的开发包根据用途的不同已经分为Java EE、Java SE和Java ME3个,
Java SDK的版本分类如下:
Java ME (Java Platform Micro Edition):
Java SE (Java Platform Standard Edition):
Java EE (Java Platform Enterprise Edition):
23简述Java虚拟机与Java平台的关系
Java虚拟机(Java Virtual Machine) 简称JVM 。Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。
24.简述成员变量、局部变量、类变量和实例变量的不同
在方法外但在类声明内定义的变量叫成员变量,作用域是整个类。在方法体中定义的变量和方法的参数被称为局部变量。类的成员变量分为类变量和实例变量,类变量是用关键字static声明的变量,成员变量在整个类内都有效,局部变量只在定义它的方法内有效。
1、编写一个输出“hello world!”的Java程序,用Appletion和Applet两种方式实现。
a .public class Hello{
public static void main(string args[])
{System.out.println(“Hello World!”);}
}
b. import java.awt.Graphics;
import.java.applet.Applet;
public class HelloApplet extends Applet{
public void paint(Graphics g)
{g.drawString(“Hello World!”,20.20);
}
}
2、 编程计算距当前时间10天后的日期和时间,并用“XXXX年XX月XX日”的格式输出新的日期和时间。
import java.util.Calendar;
public class Calendar_date {
public static void main(String[] args) {
Calendar cal=Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR,10);
String strDate=cal.get(Calendar.YEAR)+"年"
+(cal.get(Calendar.MONTH)+1)+"月"
+cal.get(Calendar.DATE)+"日";
System.out.println("10天后的日期为:"+strDate);
}
}
3、 编写Java程序,判断某年是否是闰年
public class LeapYear{
int year,month,day;
void setdate(int y,int m,int d) { //成员方法,设置日期值,无返回值,有三个参数
year = y;
month = m;
day = d;
}
boolean isleapyear(){ //判断年份是否为闰年,布尔型返回值,无参数
return (year%400==0)||(year%100!=0)&&(year%4==0);
}
void print(){ //输出日期值,无返回值,无参数
System.out.println("date is "+year+'-'+month+'-'+day);
}
public static void main(String args[]){
LeapYear a = new LeapYear() ; //创建对象
a.setdate(2012,12,25); //调用类方法
a.print();
System.out.println(a.year+" is a leap year?"+a.isleapyear());
}
}
4、 编写一个程序,将一个身份证号码以数字的形式写入文件中。
import java.io.FileWriter;
import java.util.Scanner;
public class Ex2 {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
try {
FileWriter fw=new FileWriter(res.txt);
String in=scan.nextLine();
char[] arr=in.toCharArray();
fw.write(arr);
fw.close();
} catch(Exception e){
e.printStackTrace();
}
}
}
5、编写Java程序,通过递归调用类中的方法,计算出Fibinacii序列的前十项,Fibinacii序列的前两项是1,后续每项的值都是该项的前两项之和。
class Fibi{
public long fibinacii(int n)
{ long c=0;
if(n==1||n==2)
c=1;
else
c=fibinacii(n-1)+fibinacii(n-2); //递归调用
return c;
}
}
public class ItemsFibi{
public static void main(String[] args) {
Fibi a=new Fibi();
for(int i=1;i<=10;i++) {
System.out.print(" "+a.fibinacii(i));
}
}
}
6、编写Java程序,对A[]={30,1,19,70,25}数组由小到大排序。
public class booktest {
public static void main(String[] args) {
int a[]={30,1,-9,70,25};
System.out.print("数组原始顺序:");
for (int i=0;i<a.length;i++) System.out.print(a[i] + " ");
for (int i = 0; i < a.length; i++) {
int lowerIndex = i;
for (int j = i + 1; j < a.length; j++)
if (a[j] < a[lowerIndex]) lowerIndex = j;
int temp = a[i];
a[i] = a[lowerIndex];
a[lowerIndex] = temp;
}
System.out.print("\n数组排序后的顺序: ");
for (int i=0;i<a.length;i++) System.out.print(a[i] + " ");
}
}
7、编写Java程序,创建一个类,该类含有判断质数的成员方法,测试时从键盘输入一个数,判断是否为质数。读键盘采用Scanner类的nexInt()方法。
import java.util.Scanner;
public class PrimeNumber {
/*用(int) Math.sqrt(n)求出循环上限,isPrime()方法用来检测当前数是否为质数*/
public static boolean isPrime(int num) {
boolean prime = true;
int limit = (int) Math.sqrt(num);
for (int i = 2; i <= limit; i++) {
if (num % i == 0) {
prime = false;
break;
}
}
return prime;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入您要判断的数:");
int n = input.nextInt();
if (PrimeNumber isPrime(n)) {
System.out.println(n + "是质数!");
} else {
System.out.println(n+ "不是质数!");
}
}
}
8、试编写Java程序,创建一个List类型的对象,其中只能存储通讯录(存储同学的姓名和联系方式),输出通讯录的列表到控制台。
import java.util.*;
class Student{
private String name;
private String phone;
public Student(String name, String phone) {
this.name = name;
this.phone = phone;
}
public String toString() {
return name+":"+phone;
}
}
public class Ex21 {
public static void main(String[] args) {
Student st1=new Student("John","23214");
Student st2=new Student("Alice","4563");
List<Student> list=new ArrayList<Student>();
list.add(st1);list.add(st2);
for(int i=0;i<list.size();i++)
System.out.println(list.get(i));
}
}
9、编写Java程序,求1!+2!+3!+…+15!
public class FactorialSum {
static int f(int x) {
if (x<=0) return 1;
else
return x*f(x-1);
}
public static void main(String[]args){
int sum=0;(1分)
for(int j=1;j<=15;j++)
{
sum+=f(j);
}
System.out.println(sum);
}
}
10、编写程序将字符串“abcABC123”中的小写字母变成大写字母,将大写字母变成小写字母
import java.util.*;
public class ChangeLetter
{
public static void main(String[] args)
{
String s=new String("abcABC123");
System.out.println(s);
char a[]=s.toCharArray();
for(int i=0;i<a.length;i++)
{
if(Character.isLowerCase(a[i]))
{
a[i]=Character.toUpperCase(a[i]);
}
else
if(Character.isUpperCase(a[i]))
{
a[i]=Character.toLowerCase(a[i]);
}
}
s=new String(a);
System.out.print(s);
}
}
11、编写Java程序,求2-1000内的所有素数,并按每行5列的格式输出。
public class PrimeTest{
public static void main(String args[]) {
int num=2;
System.out.print(2 + " ");
for(int i=3;i<=1000;i+=2){
boolean f = true;
for (int j=2;j<i;j++) {
if(i % j == 0){
f= false;
break;
}
}
if(!f) {continue;}
System.out.print(i + " ");
if(num++%5 == 0)System.out.println();
}
}
}
12、编写一个Java程序,能实现对文件的信息进行读取与复制。
import java.io.*;
public class FCopy{
public static void main(String args[]){
if(args.length!=2){
System.out.println("命令参数不对,正确格式是:FCopy 源文件名 新文件名");
System.exit(1);}
try{
FileInputStream in=new FileInputStream(args[0]);
FileOutputStream out=new FileOutputStream(args[1]);
while(in.available()>0){
int i=in.read();out.write(i);}
in.close();out.close();
System.out.println("文件复制成功");}
catch(Exception e){
System.out.println("文件复制失败");}
}
}
展开阅读全文