java se day12 火推

来源:互联网 发布:时间闹钟提醒软件 编辑:程序博客网 时间:2024/05/16 12:57

面向对象已讲解知识点大纲:

-   类    对象    引用-   方法-   堆栈方法区(内存)-   构造方法-   方法的重载-   私有-   this-   静态-   单例设计模式-   继承-   权限修饰符-   多态-   抽象类-   接口-   内部类

Object 类

p1 == p2p1.xx(p2);
equals 重点
equals 方法在非空对象引用上实现相等关系: 自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。 对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。 传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。 一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。 对于任何非空引用值 x,x.equals(null) 都应返回 false。 package cn.xdl.demo1;public class Person {    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 Person(String name, int age) {        super();        this.name = name;        this.age = age;    }    public Person() {        super();        // TODO Auto-generated constructor stub    }    @Override    public boolean equals(Object obj) {        if(obj==null) {            return false;        }        if(this==obj) {            //先判断地址是否相等, 地址相等表示是同一个对象, 返回为true            return true;        }        //内存地址不同 , 判断obj的类型, 是否与当前类型相同        if(obj instanceof Person) {            //类型相同时, 我们比较属性的值是否相同            Person p = (Person) obj;            if(p.age != this.age) {                //年龄不相同                return false;            }            //地址不同, 类型相同, 年龄相同 ,接下来判断姓名            if(!p.name.equals(this.name)) {                //姓名不同                return false;            }            //地址不同, 类型相同, 年龄相同 ,姓名相同            return true;        }else {            //类型不同, 无法比较 , 返回false             return false;        }    }}
HashCode()方法
这个方法来自Object类, 返回一个int值, 这个方法是为了提高哈希表的性能 !    一般与Equals方法一起使用 !规范要求:     1.  一致性 , 同一个对象, 属性不改变的情况下,  返回的hashCode值应该固定 !    2.  相同的两个对象, hashCode值应该一致 !    3.  hashCode值, 不是用来判断对象是否相同的根据, hashCode值相同, 对象不一定相等!  不过在设计代码时, 我们建议, hashCode值与equals判断的结果保持一致 !

toString方法

用于返回对象的字符串表示形式 !  一般用于对象数据的查看与打印 !System.out.println方法传入对象时, 其实自动调用的是 对象的toString方法
clone 克隆 (了解)
用于对象的克隆操作这个方法 由Object实现 !  我们需要添加克隆标记(实现Cloneable接口)这个方法的使用 , 存在一些限制,  默认情况下, 一个对象是无法进行克隆的 ,需要给这个对象的类型, 添加一个可被克隆的标记 !案例:     Person p3 = (Person) p1.clone();    System.out.println(p3);    System.out.println(p1);    System.out.println(p3==p1);    System.out.println(p3.equals(p1));

基本数据类型与包装类

java.lang.Integer   intjava.lang.Long      longjava.lang.Double    doublejava.lang.Character charjava.lang.Boolean   booleanjava.lang.Byte      bytejava.lang.Float     floatjava.lang.Short     short

基本数据类型与 包装类如何转换(了解)

什么是装箱?     是将一个基本数据类型转换为包装类对象的过程!什么是拆箱?    是将一个包装类的对象转换为基本数据类型的过程!
jdk1.5之前:
需要手动拆箱, 和 手动装箱int a = 10;//装箱操作    Integer b = Integer.valueOf(a);    Integer b2 = new Integer(a);//拆箱操作    int c = b.intValue();例如:  两个Integer 在早期进行加法运算时:     Integer a =  new Integer(10);    Integer b =  new Integer(20);    int sum = a.intValue()+b.intValue();    Integer sumI = new Integer(sum);
jdk1.5之后:
编译器, 帮我们 完成了 自动拆箱 和 自动装箱    Integer a = 10;    Integer b = 20;    Integer sum = a+b;
常用方法与属性: 重点
MAX_VALUE : 全局常量, 表示当前包装类型的最大值

字符串转换数据类型-   通过parseXXX    int parseInt(String text):     这个方法,  用来将一个字符串的数字, 转换为Integer类型    有时我们经常从网络, 用户 ,数据库等, 读取一些字符串格式的数据, 有可能这些数据是整型的 , 可以通过parseXXX将其转换为对应的类型-   构造方法    new Integer(String text);转换格式 会出现错误:      NumberFormatException  数字格式化异常 

String

特性
-   常量池中重复利用    因为字符串经常在程序中出现 , 当编写了一个字符串后 , 这个字符串会被还存在常量池中, 如果重复出现相同字符串, 则使用同一块内存中的对象 !    如果重复出现的字符串 是 通过new开辟的空间, 则表示显式指定新空间进行字符串的存储, 就不会拿来重复利用 !-   String的值无法改变    String类型的值, 在内存空间中一经确定, 字符序列是无法改变的! 进行拼接字符串, 需要舍弃原有字符串 , 开辟新的空间进行存储 !    所以不建议, 进行过多的拼接字符串操作 !    String a = "";    for(int i=1;i<=100;i++){        a = a+i;    }

转义字符 \

将原本在Java中具备特殊含义的字符, 转换为布局含义的普通字符String text =  "他就是"董飞"";上述的代码出现了问题, 引号再Java中具备特殊的含义: 添加转义字符后:     String text =  "他就是\"董飞\"";    输出的结果为: 他就是"董飞"

又来了一个问题,  String text = "他还是\董飞"我们可以通过转义字符, 将另一个转义字符转换为普通字符 !

通过转义字符, 可以转化的文本以及含义:

\u+4个数字 : unicode编码 !\\          : 将转义字符转换为普通字符\"          : 将双引号转换为普通字符\r          : 回车\n          : 换行\t          : 制表符 , 横向进入下一个单元格\b          :  退格(了解)\f          : 走纸换页(了解)换行符再不同的操作系统下 有不用的写法: 再Mac os 里换行使用 \n在Unix 里使用 \r再windows使用 \r\n 

String常用方法

-   equals :  (重点(*****))    比较的规则:          获取到两个字符串中的字符数组 ,  对两个字符数组中的每一个元素进行比较, 如果都相同, 则返回true; 源码如下:  public boolean equals(Object anObject) {    if (this == anObject) {        return true;    }    if (anObject instanceof String) {        String anotherString = (String)anObject;        int n = value.length;        if (n == anotherString.value.length) {            char v1[] = value;            char v2[] = anotherString.value;            int i = 0;            while (n-- != 0) {                if (v1[i] != v2[i])                    return false;                i++;            }            return true;        }    }    return false;}

    6个基本方法:     //一个字符串    String text = "  abcd1ABCD  ";    //1.    将字符串中的所有字符转换为小写并返回(重点(*))    System.out.println(text.toLowerCase());    //2.    将字符串中的所有字符转换为大写并返回(重点(*))    System.out.println(text.toUpperCase());    //3.    去除字符串中的前后空白    System.out.println(text.trim());(重点(*))    //4.    判断字符串是否以某字符串开头    System.out.println(text.startsWith(" "));(重点(*))    //5.    判断字符串是否以某字符串结尾    System.out.println(text.endsWith("D"));(重点(***))    //6.    获取字符串的长度(字符序列的长度, 也就是字符串中字符数组的长度)(重点(*****))    System.out.println(text.length());

(重点(***))indexOf : 用来查找一个字符 或 字符串 在 当前字符串中的位置 !四个方法的重载:     -           参数1: char类型的参数  : 要查找的字符        从左至右查找一个字符在字符串中的位置    -           参数1.    char类型的参数,          参数2.    int类型的 , 表示开始索引         从参数2的位置向右查找一个字符的位置    -         参数1.    String类型的参数: 要查找的字符串        从左至右查找一个字符串在字符串中的位置    -           参数1.    String类型的参数: 要查找的字符串        参数2.   int类型的 , 表示开始的索引        从指定的开始位置(参数2) , 向右查找一个字符串的位置 !查找的结果:      1. 从左至右 查找到的第一个匹配的字符或字符串的下标!    2.  如果查询不到 , 返回-1;

(熟悉))lastIndexOf : 用来查找一个字符 或 字符串 在 当前字符串中的位置 !(反向查找)四个方法的重载:     -           参数1: char类型的参数  : 要查找的字符        从右至左查找一个字符在字符串中的位置    -           参数1.    char类型的参数,          参数2.    int类型的 , 表示开始索引         从参数2的位置向左查找一个字符的位置    -         参数1.    String类型的参数: 要查找的字符串        从右至左查找一个字符串在字符串中的位置    -           参数1.    String类型的参数: 要查找的字符串        参数2.   int类型的 , 表示开始的索引        从指定的开始位置(参数2) , 向左查找一个字符串的位置 !查找的结果:      1.  从右至左 查找到的第一个匹配的字符或字符串的下标!    2.  如果查询不到 , 返回-1;

(重点(**))char charAt(int index)参数1. 要获取字符的索引从一个字符串中 取出指定索引下的字符, 并返回

(重点(***))String substring : 从一个字符串中截取其中一部分 并返回方法存在两个重载方法:     -         参数1.  截取的开始位置(包含)    表示从指定的开始位置截取到字符串的结尾     -           参数1. 截取的开始位置(包含)        参数2. 截取的结束位置(不包含)    表示从指定的开始位置 截取到 指定的结束位置!案例:     String text = "床前明月光,玻璃好上霜,要不及时擦,整不好得脏";    String newText = text.substring(5);    System.out.println(newText);    String newText2 = text.substring(5,text.length());    System.out.println(newText2);

(重点(*))byte[] getBytes()    存在两个方法的重载:    -           没有参数列表         按照当前系统的默认编码表 将当前的字符串打碎(还原)为字节数组,并返回    -           参数1. 指定的编码表的名称()            可以填入:                  <1> : iso-8859-1 : 纯英文编码                <2> : gbk        : 简体中文编码                <3> : gb2312     : 简体中文编码                <4> : utf-8      : unicode编码        按照指定的编码表 将当前的字符串打碎(还原)为字节数组,并返回
原创粉丝点击