【黑马程序员】Object,Scanner,String类总结——Java复习笔记

来源:互联网 发布:淘宝客手机源码 编辑:程序博客网 时间:2024/06/02 02:59

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

Object类

(1)Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类。(2)Object类的的构造方法只有一个无参构造(3)要掌握的方法:    A:toString()        返回对象的字符串表示,默认是由类的全路径+’@'+哈希值的十六进制表示。建议子类通过自动生成重写该方法。    B:equals()        比较两个对象是否相同。默认情况下,比较的是地址值是否相同。所以,建议子类通过自动生成重写该方法。(String的equals方法比较的是值)    ps:obj instanceof Student  表示判断obj对象是否是Student类的对象 (4)要了解的方法:    A:hashCode() 返回对象的哈希值。不是实际地址值,可以理解为地址值。    B:getClass() 返回对象的字节码文件对象
Student s = new Student(); String str=s.getClass().getName();//输出为完整路径名:包名+类名  
    C:finalize() 用于垃圾回收,在不确定的时间    D:clone() 可以实现对象的克隆,包括成员变量的数据复制,但是它是独立的一个对象,和两个引用指向同一个对象是有区别的。该方法返回的是obj对象。被克隆对象的类需实现Cloneable接口才能正常克隆。该接口是标记接口,无方法。(5)需要注意的问题;    A:直接输出一个对象名称,其实默认调用了该对象的toString()方法。    B:equals()只能比较引用类型。默认情况下,比较的是地址值是否相同。一般根据自己的需要重写该方法。String类的equals方法是比较内容

Scanner的使用

(1)在JDK5以后出现的用于键盘录入数据的类。(2)构造方法:    A:System.in其实是标准的输入流,对应于键盘录入    B:构造方法        InputStream is = System.in;        Scanner(InputStream is)(3)基本方法格式:    A:hasNextXxx() 判断是否是某种类型的 返回值是boolean    B:nextXxx() 返回某种类型的元素        next()和nextLine()区别:前一个是以回车或空格为分隔符,一次取一个单词,后一个是以回车为分隔符,一次取一行。(4)需要注意的小问题    A:同一个Scanner对象,先获取数值,再获取字符串会出现一个小问题。    B:解决方案:        a:重新定义一个Scanner对象        b:把所有的数据都用字符串获取,然后再进行相应的转换        c:用空格而不是回车隔开        

String类的概述和使用

(1)构造方法:
A:public String()B:public String(byte[] bytes)   //吧字节数组转成字符串C:public String(byte[] bytes,int offset,int length) //吧字节数组的从offset索引开始的length长度的字节转成字符串D:public String(char[] value)E:public String(char[] value,int offset,int count)F:public String(String original)    //吧字符串常量值转成字符串
    下面的这一个虽然不是构造方法,但是结果也是一个字符串对象    G:String s = "hello";(2)字符串的特点    A:字符串一旦被赋值,就不能改变。        注意:这里指的是字符串的内容不能改变,而不是引用不能改变。             字符串缓冲区的字符串可以改变    B:字面值作为字符串对象和通过构造方法创建对象的不同        String s = new String("hello");和String s = “hello"的区别?            后者不在堆内存中开辟空间(3)看程序写结果
            String s1 = "hello";            String s2 = "world";            String s3 = "helloworld";            System.out.println(s3 == s1 + s2);// false s1s2俩变量相加,会先开空间再拼接,所以地址值肯定不一样            System.out.println(s3.equals((s1 + s2)));// true            System.out.println(s3 == "hello" + "world");// true 俩常量相加是直接拼接得helloworld发现常量池里有一样的就直接用了,不创建            System.out.println(s3.equals("hello" + "world"));// true
(4)字符串的功能    A:判断功能
boolean equals(Object obj) //比较内容   boolean equalsIgnoreCase(String str)  //比较内容,忽略大小写boolean contains(String str)  //判断大字符串中是否包含小字符串boolean startsWith(String str)//判断字符串是否以某个指定的字符串开头boolean endsWith(String str)boolean isEmpty()  //判断字符串是否为空
    B:获取功能
int length()  char charAt(int index)  //获取指定索引位置的字符int indexOf(int ch)   //返回指定字符在此字符串中第一次出现的索引 输入字符、数字都行int indexOf(String str)  //返回指定字符串在此字符串中第一次出现的索引int indexOf(int ch,int fromIndex)//返回指定字符在此字符串中从指定位置开始第一次出现的索引,没有则返回-1int indexOf(String str,int fromIndex)String substring(int start)  //从指定位置start开始截取字符串String substring(int start,int end)  //从start位置开始截取字符串 包括start不包括end
    C:转换功能
byte[] getBytes()  //把字符串转为字节数组char[] toCharArray()  //把字符串转为字符数组static String valueOf(char[] chs)  //吧字符数组转为字符串static String valueOf(int……)  ////吧任意类型数据转为字符串String toLowerCase()  //吧字符串转为小写 返回的是新的String对象。传入的字符串不变String toUpperCase()String concat(String str)  //吧字符串拼接     
D:其他功能        a:替换功能             String replace(char old,char new)            String replace(String old,String new)        b:去空格功能            String trim() //只去掉前后两端的空格,中间的不管        c:按字典比较功能            int compareTo(String str)   //从第一位开始按字典顺序比较俩字符串  注意返回值是int。返回的是该位字符 - 被比较的字符。第一位相同则比较第二位,第一位就不同则直接返回            int compareToIgnoreCase(String str) (5)String类的练习    1.把首字母转大写,其他转小写
    public static void formatNum(String str){        //substring包左不包右,所以这里截取的第一个字母        String first = str.substring(0,1).toUpperCase();        String rest = str.substring(1,str.length()).toLowerCase();        System.out.println(first+rest);    }
    2.统计数字,大写,小写出现的次数
    public static void tongjiNum (String str){        int num = 0;//数字出现的次数        int upcase = 0;//大写出现的次数        int downcase = 0;//小写出现的次数        //挨个遍历        for (int x = 0;x<str.length();x++){            if (str.charAt(x) >='A' && str.charAt(x)<= 'Z'){                //如果是大写字母                upcase++;            }else if (str.charAt(x)>='a' && str.charAt(x)<='z'){                //如果是小写字母                downcase++;            }else if (str.charAt(x)>='0' && str.charAt(x)<='9'){                //如果是数字                num++;            }        }        System.out.println("数字"+num+"个");        System.out.println("大写"+upcase+"个");        System.out.println("小写"+downcase+"个");    }
    3.字符串反转
    public static void reverseNum(String str){        String newStr ="";//创建一个空字符串        //倒着遍历        for (int x = str.length()-1;x>=0;x--){            //拼接            newStr += str.charAt(x);        }        System.out.println(newStr);    }
    4.查找指定字符串出现次数     方法1
    public static void findNum (String str,String find){        int count =0;        int index;        index = str.indexOf(find);  //第一次查找并把返回的索引值赋值给index        while (index != -1){        // 判断index是否 不等于-1 是则执行循环 否则不执行            count++;        //执行循环说明index不为-1,所以出现一次,计数            index += find.length();    //从 index+find.length()位置开始下一次查找            index = str.indexOf(find,index);        }        System.out.println("共出现"+count+"次");    }
    方法2
    public static void findNum2 (String str,String find){        int count =0;        int index;        while ((index=str.indexOf(find)) != -1){            count++;            str = str.substring(index+find.length());   //从找到的位置 截取字符串并重新赋值        }        System.out.println("共出现"+count+"次");    }
0 0
原创粉丝点击