文章标题

来源:互联网 发布:python 爬取搜索引擎 编辑:程序博客网 时间:2024/06/05 18:40

Day15
一 Java的API及object类

1.API概念

Java API就是JDK中提供给我们使用的类,
只需要学习这些类如何使用即可。
2.Object类概述

Q:为什么之类的构造方法默认访问的是父类的无参构造方法?

Java语言中的根类
所有类都直接或间接继承该类
object描述的方法子类都可以使用
所有类在创建对象时最终找的父类就是object
接口不继承object
3.equals方法比较内存地址

引用类型中 = = 用来比较对象的内存地址是否相同
if(A instanceof B) 判断类型A是否为B类型

Q:object方法中equal()方法的作用?

用于比较两个对象是否相同,Object类中就是使用两个对象的内存地址在比较。
Object类中的equals方法内部使用的就是==比较运算符。
对象都是new出来的 地址都不相同 两个对象比较地址 并没有什么实际意义 此时应该考虑比较对象的成员变量(应重写父类的equals方法 自己定义对象的比较方式)
4.重写toString方法

package demo01;public class person {  private String name;  private int age;  person(String name,int age){        this.name = name;        this.age = age;    }  //here,rewrite toString() function  public String toString(){//public 后记得跟的是方法的返回类型      return name+"今年的年龄是"+age;// tip: here cannot write static type   }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;}}import java.util.Random;//toString 返回该对象的字符串表示//本讲研究toString方法public class Testtostring {    public static void main(String[] args) {        //调用person类的方法toString        person p = new person("张三",20);        String s = p.toString();//注意方法的返回值是String类型 要用String类型的变量去接收        System.out.println(s);//输出结果是对象的内存地址        System.out.println(p);//由运行结果相同看出 输出语句中的参数是一个对象的话 默认调用该对象的toString方法                               //该语句等价于System.out.println(p.toString)();        //此处没有必要去看对象的内存地址,所以返回person类中去重写toString 的方法        Random r = new Random();        System.out.println(r);//此处举例,显示的结果是Random类在内存中的地址    }}

第三章 String类
1.String类就代表一个字符串对象

package demo02;/* * String类的特点: *   java中的思想 一切皆对象;所以字符串“  ”这玩意也是对象 *   类是用来描述事物的,String类就是用来描述字符串对象 *   java中,所有的""都是String类的对象 *    *   方法进栈 ,对象在堆内存 *   字符串的本质 是一个字符的 数组  点住类按F3可查看类的源码 */public class Stringdemo {  String str = "zzl";//此处即是声明了一个字符串对象str(是一个引用类型 zzl是一个字符串常量),而且不需要写new}

2.String类创建方式和比较

package demo02;public class Stringdemo02 {   public static void main(String[] args) {    //字符串定义方式有两种 一是直接用= 二是使用String类的构造方法       String str1 = "abc";//方式一       String str2 = "abc";//       System.out.println(str1);       System.out.println(str2);       System.out.println(str1==str2);//引用数据类型 比较对象的地址 此处的结果是true 说明是指向了同一地址       String str3 = new String("abc");//字符串定义方式二 记得加:“” str3保存的是new string的一个内存地址,并非是abc所占据的地址       System.out.println(str1==str3);//此处虽然是同一个字符串 但定义方式不同,导致内存地址并不相同,结果是false       System.out.println(str1.equals(str3));//t 此处相同的原因是因为string类继承了父类object,重写了方法equals,建立了字符串自己的比较方式,不再是比较地址,而是去比较字符串中每个字符是否相同       System.out.println(str1.equals(str2));//t}}

3.String类构造方法

package demo02;/* * String类的构造方法,重载形式多 */public class StringDemo03 {    public static void main(String[] args) {        f1();        f2();    }    /*     * 定义方法,String类的构造方法 很多 仅仅举例常用讲解     * String(byte[] bytes)  传递字节数组  将字节数组转成字符串     * 通过使用平台的默认字符集 解码指定的byte数组 构造一个新的string     * 平台:机器所使用的操作系统     * 默认字符集:操作系统中的默认编码表,中文的为GBK(简体中文 兼容ascll编码表)一个汉字俩字符     */    public static void f1() {        byte[] bytes = {97,98,99,};//该String的构造方法将数组中的每个字节对应的查询编码表,得到新结果;此处如果是负数,则会出现汉字        String s = new String(bytes);        System.out.println(s);        byte[] bytes1 = {65,66,67,68,69,70};        String s1 = new String(bytes1,0,2);        //String(byte[] bytes,int offset,int length) 字符数组的一部分变成字符串        //offset 数组开始的索引; length 转换的个数,并非结束索引,此处从0开始取2个        System.out.println(s1);    }    /*     * String(char[] value)  传递字符数组     * 将字符数组转换成字符串  ;注意这里是字符数组而非字节数组     */    public static void f2(){        char[] ch = {'a','b','c','d','e','f','g','h'};        String s = new String(ch);//调用string的该构造方法 将该字符数组传入        System.out.println(s);        String s1 = new String(ch,1,4);        System.out.println(s1);    }}