1.Java 有那些基本数据类型,String 是不是基本数据类型,他们有何区别。
Java 语言提供了八种基本类型:
六种数字类型(四个整数型,两个浮点型)
字节型 byte 8 位 短整型 short 16 位 整型 int 32 位
长整型 long 64 位 单精度 float 32 位 双精度 double 64 位
一种字符类型
字符型 char 8 位
还有一种布尔型
布尔型:boolean 8 位 可存储"True"和"false"。
String 本身就是一个对象而不是基本数据类型,String 的变量名是对 String 类的引用。
2.字符串的操作:
写一个方法,实现字符串的反转,如:输入 abc,输出 cba
public static String reverse(String s){
int length=s.length();
StringBuffer result=new StringBuffer(length);
for(int i=length-1;i>=0;i--)
result.append(s.charAt(i));
return result.toString();
}
写一个方法,实现字符串的替换,如:输入 bbbwlirbbb,输出 bbbhhtccc。
String s = "bbbwlirbbb";
s.replaceAll("wlirbbb","hhtccc");
3.数据类型之间的转换
如何将数值型字符转换为数字(Integer,Double)
使用 Integer.parseInt()和 Double.parseDouble()方法。
如何将数字转换为字符
class my
{
int a=12;
Label label=new Label();
label.setText(String.valueOf(a));
}
如何取小数点前两位,并四舍五入。
System.out.println("四舍五入取整:(3.856)="
+ new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP));
4.日期和时间
如何取得年月日,小时分秒
Date dat=new Date();
dat.getYear();
dat.getSeconds();
dat.getMonth();
dat.getDay();
dat.getHours();
dat.getMinutes();
如何取得从 1970 年到现在的毫秒数
long now=dat.getTime();
如何获取某个日期是当月的最后一天
DateFormate df=DateFormate.getInstance();df.Format(dat);
如何格式化日期
DateFormate df=DateFormate.getInstance();
df.Format(dat);
5.数组和集合
数组与集合的区别:一:数组声明了它容纳的元素的类型,而集合不声明。这是由于集
合以 object 形式来存储它们的元素。二:一个数组实例具有固定的大小,不能伸缩。集合
则可根据需要动态改变大小。三:数组是一种可读/可写数据结构没有办法创建一个只读数
组。然而可以使用集合提供的 ReadOnly 方 只读方式来使用集合。该方法将返回一个集
合的只读版本。
6.文件和目录(I/O)操作
如何列出某个目录下的所有文件
如何列出某个目录下的所有子目录
判断一个文件或目录是否存在
如何读写文件
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class FileOpreate {
public static void main(String [] args)
{
FileOpreate fo=new FileOpreate();
try
{
//文件的写入
/*String[] testStr=new String[50];
for(int i=0;i
/*if(fo.createAndDeleteFile("D:\\","test001.txt"))
{
fo.createAndDeleteFile("D:\\","test002.txt");
}*/
//创建或者删除文件夹
/*fo.createAndDeleteFolder("D:\\","2009-07-06");*/
//输出一个文件内的文件名称
/*fo.readFolderByFile("D:\\");*/
//判断一个文件是否是空的
/*fo.fileIsNull("D:\\","test002.txt");*/
//读取全部的文件内容
/*fo.readAllFile("D:\\","test.txt");*/
//一行一行读取文件内容
fo.readLineFile("D:\\","test.txt");
}
catch(Exception e)
{
e.printStackTrace();
}
}
7.Java 多态的实现(继承、重载、覆盖)
多态可分为:
1)编译多态:主要是体现在重载,系统在编译时就能确定调用重载函数的哪个版本。
2)运行多态:主要体现在 OO 设计的继承性上,子类的对象也是父类的对象,即上溯造型,
所以子类对象可以作为父类对象使用,父类的对象变量可以指向子类对象。因此通过一个父
类发出的方法调用可能执行的是方法在父类中的实现,也可能是某个子类中的实现,它是由
运行时刻具体的对象类型决定的。
8.编码转换,怎样实现将 GB2312 编码的字符串转换为 ISO-8859-1 编码的字符串。
String str = new String("字符串".getBytes("GB2312"),"ISO-8859-1");
9.使用 StringBuffer 类与 String 类进行字符串连接时有何区别?
JAVA 平台提供了两个类:String 和 StringBuffer,它们可以储存和操作字符串,即包含
多个字符的字符数据。这个 String 类提供了数值不可改变的字符串。而这个 StringBuffer
类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用 StringBuffer。典
型地,你可以使用 StringBuffers 来动态构造字符数据。
10.谈谈 final, finally, finalize 的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally 是异常处理语句结构的一部分,表示总是执行。
finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,
可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
11.String s = new String("xyz");创建了几个 String Object?
两个,一个是 string s,另一个是”xyz”。
12.Java 有没有 goto?
goto 是 java 中的保留字,现在没有在 java 中使用。
13.数组有没有 length()这个方法? String 有没有 length()这个方法?
数组没有 length()这个方法,有 length 的属性。String 有 length()这个方法。
14.Overload 和 Override 的区别。
override(重写)
1)方法名、参数、返回值相同。
2)子类方法不能缩小父类方法的访问权限。
3)子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4)存在于父类和子类之间。
5)方法被定义为 final 不能被重写。
overload(重载)
1)参数类型、个数、顺序至少有一个不相同。
2)不能重载只有返回值不同的方法名。
3)存在于父类和子类、同类中。
15.abstract class 和 interface 有什么区别?
Interface 只能有成员常量,只能是方法的声明;
而 abstract class 可以有成员变量,可以声明普通方法和抽象方法。
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体
现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建
abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的
一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽
象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的
其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过
实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定
义 static final 成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。
当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实
现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用
变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,
instanceof 运算符可以用来决定某对象的类是否实现了接口。
16.是否可以继承 String 类?
String 类是 final 类故不可以继承。
17.面向对象的特征有哪些方面?
1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与
当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部
分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明
确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继
承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。
派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适
合特殊的需要。
3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向
对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些
对象通过一个受保护的接口访问其他对象。
4) 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多
态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决
了应用程序函数同名问题。
18.int 和 Integer 有什么区别?
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。
Int 是 java 的原始数据类型,
Integer 是 java 为 int 提供的封装类。
Java 为每个原始类型提供了封装类。
原始类型封装类 booleanBoolean charCharacter byteByte shortShort
intInteger
longLong floatFloat doubleDouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型
具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,
当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省
值为 null,而原始类型实例变量的缺省值与它们的类型有关。
19.作用域 public,private,protected,以及不写时的区别?
访问
同类
同包
子类
通用性
Public
Protected
缺省的
Private
√
√
√
√
√
√
√
×
√
√
×
×
√
×
×
×
20.用 java 写一个冒泡排序。
/**
* 对 int 数组进行升序排序
*
* @param intVal:要排序的数组
* @param asc:值为 true,表示升序排序;传入值为 false,表示降序排序
* @return 返回排序后的 int 数组
*/
public static int[] intArraySort(int [] intVal,boolean asc){
int [] vals=intVal;
int temp;
if(vals.length>0){
if(asc==true){
for(int i=0;i<=vals.length-2;i++){
for(int j=0;jvals[j+1]){
//升序排列
temp=vals[j];
vals[j]=vals[j+1];
vals[j+1]=temp;
}
}
}
}else{
for(int i=0;i<=vals.length-2;i++){
for(int j=0;j
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发
生的情况。
25.statement 和 preparestatement 区别
1)创建时的区别:
Statement stm=con.createStatement();
PreparedStatement pstm=con.prepareStatement(sql);
执行的时候:
stm.execute(sql);
pstm.execute();
2)pstm 一旦绑定了 SQL,此 pstm 就不能执行其他的 Sql,即只能执行一条 SQL 命令。
stm 可以执行多条 SQL 命令。
3)对于执行同构的 sql(只有值不同,其他结构都相同),用 pstm 的执行效率比较的高,
对于异构的 SQL 语句,Statement 的执行效率要高。
4)当需要外部变量的时候,pstm 的执行效率更高.
26.写一个数据库连接类,包括查询及结果存储。
import java.sql.*;
//类的定义
class DBConnect {
//需要加入的包
private String con1 = "sun.jdbc.odbc.JdbcOdbcDriver"; //连接 SQL 所需要的字符串
private String url = "jdbc:odbc:test";
private String user = "sa", password = ""; //这里请根据您的数据库用户和密码自行修
Connection con;
PreparedStatement ps;
//用于连接数据库用的
// 其 实 用 Statement 也 行,PreparedStatement 集 成 了
改
Statement.
ResultSet rs;
//构造函数
DBConnect() {
try {
//一个集合,可以用于执行 SQL 命令
Class.forName(con1); //Class.forName()用于将一些类加载到 JVM
this.Connect();
try {
//函数调用
this.execute();
} catch (SQLException ex) {
System.out.println(ex.toString());
}
} catch (ClassNotFoundException ce) {
System.out.println(ce);
}
}
public void Connect() {
try {
con = DriverManager.getConnection(url, user, password); //做这部之前先把
ODBC 配置好
if (con != null) {
System.out.println("Connection Sucessfully!");
}
} catch (SQLException ex) {
System.out.println(ex.toString());
}
}
public void execute() throws SQLException {
ps = con.prepareStatement("select *from friends"); //把 SQL 语句搞给 ps
rs = ps.executeQuery();
//这里执行,之后让 rs 知
while (rs.next())
//这里必须加 next(),偏移
道信息
量移动.
{
}
System.out.print(rs.getString(2) + "\t");
System.out.print(rs.getString(3) + "\t");
System.out.print(rs.getString(4) + "\t");
System.out.print(rs.getDate(5) + "\t");
System.out.print(rs.getInt(6) + "\t");
System.out.println("");
}
public void close()
但是通过重写 protected void finalize(),
{
//用于释放资源,Java 里没有析构函数,
// 之 后 在 调 用
System.runFinalization()和 System.gc()可以提醒 JVM 执行 finalize()以释放,
try{
//在以前的 J2SE 版本里可以通过以
上方法调用 finalize(),但目前的 J2SE5.0 只能提醒 JVM,但 JVM 不一定执行
//最好的方案还是自己写析构 close();
rs.close();
ps.close();
con.close();
}catch(SQLException ce)
{
System.out.println(ce.toString());
}
System.out.println("Connection released!!!");
}
public static void main(String[] args) {
DBConnect dbc=new DBConnect();
dbc.close();
}
}