object类与String类

Object类是所有类的终极父类。 任何一个类都继承了Object类。sun提供了很多类。

我们利用javap来反编译一下类文件:

public class Demo79{
    public static void main(String[] args){
        System.out.println("i love you");
        System.out.println(new People79().toString());
    }
}
class People79{   
}

上面就是源文件,其中调用一个toString()方法打印对象的一些信息。但是这个toString方法,People79本身也没有写上这个方法,我们来检测一下这个方法到出自哪里

上面很明显就是调用了object的toSting()方法,从侧面印证了,我们所有的类都继承了object类

下面说object中三个常用的方法:

下面是让线程进行等待的方法,根据参数不同进行重载

打印对象的哈希码值,和它相应的包的位置

上面两个信息打印出来的都一样。

我们就去看那一下println的源代码:

注意是打印对象的哪一个源代码

里面又调用了一个print函数:

上面就是内部也调用了一下toString()方法

上面这个toString()我们可以重写,按照我们想要的方式进行重写

equals(Object obj)   用于比较两个对象的内存地址,判断两个对象是否为同一个对象。

传入者对象与调用者对象比较

最基本的equals就是比较两个对象内存地址

一般重写hashCode()就要重写equals

下面说一下字符串:

上面很明显java的字符串也是自动导包的

两种方式创建字符串:

String str1 = "hello";

String str2 = "hello";

String str3 = new String("hello");

String str4 = new String("hello");

System.out.println("str1==str2?"+(str1==str2));  // true  

System.out.println("str2==str3?"+(str2==str3));  //false

System.out.println("str3==str4?"+(str3==str4));  // false

System.out.println("str3.equals(str2)?"+(str3.equals(str4))); //true

这个情况String类可能重写了equals方法,查看源代码:

上面很明显比较是两个字符串的内容

在String中的代码:

==用作比较对象,一般是比较两个对象的内存地址:

上面就是字符串重写了equlas方法,字符串比较的是内容,只要内容是一样的,就返回trrue

下面说一下字符串在内存里面是如何创建的:

new的方式就是在对上面开辟一个对象,把常量池中的内容给拷贝进来。

 String 字符串类:

  

 笔试题目:new String("abc")创建了几个对象?

  两个对象, 一个对象是 位于字符串常量池中,一个对象是位于堆内存中。

*/

问:整型也是比较地址?

整型比较的是数值

看一下下面代码有没有什么风险?

如果test中给一个NULL,那么就会出现空指针异常,我们把它捕获处理

字符串这个对象如果不存在去调用equals就会造成空指针异常

//修改一下代码

public static void test(String str){

if("中国".equals(str))

{

System.out.println("回答正确");

}else{

System.out.println("回答错误");

}

}

字符串本省就是一个对象,在常量池中创建一个对象

一个一个字节就是一个一个字符,按照常理来分析,字节数组,字符数组,都可以转换成字符串对象

根据构造函数来进行,字节数组,字符数组的转换---》转换成相应的字符串对象

String()  创建一个空内容 的字符串对象。

  String(byte[] bytes)  使用一个字节数组构建一个字符串对象,把这里面的数据变成ASCII码输出

  String(byte[] bytes, int offset, int length)

  bytes :  要解码的数组

  offset: 指定从数组中那个索引值开始解码。

  length: 要解码多个元素。

 

  String(char[] value)  使用一个字符数组构建一个字符串。

  String(char[] value, int offset, int count)  使用一个字符数组构建一个字符串, 指定开始的索引值,与使用字符个数。

String(int[] codePoints,int offset,int count)//y与字节解码一样

String(String original)

想到字符串中的方法:
1.获取特定索引位置的字符charAt(int index)
2.获取字符串第一次出现和最后一次出现的位置indexOf(String string) and lastIndexOf(String string)
3.判断字符串长度是否为空isEmpty();长度是否为0
4.是否包含指定序列,也就是说是否包含指定字符串contains(String string)插一嘴,一般来说,判断方法返回的一般都是真假值
5.判断是否是指定的字符串结束endsWith(String str)....这个方法有点重要
6.什么字符串的截取,替换,大小写。。。

解决下面的所有习题:

  1. 去除字符串两边空格的函数

  1. 获取上传文件名  "D:\\20120512\\day12\\Demo1.java"。

  1. 将字符串对象中存储的字符反序。

  1. 求一个子串在整串中出现的次数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值