Java复习之知识点整理(九)----编码表,字符集,编码解码,数组集合,equals

一、编码表
-------------------------------------
1.ascii:美国标准交换码(一个字节用7位表示)
2.iso:欧洲码表,无法存储汉字
3.gb2312/gbk:简体中文码表(2个字节存储一个汉字)
4.big5:繁体中文码表
5.utf-8:可变长度表示法,最多三个字节表示一个字符(汉字三个字节)
6.unicode:万能码表,两个字节表示一个字符
7.2-6所有的码表,都包含了ascii码表


二、字符集Charset
---------------------------------------
1.查看默认字符集:Charset c = Charset.defaultCharset();
2.使用unicode编码给字符赋值:'a' --> '\u0061' (\\u + 2个16进制的数字)
	@Test
	public void ts01() throws Exception
	{
		Charset c = Charset.defaultCharset();
		System.out.println(c.name());		
	}


三、编码,解码
----------------------------------------
1.编码:getBytes("gbk");
2.解码:String str = new String("abc中","gbk");

@Test
	public void ts02() throws UnsupportedEncodingException
	{
		String s = "abc中";
		//编码
		byte [] bs = s.getBytes("gbk");
		//解码
		String s1 = new String(bs,"utf-8");
		System.out.println(s1);
	}

四、StringBuffer/StringBulider
-----------------------------------------
1.StringBuffer:线程安全的,同步的,效率低
2.StringBulider:非线程安全的,效率高


五、数组
----------------------------------------
1.类型必须相同
2.长度固定不变
3.地址连续
4.可以存基本数据类型,也可以存对象


六、集合
-----------------------------------------
1.长度可变
2.不可以存基本数据类型,只能存对象
3.类型可以不同


七、List
-----------------------------------------
1.有序,可重复

八、set
----------------------------------------
1.无序,不能重复


九、map
----------------------------------------
1.<k,v>映射关系
2.无序,不重复


十、equal方法
----------------------------------------
/*
 * 猫
 */
class Cat{
	
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public Cat(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
		
	public boolean equals(Object obj)
	{
		//判断空值
		if(obj == null)
			return false;
		
		//判断地址
		if(obj == this)
			return true;
		
		//判断类型
		Class<? extends Object> clazz = obj.getClass();
		if(clazz != Cat.class)
		{
			return false;
		}
		
		//判断空值和属性值
		Cat objCat = (Cat) obj;
		
		boolean isNameEqual = false;
			
		if(objCat.getName() == null)
		{
			if(this.getName() == null)
				isNameEqual = true;
		}
		else 
		{
			isNameEqual = objCat.getName().equals(this.getName());
		}
			
		return (objCat.getAge() == this.getAge()) && isNameEqual;
	}	
}

十一、练习
创建Animal类
class Animal{
String name;
int age;
/get/set
cry() //抽象方法
}
创建Cat和Dog类,继承Animal类,实现cry方法.
class Cat ...{
catchMouse(){...}
}

class Dog ...{
watch(){...}
}
创建Person类。
class Person{
String name ;
String addr ;
int age ;
//get/set
}
1. 创建ArrayList集合,里面放置100只猫,200只狗,10个人。
2.Person类,重写equals方法,判定标准,name,addr,age均相同才是相同。
-------------------------------------------------------------------------------------------------------------------------

public class Ts03 {

	public static void main(String[] args) {
		
		ArrayList<Object> list = new ArrayList<Object>(); 
		
		for (int i = 0; i < 100; i++) {
			list.add(new Cat("cat" + i,i));
		}
		
		for (int i = 0; i < 200; i++) {
			list.add(new Cat("dog" + i,i));
		}
		
		for (int i = 0; i < 10; i++) {
			list.add(new Person("person" + i, i+"" ,i));
		}
		
		for (int i = 0; i < list.size(); i++) {
			
			if(list.get(i).getClass() == Cat.class)
			{
				Cat cat = (Cat)list.get(i);
				System.out.println(cat.getName());
			}
			
			if(list.get(i).getClass() == Dog.class)
			{
				Dog dog = (Dog)list.get(i);
				System.out.println(dog.getName());
			}
			
			if(list.get(i).getClass() == Person.class)
			{
				Person person = (Person)list.get(i);
				System.out.println(person.getName());
			}
		}
	}
}

abstract class Animal{
	
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	
	public Animal() {
		
	}

	public Animal(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public abstract void cry();
	
}

class Cat extends Animal
{	
	public Cat(String string, int i) {
		super(string,i);
	}

	public void cry() {
		
		System.out.println(getName() + "的猫在叫,喵喵喵~");
	}
	
	public void catchMouse()
	{
		System.out.println("我叫" + getName() + ",我会抓老鼠~");
	}	
}

class Dog extends Animal
{
	public Dog(String string, int i) {
		super(string,i);
	}
	
	public void cry() {
		
		System.out.println(getName() + "的狗在叫,汪汪汪~");
	}
	
	public void watchHome()
	{
		System.out.println("我叫" + getName() + ",我会看家~");
	}	
}

class Person
{
	private String name;
	private String addr;
	private int age;
	
	public Person() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Person(String name, String addr, int age) {
		super();
		this.name = name;
		this.addr = addr;
		this.age = age;
	}

	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public String getAddr() {
		return addr;
	}
	
	public void setAddr(String addr) {
		this.addr = addr;
	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	public boolean equals(Object obj)
	{
		//判断为空
		if(obj == null)
			return false;
		
		//判断地址
		if(obj == this )
			return true;
		
		//判断类型
		if(obj.getClass() != this.getClass())
			return false;
		
		Person p = (Person)obj;
		
		//判断属性值
		boolean isNameEquals = false;
		boolean isAgeEquals = false;
		boolean isAddrEquals = false;
		
		if(p.name == null)
		{
			if(this.name == null)
				isNameEquals = true;
		}
		else
			isNameEquals = p.name.equals(this.name);
		
		if(p.addr == null)
		{
			if(this.addr == null)
				isAddrEquals = true;
		}
		else
			isAddrEquals = p.addr.equals(this.addr);
		
		isAgeEquals = (p.age == this.age);
		
		return isAgeEquals && isAddrEquals && isNameEquals;
	}
}



猜你喜欢

转载自blog.csdn.net/xcvbxv01/article/details/80874648