API String类 Object类(String类 和 Object类 的方法这么多 我要背到天荒地老)

    一.API使用步骤:
    1.打开帮助文档。
    2.点击显示,找到索引,看到输入框。
    3.你要找谁?在输入框里输入,然后回车。
    4.看包。java.lang下的类不需要导包,其他需要。
    5.看类的解释和说明。
    6.学习构造方法。
    7.使用成员方法。
    
    练习:获取键盘录入的字符串
        查看类
            java.util.Scanner:该类需要import导入后使用。
        查看构造方法
            public Scanner(InputStream source): 构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。
        查看成员方法
            public int nextInt():获取下一个int数字。
            public String nextLine():获取下一行完整字符串。
        使用Scanner类,完成接收键盘录入数据的操作,代码如下:
        //1.导包
        import java.util.Scanner;
        public class Demo01_Scanner {
            public static void main(String[] args) {
                //2. 创建键盘录入数据的对象
                Scanner sc = new Scanner(System.in);
                //3. 接收数据
                System.out.println("请录入一个字符串:");
                String line = sc.next();
                //4. 输出数据
                System.out.println("您输入的字符串:"+line);
            }
        }
        
二.  Object类

    2.1 toString 方法
    java.lang.object  java中所有类的根类 所有的类都直接或间接继承自Object类
    构造方法
        public Obiect()
    方法
        public String toString()返回该对象的字符串表示.
                                在Object类中打印的是地址值,子类一般会重写此方法 
                                返回对象的属性值
        
    创建Person类, 并调用方法toString()
        public static void main(Srting[] args){
            Person s = new Person();
            String str = s.toString();
            System.out.println(str);
            System.out.println(s.toString());
        }
        在输出语句中打印对象, 就是在调用对象的toString()方法
        
    toString方法的重写
        public class Person {  
            private String name;
            private int age;

            @Override
            public String toString() {
                return "Person"+name+":"+age;
            }
              // 省略构造器与Getter Setter 空参构造 实参构造
        }
        Person类重写Object类的toString方法 返回对象的属性值
        对于当前Person类来说就是返回name和age的值
        
        电脑快捷键生成:alt + instert   ------>toString
    
        Person p = new Person("liuyan",66);
        //当我们打印一个引用类型变量时 其实默认调用它的toString方法
        System.out.println(p);
        System.out.println(p.toString());
        
    2.2equals方法
        方法声明: 
        public boolean equals(Object obj):指示其他对象是否与此对象"相等";
                                          如果不重写此方法 比较的是两个对象的地址值
                                          子类一般会重写此方法 不再比较地址值 而是比较属性值
        
        ==  如果比较基本类型 比较的是基本类型的数值是否相等
            如果比较引用类型 比较的是地址值是否相同;
        equals 比较String类型  比较的是对象的内容是否相同
        
        电脑快捷键生成: alt + instert ------> qeuals + hashCode
        
    2.3hashCode方法
        Object类
            public int hashCode()  获取对像的哈希值
                                哈希值:可以理解为一个唯一值  相当于人一出生的身份号 可以理解为是逻辑地址值
            
            //如果不重写hashC方法 比较两个对象的哈希值 就相当于比较两个对象的地址值
            object obj = new object();
            System.out.println(obj.hashCode());
            System.out.println(obj.hashCode == obj);
            
            //hashCode方法是可以重写的  实际上String类重写了Object的hashCode  主要按照内容进行重写的
            //            比较两个字符串的hashCode不是比较地址值 而是比较两个字符串的内容
            String s = "abc";
            String s1 = "aac";
            String s2 = "abc";
            sout(s.hashCode());
            sout(s1.hashCode());
            sout(s.hashCode() == s1.hashCode()); //false  比较内容
            sout(s.hashCode() == s2.hashCode()); //true   比较内容
            
            //如果两个字符串的hashCode值不同 说明这两个字符串一定不同
            //如果两个字符串的hashCode值相同  不能说明这两个字符串一定是相同的
            //因为可能会出现特殊情况 字符串不同  计算的hashCode值相同  
            //(如:"重地" 与"通话" 这两个字符串的hashCode值是一样的 还需进行equals方法比较)
            //此时hashCode值 无法确定这两个字符串是否相等 需要继续比较equals
            //这样先比较hashCode 后比较equals的方式 可以提高比较的效率
            
        **结论:
            如果不重写Obiect类的hashCode方法 比较两个对象的hashCode就是比较两个对象的地址值
            如果重写了Object类的hashCode方法 比较两个对象的hashCode就是比较两个对象的内容
                        如果想确定内容是否真的相同
                            可以先比较两个对象的hashCode
                                    不同   说明这两个字符串一定不同
                                    相同   不能说明这两个对象一定是相同 需要继续比较equals
                                                    不同  一定不同
                                                    相同
    
