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

——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)//返回指定字符在此字符串中从指定位置开始第一次出现的索引,没有则返回-1

int 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+"次");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值