java笔记(三)

书接上文

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;
		// 28
		static 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() {
			// 27
			System.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;
	}

	@Override
	public 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;
	}

	@Override
	public 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的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值