java笔记(三)

来源:互联网 发布:淘宝小号批量注册机 编辑:程序博客网 时间:2024/06/08 06:15

书接上文

27.内部类可以访问外部类的私有成员,外部类访问内部类的成员必须通过内部类对象才能实现

28. 非静态内部类不能定义静态变量,不能在静态方法中实例化

public class InnerTest {private String str;public InnerTest() {super();}public InnerTest(String str) {super();this.str = str;}static class InnerA {private String str1;// 28static int s;public InnerA() {super();}public InnerA(String str1) {super();this.str1 = str1;}public void Test2() {}}class InnerB {private String str1;public InnerB() {super();}public InnerB(String str1) {super();this.str1 = str1;}public void Test() {// 27System.out.println(str);}}public void Test() {InnerB iB = new InnerB();InnerA iA = new InnerA();System.out.println(InnerA.s);}public static void main(String[] args) {InnerTest iTest = new InnerTest();}}

29.内部类的一种应用,存储常量并分类

public class ProjectConst {public static class Const1{public final static String classs_1="room1";public final static String classs_2="room2";public final static String classs_3="room3";}public static class Const2{public final static String NAN = "boy";public final static String Nv = "girl";}}

30. String不可变型,String str = a +b+c+d;(a,b,c,d都是String类型)此时相当于开辟了四个空间,所以因为这个原因写sql语句尽量不要用+连接字符串

31.StringBuffer多线程的;StringBuilder单线程的,不安全

32.for循环相当于使用了迭代器

import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class Test {public static void main(String[] args){Set<Integer> s = new HashSet<>();s.add(1);s.add(2);s.add(3);s.add(4);s.add(5);Iterator<Integer> it = s.iterator();while(it.hasNext()){int tmp = it.next();System.out.println(tmp);}System.out.println();}}


33.s instanceofHashSet<Integer>会报错,泛型并不是一种类型

34.泛型前不能加static(static T a),静态方法里不能有泛型

35.两个类对象a,b a.equals(b),比较的事两个对象的地址

36.jvm会调用finalize()(垃圾回收方法)

37.arrayList适用于查找,不适用于插入删除,linkedlist适用于修改数据,因为会有下标索引

38.Set存储和查找功能强大,但不是线程安全的,有两个或以上的方法要修改数据时职能通过代码保证同步,set的元素可以是null

39. TreeSet实现了排序

40.Hashcode\equals函数要加上才能比较两个对象内部的属性

public class A {private String par1;private String par2;public A(String par1, String par2) {super();this.par1 = par1;this.par2 = par2;}public String getPar1() {return par1;}public void setPar1(String par1) {this.par1 = par1;}public String getPar2() {return par2;}public void setPar2(String par2) {this.par2 = par2;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((par1 == null) ? 0 : par1.hashCode());result = prime * result + ((par2 == null) ? 0 : par2.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;A other = (A) obj;if (par1 == null) {if (other.par1 != null)return false;} else if (!par1.equals(other.par1))return false;if (par2 == null) {if (other.par2 != null)return false;} else if (!par2.equals(other.par2))return false;return true;}public static void main(String[] args) {A a1 = new A("qwe", "wer");A a2 = new A("qwe", "wer");System.out.println(a1.equals(a2));}}

true

如果不加hashcode函数,是会返回false的

原创粉丝点击