Java之常用API

一,java中万物皆对象,所以Object类

  • 官方文档说明:
    类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

  • 1,equals方法

    • boolean equals(Object obj); //指示其他某个对象是否与此对象“相等”。 默认是object中的比较地址值

特别地: == 与equals的区别:
== 是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值.

equals 方法是一个方法,只能比较引用数据类型,所有对象都会继承object类中的方法,equals方法和 == 比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性.

  • 2, hashCode()

    • int hashCode();//返回该对象的哈希码值
  • 3, getClass() ;//返回此 Object 的运行时类。

  • 4,toString()返回该对象的字符串表示。默认是getClass().getName() + ‘@’ + Integer.toHexString(hashCode())

二 ,字符串类String(细节特别多,切勿被表面欺骗了.)

官方说明:

2.1概述:
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。 

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:

 String str = "abc";

等效于:

 char data[] = {'a', 'b', 'c'};
 String str = new String(data);

从上面的官方说明可以总结出:
区别以下两句代码的区别

    String str="abc";//这句代码的意思是在内存的常量池中有一个常量字符串"abc" 而左边的是字符串变量str,它指向该常量"abc";

String str=new String("abc");//这句代码的理解就是新创建的字符串是该参数字符串的副本.就是说常量池中先有"abc"字符串,然后复制一份给String对象,该对象的值就是"abc";

图解如下:
这里写图片描述

2.2构造函数
String类的构造函数有非常多,主要都是将其他类型的数据转换为字符串.
2.3各种功能方法
    自己看API文档吧.
2.4,常见面试的坑
1,String类比较  ==  与 equals 的区别
    String s1="abc";
    String s2="abc";
    System.out.println(s1==s2);//true
    System.out.println(s1.equals(s2));//true

解析如下图:

这里写图片描述

2,与第一题比较,会发现不同点
    String s1=new String("abc");
    String s2="abc";
    System.out.println(s1==s2);//false,此处的地址值不同了.
    System.out.println(s1.equals(s2));//true,equals的比较字符串的字面值


3,字符串的 + 的作用

    String s1="ab";
    String s2="abc";
    String s3=s1+"c";//此处的底层是用stringBuffer或stringBuilder做的.
    System.out.println(s3==s2);//false
    System.out.println(s3.equals(s2));//true

这里写图片描述

4,与第3比较,会发现不同

    String s1="a"+"b"+"c";//此处是操作常量池的,而java有常量优化机制.
    String s2="abc";
    System.out.println(s1==s2);//true
    System.out.println(s1.equals(s2));//true
2.5,字符串的基本操作

1,字符串的遍历

        String str="i love you";
        for (int i = 0; i < str.length(); i++) {
            System.out.print(str.charAt(i));
        }
    }

2,统计各种字符的出现的次数:

        String str="ASDF失联飞 fdsfsf23234990#$@的机";
        int big=0;
        int small=0;
        int num=0;
        int other=0;
        for (int i = 0; i < str.length(); i++) {
            if(str.charAt(i)>='A'&&str.charAt(i)<='Z'){
                big++;
            }else if(str.charAt(i)>='a'&&str.charAt(i)<='z'){
                small++;
            }else if(str.charAt(i)>='0'&& str.charAt(i) <='9'){
                num++;
            }else{
                other++;
            }
        }

        System.out.println("大写:"+big+",小写:"+small+",数字:"+num+",其他:"+other);

3,将录入的字符串反转输出

        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        char[] arr=str.toCharArray();
        String str2="";
        for (int i = arr.length-1; i>=0 ; i--) {
            str2+=arr[i];
        }
        System.out.println(str2);
    }

4,大串中找小串

    String bigStr="i love you and you love me,so we are love eachother,let us our love forever!";
        String findStr="love";
        int index=0;
        int count=0;
        while((index=bigStr.indexOf(findStr))!=-1){
            count++;
            bigStr=bigStr.substring(index+findStr.length());

        }

        System.out.println("count:"+count);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值