int Integer short Short long Long byte Byte float Float double Double char Char boolean Boolean String(不算基本数据类型) Stringbuffer、Stringbuilder(非线程安全)
2. Switch能否用string做参数?
Java 1.7之前只能支持byte、short、int、char或其封装类及enum类型,1.7及以上才支持string,boolean类型也是不支持的,会报以下错误:Cannot switch on a value of type boolean. Only convertible int values or enum constants are permitted
class A { int a =1; int method() { return a ;
}
} class B extends A { int a = 2 ; int Method() { return a ;
}
}
B bb = new B() ;
System.out.println(bb.a) //结果是2
System.out.println(bb.method() ) //结果是2
A aa =(B) new B() ;
System.out.println(aa.a ) // 结果是1
System.out.println(aa.method() ) //结果还是是2,多态
21.实现多线程的两种方法:Thread与Runable。
继承Thread类,重写run方法
实现Runnable接口
想要有返回值,用FutureTask,和Callable接口
例子:
public class CallableTest {
// 创建一个计算任务,返回累加结果,构造器的参数是上界
static class SumCaller implements Callable {
private Integer count;
public SumCaller(Integer count) {
this.count = count;
}
public Long call() throws Exception {
long sum = 0;
for (int i = 0; i < count; i++) {
sum += i;
}
return sum;
}
}
private static Integer COUNT = 1000000000;
public static void main(String[] args) throws InterruptedException,
ExecutionException {
SumCaller caller = new SumCaller(COUNT);
FutureTask task = new FutureTask(caller);
Thread thread = new Thread(task);
thread.start();
long sum = task.get();
System.out.println("sum from 1 to " + COUNT + " result = " + sum);
}
}
因为对于List>中的元素只能用Object来引用,在有些情况下不是很方便。在这些情况下,可以使用上下界来限制未知类型的范围。 如List extends Number>说明List中可能包含的元素类型是Number及其子类。而List super Number>则说明List中包含的是Number及其父类。当引入了上界之后,在使用类型的时候就可以使用上界类中定义的方法。比如访问 List extends Number>的时候,就可以使用Number类的intValue等方法。
33. 解析XML的几种方式的原理与特点:DOM、SAX、PULL。
DOM解析:将整个XML加载到内存中,比较方便插入和查找相邻节点,但是耗内存,手机用得较少
SAX解析:simple API for XML,SAX解析XML文件采用的是事件驱动,进而调用一些回调方法(CallBack),比如
List names = Arrays.asList("peter", "anna", "mike", "xenia");
Collections.sort(names, new Comparator() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
});
加入lambda表达式:
Collections.sort(names, (String a, String b) -> {
return b.compareTo(a);
});
更简洁:
Collections.sort(names, (String a, String b) -> b.compareTo(a));
更更简洁:
Collections.sort(names, (a, b) -> b.compareTo(a));
项目需要当某事件触发时,执行http请求任务,失败时需要有重试机制,并根据失败次数的增加,重试间隔也相应增加,任务可能并发。
由于是耗时任务,首先考虑的就是用线程来实现,并且为了节约资源,因而选择线程池。
为了解决不定间隔的重试,选择Timer和TimerTask来完成
package threadpool;
public class ThreadPoolTest {
首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表。
select * from dict where table_name like '%SESSION%';
就可以查出一些表,然后根据这些表就可以获得会话信息
select sid,serial#,status,username,schemaname,osuser,terminal,ma
Admin类的主要方法注释:
1. 创建表
/**
* Creates a new table. Synchronous operation.
*
* @param desc table descriptor for table
* @throws IllegalArgumentException if the table name is res
public class LinkListTest {
/**
* we deal with two main missions:
*
* A.
* 1.we create two joined-List(both have no loop)
* 2.whether list1 and list2 join
* 3.print the join
事件回顾:由于需要修改同一个模板,里面包含2个不同的内容,第一个里面使用的时间差和第二个里面名称不一样,其他过滤器,内容都大同小异。希望杜绝If这样比较傻的来判断if-show or not,继续追究其源码。
var b = "{{",
a = "}}";
this.startSymbol = function(a) {