1,java.lang.NumberFormatException
把一个"null"的字符串转换为INTEGER 当然会出错(之所以出的不是空指针是因为你这个NULL是个字符串。
2.简单判断一个字符串里面含有中文
s1.length()==s1.getBytes().length
3,
可以对字符进行循环
for(char i='A';i<='Z';i++){%>
4,
得到当前的天数,比如今天3号,得到的就是3
Calendar c=Calendar.getInstance();
int day=c.get(Calendar.DAY_OF_MONTH);
5,
String的contains方法是区分大小写的
6,
比较两个String型的日期大小
if(createtime.trim().compareTo("2010-01-01 00:00:00")<0){
7,
Try语句中有return,那么finally中的code会执行吗?在return前还是后面
不一定
return之前没有System.exit();之类的直接让应用停下来的代码的话, finally中的代码就会执行 并且是在return之前执行
8,
计算两个日期类型相减的结果
Date date=msg.getCreatetime();
long diff=new Date().getTime()-date.getTime();
longhours=diff/(1000*60*60); 得到的是以小时为单位的
9,
使用DB7.class.getClassLoader().getResource("").getPath();
如果在eclipse里面,默认是到工程的bin路径为止
如果离开了eclipse里面,默认的路径到工程的路径为止
10,
This和super的本质区别
http://topic.youkuaiyun.com/u/20101116/00/c656ee28-f849-4b32-a8f8-1171409e232f.html
其实都犯了一个错误,其实楼主给出的英文里的说明已经非常明确地说明了,this是一个对象的引用,而super仅仅是一个指示编译器调用超类方法的特有的关键字,这里一定要记住!super不是一个引用,只是一个关键字!
super表现为指向作为父类的一个实例的当前对象的一个引用。所以super只是作为参考的引用,但不是引用
12, StringBuilder 详解
StringBuilder的Capacity属性的取值范围是:0~MaxCapacity;默认大小为:16。
Append等扩充字符串操作时,如果结果字符串的长度大于Capacity,则Capacity加倍;如
果加倍后的Capacity还不足以容纳结果字符串,则Capacity的值等于结果字符串的长度。
实现原理:StringBuilder维护一个长度等于Capacity(容量)的字符串(可以看作字符数组),当Capacity长度的字符串不足以容纳结果字符串时,StringBuilder开辟新的长度为经过上面的规则计算好的Capacity的内存区域,将原字符串复制到新的内存区域再进行操作,原字符串区域交给GC回收。因此这里也涉及到内存的分配与回收,使用StringBuilder时最好估算一下所需容量,用这个容量初始化Capacity,提高性能。
13, 以下是 Java 判断字符串是否为空的几种方法
方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低. "".equals("") 约156毫秒
方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法. "".length()<=0约15毫秒
方法三: Java SE 6.0才开始提供的办法,效率和方法二基本上相等,但出于兼容性考虑,推荐使用方法二或方法四. "".isEmpty() 约15毫秒
方法四:这是种最直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多 if(""=="")约16毫秒
14,选择错误的类加载器
错误的代码:
1. Class clazz = Class.forName(name);
2. Class clazz = getClass().getClassLoader().loadClass(name);
这里本意是希望用当前类来加载希望的对象, 但是这里的getClass()可能抛出异常, 特别在一些受管理的环境中, 比如应用服务器, web容器, Java WebStart环境中, 最好的做法是使用当前应用上下文的类加载器来加载.
正确的写法:
1. ClassLoader cl = Thread.currentThread().getContextClassLoader();
2. if (cl == null) cl = MyClass.class.getClassLoader(); // fallback
3. Class clazz = cl.loadClass(name);
错误的写法:
1. Class beanClass = ...
2. if (beanClass.newInstance() instanceof TestBean) ...
这里的本意是检查beanClass是否是TestBean或是其子类, 但是创建一个类实例可能没那么简单, 首先实例化一个对象会带来一定的消耗, 另外有可能类没有定义默认构造函数. 正确的做法是用Class.isAssignableFrom(Class) 方法.
正确的写法:
1. Class beanClass = ...
if (TestBean.class.isAssignableFrom(beanClass)) .
16,stringbuffer没有实现equals方法,所以两个内容相同的sb的equals比较为false所以将sb存入集合中有问题,
17,普通类只有public和默认的修饰符,而与方法平级的内部类有public protect friended private四种修饰符,在方法里面的内部类不能加任何的访问修饰符
18,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实 例对象会在多线程环境下使用,那么最好用StringBuffer
19,在try和finally中,try中的return和break比finally块要早执行
20,如果说两个线程都对自己的代码块进行同步,不过它们的同步锁不一样。按照正常情况来说这两个块是可以同时执行的,但是如果两个同步块都调用了同一个方法或其他 共享数据,那么只能够只有一个同步块执行,另一个同步块进行等待
21,如下会打印几?能否详述原因?
public class Test {
public static void fun(String a){
System.out.println(1);
}
public static void fun(Object a){
System.out.println(2);
}
public static void main(String[] args) {
fun(null);
}
}
会调用String那个参数的函数
null 可以赋值给Object 和 String 但是编译器会预先赋值给子类 即String 如果你再加一个Integer为参数的函数 编译器就会报错 因为编译器不知道赋值给Integer 还是String好 null 是一个模棱两可的类型 关于重载函数 其实都是编译器的功能 编译器在编译期间会把命名重复 参数不同的函数 重新起名 所以在字节码中不存在重载函数
22,只有在不能转换为其它类型的时候,才会取Object,因为Object是所有的父类,优先级是最低的,这个是最后才会用到的。
JAVA日期格式输出月份前面不想被自动补0
那可以把MM写成M,dd写成d,HH写成H即可23、
SuppressWarnings压制警告,即去除警告 rawtypes是说传参时也要传递带泛型的参数
24、BitSet的应用
默认值为false,设置为true表示编入索引,且size没有限制
public class Test {
public static void main(String[] args) {
BitSet bitSet = new BitSet();
bitSet.set(20);
System.out.println(bitSet.length());//21
for(int i=0; i<50; i++){//打印0-49的信息,只有当i为20的时候为true
System.out.println(i+"#"+bitSet.get(i));
}
}
}
25、
set 的内部实现是一个 value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。
26、一个类序列化后通过网络传输后反序列化必须要包名一样才行
27、远程传输的类必须要实现Serializable接口进行序列号,否则会报错
27、
NaN,是Not a Number的缩写。 NaN 用于处理计算中出现的错误情况,比如 0.0 除以 0.0 或者求负数的平方根。由上面的表中可以看出,对于单精度浮点数,NaN 表示为指数为 emax + 1 = 128(指数域全为 1),且尾数域不等于零的浮点数。IEEE 标准没有要求具体的尾数域,所以 NaN 实际上不是一个,而是一族。不同的实现可以自由选择尾数域的值来表达 NaN,比如 Java 中的常量 Float.NaN 的浮点数可能表达为 01111111110000000000000000000000,其中尾数域的第一位为 1,其余均为 0(不计隐藏的一位),但这取决系统的硬件架构。Java 中甚至允许程序员自己构造具有特定位模式的 NaN 值(通过 Float.intBitsToFloat() 方法)。比如,程序员可以利用这种定制的 NaN 值中的特定位模式来表达某些诊断信息。可用该方法进行判断
public static boolean isNaN(double v)
如果指定的数是一个 NaN 值,则返回 true;否则返回 false
28、
InputStream是一个抽象类,并且他实现了Closeable接口,源码如下:public abstract class InputStream implements Closeable{}
OutputStream也是一个抽象类,实现了Closeable和Flushable接口,源码如下:public abstract class OutputStream implements Closeable, Flushable{}
Reader也是一个抽象类,实现了Closeable和Readable接口,源码如下:public abstract class Reader implements Readable, Closeable{}
Writer同样也是一个抽象类,实现了Appendable Closeable和Flushable接口,源码如下:public abstract class Writer implements Appendable, Closeable, Flushable{}
可以很明显的看到上面都实现了Closeable接口,这儿接口主要作用是:Closeable是一种可以被关闭的,指向源地址或目的地址的数据。简单说,Closeable也是一种数据,只是这种数据可以被关闭,所有实现了这个接口的类,他们的数据流都可以被人为的关闭。这个接口有唯一一个方法:public void close() throws IOException。这个方法一旦被调用,将会关闭相应的输入输出流,并且会释放掉所有给这个流有关的系统资源。如果这个流已经关闭,则本次关闭,将不起作用。
由上面可知,所有继承于InputStream、OutputStream、Reader和Writer的类都具有一个close方法,用来人为的关闭对应的流,并且释放掉他们所占用的系统资源。
29、
java.util
接口 EventListener
所有事件侦听器接口必须扩展的标记接口。
30、
System.getProperty("java.io.tmpdir")
C:\Users\ADMINI~1\AppData\Local\Temp\