三.String类    
    3.1 字符串特点
        java.lang.String
            特点:
                1. 所有字符串字面值 都是字符串对象 "abc"
                2. 字符串是常量 一旦创建 不能改变
                3. 因为不可改变 所以可以共享
    3.2 字符串比较
        构造方法
            public String();
            public String(String str);
        例子:
            String s1 = "abc";
            String s2 = new String("abc");
            String s3 = "abc";
            String s4 = new String("abc");
            
            sout(s1 == s3);   //true  比较地址值 因为共享 故地址值也相同
            sout(s1.equals(s3)); //true  比较内容
            
            sout(s2 == s4); //false  比较地址值
            sout(s2.equals(s4)); //true 比较内容
            
            sout(s3 == s4); //比较地址值  false
            sout(s3.equals(s4));  //比较内容  true
            
            String s5 ="";
            s5 += "abc";   //底层会对+=进行优化 得到一个新的对象
            sout(s5 ==s1);  //  地址值不相同
            
    3.3 字符 字节数组 转换为字符串
    
        String 构造方法
            public String(char[] chs);
            public String(char[] chs, int start, int length);
            public String(byte[] bytes);
            public String(byte[] bytes, int start, int length);
            
        char[] chs ={'a','b','c','d','e'};
        将字符数组转换为字符串
            String s = new String(chs);
            sout(s);
        将字符数组的一部分转换为字符串 从索引1开始 转换3个
            String s2 = new String(chs, 1 ,3);
            sout(s2);
            
        byte[] bytes = {65,66,67,68};
        将字节数组转换为字符串    
            String s4 = new String(bytes);
            sout(s4);
        将字节数组的一部分转换为字符串 从0索引开始 转换2个
            String s5 = new String(bytes, 0 ,2);
            sout(s5);
            
        3.3.1将字符串转换为字符数组
            String类
                public char[] toCharArray()
        3.3.2将字符串转换为字节数组
            String类
                public byte[] getBytes();
        
        String str = "Hello World";
        //将字符串转换为字符数组
        char[] chars = str.toCharArray();
            for(int i = 0; i<chars.length;i++){
                sout(chars[i])
                }
        //将字符串转换为字节数组
        byte[] strbytes = str.getBytes();
            fori{sout(strBytes[i])}
    
    3.4 字符串遍历
        String类
            public char charAt(int index)  根据索引找字符
            长度
                数组   length属性
                集合   size()方法 
                字符串    length()方法
                
        String s = "I Love Java";
        //获取字符串长度
            sout(s.length());
            
        for(int i = 0;i<s.length(); i++){
            char ch = s.charAt(i);
            sout(ch);
        }
        
    3.5 根据字符找索引
        String类
            方法:    int indexOf(int ch) 查找当前字符 在字符串中第一次出现的索引位置
                     int indexOf(int ch, int fromIndex) 从fromIndex开始查询
            
            String str = "I Love Java";
            调用方法:
            int index = str.indexOf('a');
            sout(index);
            //字符a第2次出现的位置
            int index2 = str.indexOf('a',index + 1);
    
    3.6 字符串截取
        String substring(int startIndex)   从开始索引截取到末尾
        String substring(int startIndex, int endIndex) [start, end) 截取前后索引指定的位置
        
        调用方法(同上);
    
    3.7 字符串大小写转换
            String toUpperCase() 字符串转大写
            String toLowerCase() 字符串转小写
        字符串判断开头与结尾
            boolean startsWith(String s) 判断开头
            boolean endWith(String s) 判断结尾
        调用方法:
            String a = s.toLowerCase();  //转换小写
            sout(a);
            
            boolean s2 = s.startsWith("I");  //判断字符串是否是以I开头
            sout(s2);
    
    3.8 字符串拼接
        String 类
            String concat(String s)  字符串拼接  //与+作用类似  用处不大
            String trim() 去掉字符串两端空格
            
        案例:对比登录账号 密码是否正确
           
            

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值