java学习笔记之常见类Object,Scanner,String

常见对象Object

常见对象(object类的概述)
  • A:Object类概述
    • 类层次结构的根类
    • 所有类都直接或者间接的继承自该类
  • B:构造方法
    • public Object()
    • 回想面向对象中为什么说:
    • 子类的构造方法默认访问的是父类的无参构造方法
常见对象(object类的hashcode()方法)
public int hashCode()
  • a:返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
  • b:不同对象的,hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。
常见对象(Object类的getClass()方法)(在反射的时候掌握)
public final Class getClass()
Class clazz=对象.getClass();
String str=clazz.getName();
  • 返回此Object的运行时类,获得真实类的全名称
_常见对象(Object类的toString()方法)
public String toString()
//重写toString方法:返回该对象的字符串表示
public String toString(){
  return this.name+this.age;
}
  • 它默认情况下的数据对我们来说没有意义一般重写该方法(它原本的值=getClass().getName() + “@” + Integer.toHexString(hashCode()) )
常见对象(Object类的equals()方法)
  • a:指示其他某个对象是否与此对象“相等”。 (比较地址)
  • b:默认情况下比较的是对象的引用是否相同。
  • c:由于比较对象的引用没有意义,一般建议重写该方法。(重写后比较对象中的属性值)
public boolean equals(Object obj){
     Student s=(Student)obj;//向下转型(因为多态不能直接访问子类的属性)
     return this.name.equals(s.name)&&this.age==s.age;//基本数据类型只能用==比较
}

==和equals都可以用来做比较返回值都是boolean类型区别在于
==是比较运算符,既可以比较基本数据类型(值)也可以比较引用数据类型(地址值)
equals方法只能比较引用数据类型但是地址值没有什么意义,我们需要比较地址值

常见对象Scanner

_常见对象(Scanner的概述和方法介绍)
  • Scanner的构造方法原理
    • Scanner(InputStream source)
    • System类下有一个静态的字段:
    • public static final InputStream in; 标准的输入流,对应着键盘录入。
        Scanner  sc=new Scanner(System.in);
       int i=sc.nextInt();//nextXxx()  获取下一个输入项。Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanner使用空格,回车等作为分隔符
       System.out.println(i);
       if(sc.hasNextInt())  System.out.println("整数");  //- hasNextXxx()  判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx
常见对象(Scanner获取数据出现的小问题及解决方案)
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个整数");
        int i=sc.nextInt();//录入的是:整数+\r\n
        System.out.println("请输入第二个字符串");
        String j=sc.nextLine();//可以接受任意类型,通过\r\n就证明一行结束
        System.out.println("i="+i+"j"+j);//会出现j录入进\r\n即没有录入信息
        //解决方案:1.创建两个对象(不推荐)2.都用nextLine方法,可以将整数字符串转化成整数的方法
_常见对象(String类的概述)
  • 程序中所有字符串文字都被实现为此类的实例//重写了String方法返回的该对象本身
  • 字符串不变(对象可变,属性值不变); 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。
_常见对象(String类的构造方法)
  • 常见构造方法
  • public String():空构造
  • public String(byte[] bytes):把字节数组转成字符串
  • public String(byte[] bytes,int index,int length):把字节数组的一部分转成 字符串
  • public String(char[] value):把字符数组转成字符串
  • public String(char[] value,int index,int count):把字符数组的一部分转成字符串
  • public String(String original):把字符串常量值转成字符串
        String s1=new String();
        System.out.println(s1);

        byte[] arr1={97,98,99};//ASCII码
        String s2=new String(arr1);//解码:解释计算机编码
        System.out.println(s2);

        byte[] arr2={97,98,99,100,101,102};
        String s3=new String(arr2,2,3);
        System.out.println(s3);

        byte[] arr3={'a','b','c','d','e'};
        String s4=new String(arr3);//将字符数组转换成字符串
        System.out.println(s4);
        String s5=new String(arr3,1,3);
        System.out.println(s5);
        String s6=new String("youknow");
        System.out.println(s6); 

(
注意:1.String里面的equals被重写了
2.创建String对象时一个在常量池一个在堆内存中
3.new String(“abc”)记录的是堆内存对象的地址值,而直接声明的是常量池中的地址值
4.java中有常量优化机制
)

_常见对象(String类的判断功能)
  • String类的判断功能
  • boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
  • boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
  • boolean contains(String str):判断大字符串中是否包含小字符串
  • boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
  • boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
  • boolean isEmpty():判断字符串是否为空。
  • "“和null的区别:”"是字符串常量同时也是一个String类的对象既然是对象当然也可以调用String类中的方法;而null是空常量,不能调用任何的方法,否则会出现空指针异常,null可以给任意的引用数据类型赋值
_常见对象(String类的获取功能)
  • int length():获取字符串的长度。
  • char charAt(int index):获取指定索引位置的字符
  • int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
  • int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
  • int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
  • int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
  • lastIndexOf
  • String substring(int start):从指定位置开始截取字符串,默认到末尾。
  • String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。
        String s11="nihao";
        System.out.println(s11.length());
        String s12="你知道吗?";
        System.out.println(s12.length());
        String s13="nihao";
        int index=s13.indexOf('h');//参数接受的是int类型,传递char类型的会自动提升,如果不存在返回就是-1
        System.out.println(index);
        int index1=s13.indexOf("ni"); //获取字符串中第一个字符出现的位置,如果不存在连续的字符就返回-1
        System.out.println(index1);
        String s14="heimahema";
        int index2=s14.indexOf('a',5); //从指定位置向后找
        System.out.println(index2);
        int index3=s14.lastIndexOf('a',5);//从指定位置向前找第一次出现的字符
        String s15="heimanihaoya";
        String s2=s15.substring(5);//左边是闭区间
        System.out.println(s2);
        String s3=s15.substring(0,5);//右边是开区间
        System.out.println(s3);
_常见对象(String类的转换功能)
  • byte[] getBytes():把字符串转换为字节数组。
  • char[] toCharArray():把字符串转换为字符数组。
  • static String valueOf(char[] chs):把字符数组转成字符串。
  • static String valueOf(int i):把int类型的数据转成字符串。
  • 注意:String类的valueOf方法可以把任意类型的数据转成字符串。包括对象
             String s1="abc";
             byte[] arr=s1.getBytes();  //通过gbk码表将字符串转换成字节数组
            //gbk码表一个中文代表两个字节且中文的第一个字节肯定是负数
             for(int i=0;i<arr.length;i++){
                 System.out.print(arr[i]+" ");
             }
//遍历字符串
*/
*   第一种方法是通过tochar通过索引
*   第二种方法是通过toCharArray方法转换成字符数组
*   第三种
*/           
   char[] arr={'a','b','c'};
   String s=String.valueOf(arr)//底层是由String类的构造方法完成
   System.out.println(s);
   String s2=String.valueOf(100);//将100转换成字符串
   System.out.println(s2+100);
   Person p1=new Person("张三",23);
   System.out.println(String.valueOf(p1));//相当于调用了对象的toString方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值