Java高级编程5-姜国海

①Object类

一切类都是从这个类继承来的
clone函数:浅复制 对象内部的引用直接复制,指向与之前相同的位置

class Student implements Cloneable{
    string name;
    int age;
    public static void mian(){
        Student s1 = new Student(18,"zs");
        Student s2 = (Student) s1.clone();
    }
}


equals 函数 判断两个对象是否相等
判断两个引用变量是否相等

class Student implements Cloneable{
    string name;
    int age;
    public static void mian(){
        //s1 s2 是两个不同的引用变量
        Student s1 = new Student(18,"zs");
        Student s2 = (Student) s1.clone();
        boolean b1 = s1.equals(s2);//false
    }

}

Object 类里面的equals
public boolean equals(Object another){//判断引用变量的值是否相等
    return this == another;
}

//两个对象相等:内存中两个对象的类型一样,封装的值一样,就是相等的。
class Student implements Cloneable{
    string name;
    int age;
    boolean gender;

    public boolean equals(Object o){//判断引用变量的值是否相等
        if(o == null){
            return false;
        }
        if(o instanceof Student) {
            Student s2 = (Student)o;
            o.getClass()== Student.class;//加一个这个判断
            if( s2.age == this.age && s2.name.equal(this.name)&& s2.gender == this.gender){
                return true;
            }
        }else{
            return false;
        }
    }
}

②Class类

一组具有相同特征结构的对象叫做类,本类不是由程序员创造,class 构造函数不可由程序员调用
任何对象都有是Class类型
Object.getClass().getClassName();

class Student implements Cloneable{
    string name;
    int age;
    public static void mian(){
        //s1 s2 是两个不同的引用变量
        Student s1 = new Student(18,"zs");
        Student s2 = (Student) s1.clone();
        s1.getClass() == s2.getClass();
        Student.class == s1.getClass();//class 是成员变量
    }

}

③finalize函数

释放垃圾对象的函数,虚拟机在合适的时候释放
释放失败的话之后就不会再次释放
例如,在finalize函数内部将this赋值给一个静态全局变量则会出现释放失败的情况,
以后就不会释放了

④hashCode函数

返回一个对象在内存中的地址

⑤toString

//返回类的名字,需要进行改写
class Student implements Cloneable{
    string name;
    int age;
    public String toString(){
        return "name="+name+...;
    }

}

⑥String类

class Student implements Cloneable{
    string name;
    int age;
    public int compareTo(Object o){//比较两个对象的大小,返回int,如果是0则大小相等
        return this.java - ((Student)o).java;
    }
}

String s = new String();//少用这个函数,不同平台运行结果不同,会降低java的跨平台特性
String(byte[]byte);用默认编码方式进行字符串的编码
String(byte[]byte,Charset charset);//一般使用这个指定字符串的编码解码方式
java虚拟机内存中的编码unicode,虚拟机自动进行由unicode到GB-13080的映射转换
我们编程的时候只需要知道字符的GB-13080编码就可以直接进行赋值

字符串对象都是只读对象,修改字符串是新创建一个字符串,如字符串改变大小写等,则性能会差
字符串运算会频繁的产生和释放字符串,则性能会差

重要函数 indexOf()//判断字符串是否包含某一子串

⑦StringBuffer

⑧包装类

int 对应的包装类

class Integer:
构造函数
Integer(int a);
Integer(String a);
Integer("6"),构造函数,将字符串转换为int
parseInt(String s);//将字符串转换为数字

相同的有parseDouble

toBinaryString();//转换为二进制字符串

valueOf()

字符串和包装类都是只读的类,不可进行数值的修改

⑨System类

in
out
ArrayCopy
后续更新

⑩集合类,集合接口

java.util

interface Collection //只是一个函数接口:
size()
add()
remove()
removeIf()
toArray()//返回对象数组
addAll()//添加一个集合到另一个集合
clear()//清空所有函数
contains();//判断是否包含某一个元素
//调用equals函数进行比较,只要相等就返回在这里,不是判断引用,而是判断值
Collection_1 c = ...;

List

继承自Collection

add()
add(int index,E element);
set(int index,E element);
get(int index);


subList(int fromIndex,int toIndex);//截取,不包括结尾位置的元素


实现类 ArrayList LinkList
ArrayList
存到数组里面,下标访问速度快
添加删除操作有时慢

LinkedList 数据存在双向链表
访问速度慢

Set

继承自Collection,函数与Collect一样,但是保证集合里面没有重复元素

HaseSet 
用equals进行比较,然后插入
可以是不同的类型

TreeSet:
用compareTo进行比较,然后插入,一定要实现compareTo接口、
必须用相同类型,可比较

猜你喜欢

转载自blog.csdn.net/l1558198727/article/details/80935418
今日推荐