1.接口与抽象类区别
abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
接口中的方法默认都是 public,abstract 类型的。 ......
1.简单线程创建
(1)实现Runnable接口,Runnable接口只有一个方法run:
public interface Runnable
{
void run();
}
创建类实现run方法
class MyRunnable implements Runnable
{
public void run()
{
/*任务代码*/
}
}
(2)创建对象
Runnable r = new MyRunnable();
(3)由Runnable创建一个Thread对象:
Thread t = new Thread(r);
(4)启动线程
t.start();
2.中断线程
目前没有强制中止线索的方法,可以用interrupt方法来请求中止线程。 ......
/*****************TestCar1 begin************************/
public class TestCar1 {
public static final int Ok=1; //正常情况
public static final int Wrong=2; //异常情况
public int run(){
if("车子没有出现故障"){ //正常流程
return Ok;
}else { //异常流程
return Wrong;
}
}
}
class Worker{
private TestCar1 car;
public static final int int_time=1; //正常情况,准时到达地点
public static final int late=2; //异常情况,上班迟到
public Worker(){} ......
InputStream is = new FileInputStream(filename);//通过文件名称读取
或
InputStream is =new ByteArrayInputStream(byte[] a);//通过文件的字节数组读取
BufferedImage buff = ImageIO.read(is);
buff.getWidth(); //得到图片的宽度
buff.getHeight(); //得到图片的高度
is.close(); //关闭Stream ......
编译并运行下面的程序,其结果是什么?
public class MyClass {
public static void main(String[] args) {
String str1 = "str1";
String str2 = "str2";
String str3 = "str3";
str1.concat(str2);
System.out.println(str3.concat(str1));
}
}
请选择正确的答案。
(A)代码不能通过编译,因为表达式str3.concat(str1)不是println()函数的合法参数。
(B)程序在运行时将会打印str3str1str2。
(C)程序在运行时将会打印str3。
(D)程序在运行时将会打印str3str1。
(E)程序在运行时将会打印str3str2
===========================================================
答案是 D 。
解析
考点:考查求职者对Java的String类的掌握
String类的concat()方法的作用就是将当前的String对象和参数的String对象串联起来,并返回一个新的字符串对象。
面试中虽然使用了str1.concat(str2),但是并没有改变对象的引用,所以输出的字符串就是str3.concat(str1),即"str3str1"。
......
String srt="abc?abc";
str.replaceAll("?", "#");
会提示这样的错误
Dangling meta character '?' near index 0
?
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
str.replaceAll("[?]", "#");
这样写就可以了
......