本帖最后由 小石姐姐 于 2018-1-25 09:35 编辑
Math.round();
Math.round(m) = (int)Math.floor(a + 0.5f) Math.ceil(x):比x大的最小值。
Math.round(x):四舍五入。
Math.floor(x):比x小的最大值。 jdk说得很明白了,
-11.5+0.5=-11 Math.floor(-11)=-11
-11.3+0.5=-10.8 Math.floor(-10.8)= -11
-11.8+0.5=-11.3 Math.floor(-11.3)= -12 重写 关于重写,遵循以下的规则: (1)重写方法必须和被重写方法具有相同的参数列表, 返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型 。 (2)重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声明为public的方法重写成一个protected的方法)。 - class Test {
- void test(int i) {
- System.out.println("I am an int." + i);
- }
-
- void test(String s) {
- System.out.println("I am a string.");
- }
-
- public static void main(String args[]) {
- Test t = new Test();
- char ch = 'y';
- t.test(ch);
- }
- //结果为:I am an int.121
- }
JDBC的主要任务是什么?(三个) 1、建立与数据库的连接。
2、向数据库发起查询请求。
3、处理数据库返回结果。 TreeSet的构造函数 TreeSet(); TreeSet(Collection c);//构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。 TreeSet(Comparator comparator);//构造一个新的空 TreeSet,它根据指定比较器进行排序。 - public class NameComparator implements Comparator<Name>{
-
- public int compare(Name n1,Name n2){
- if(n1.getName().compareTo(n2.getName())>0) return -1;
- if(n1.getName().compareTo(n2.getName())<0) return 1;
-
- return 0;
- }
-
- public static void main(String[] args) {
- Set<Name> set = new TreeSet<Name>(new NameComparator());
-
- Name n1 = new Name("ray");
- Name n2 = new Name("tom");
- Name n3 = new Name("jame");
- set.add(n1);
- set.add(n2);
- set.add(n3);
-
- Iterator it = set.iterator();
- while(it.hasNext()){
- Name s = (Name)it.next();
- System.out.print(s.getName()+",");
- }
- System.out.println("一共有对象:"+set.size()+"个");
- }
- }//打印结果是:tom,ray,jame,一共有对象:3个
客户端排序时因为java.util.Comparator<Type>接口提供了具体的排序方式,<Type>指定了被比较对象的类型,Comparator有个compare(Type x,Type y)的方法,用于比较两个对象的大小。 Object中的hashcode()和equals() 在Java中任何一个对象都具备equals(Object obj)和hashcode()这两个方法,因为他们是在Object类中定义的。
equals(Object obj)方法用来判断两个对象是否“相同”,如果“相同”则返回true,否则返回false。
hashcode()方法返回一个int数,在Object类中的默认实现是“将该对象的内部地址转换成一个整数返回”。
接下来有两个个关于这两个方法的重要规范(我只是抽取了最重要的两个,其实不止两个):
规范1: 若重写equals(Object obj)方法,有必要重写hashcode()方法,确保通过equals(Object obj)方法判断结果为true的两个对象具备相等的hashcode()返回值。说得简单点就是:“如果两个对象相同,那么他们的hashcode应该 相等”。不过请注意:这个只是规范,如果你非要写一个类让equals(Object obj)返回true而hashcode()返回两个不相等的值,编译和运行都是不会报错的。不过这样违反了Java规范,程序也就埋下了BUG。
规范2: 如果equals(Object obj)返回false,即两个对象“不相同”,并不要求对这两个对象调用hashcode()方法得到两个不相同的数。说的简单点就是:“如果两个对象不相同,他们的hashcode可能相同”。
根据这两个规范,可以得到如下推论:
1、如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等 。
2、如果两个对象不equals,他们的hashcode有可能 相等。
3、如果两个对象hashcode相等,他们不一定 equals。
4、如果两个对象hashcode不相等,他们一定不 equals。 序列化的对象要实现Serializable接口,
Serializable接口没有需要实现的方法,
implements Serializable只是为了标注该对象是可被序列化的,
然后 使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象 ,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。 实现序列化(保存到一个文件)的步骤
a)Make a FileOutputStream
FileOutputStream fs = new FileOutputStream("foo.ser");
b)Make a ObjectOutputStream
ObjectOutputStream os = new ObjectOutputStream(fs);
c)write the object
os.writeObject(myObject1);
o s.writeObject(myObject2);
os.writeObject(myObject3);
d) close the ObjectOutputStream
os.close(); Split 在java.lang包中有String.split()方法,返回是一个数组
我在应用中用到一些,给大家总结一下,仅供大家参考:
1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or"); java转义字符 \":双引号
\':单引号
\\:反斜线 作用范围: this.context.setAttribute(MyConstants.CONTINENTS_KEY, continentlist);
public static final String CONTINENTS_KEY="CONTINENTS";
jsp页面中可以直接使用 CONTINENTS(${CONTINENTS }) ,而无需context.getAttribute("");
|