一、编码表
-------------------------------------
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;
}
}