黑马程序员--Scanner类和String类(day09)

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


今天学习了两个类:Scanner类和String类,Scanner类我现在经常用到的就是键盘录入,作为经常会用到内容要掌握,别的了解就可以了。而String类是特别特别重要的一个类,几乎每个程序都会用到,所以一定要掌握它的构造方法和成员方法。



1:Scanner的使用(了解)
        (1)在JDK5以后出现的用于键盘录入数据的类。
        (2)构造方法:
                   A:讲解了System.in这个东西。
                          它其实是标准的输入流,对应于键盘录入
                   B:构造方法
                           InputStream is = System.in;

                           Scanner(InputStream is)
                   C:常用的格式
                              Scanner sc = new Scanner(System.in);
         (3)基本方法格式:
                   A:hasNextXxx() 判断是否是某种类型的
                   B:nextXxx()返回某种类型的元素
         (4)要掌握的两个方法
                   A:public int nextInt()
                   B:public String nextLine()
         (5)需要注意的小问题
                    A:同一个Scanner对象,先获取数值,再获取字符串会出现一个小问题。
                    B:解决方案:
                             a:重新定义一个Scanner对象
                             b:把所有的数据都用字符串获取,然后再进行相应的转换
  
2:String类的概述和使用(掌握)
         (1)多个字符组成的一串数据。
                   其实它可以和字符数组进行相互转换。
         (2)构造方法:
                    A:public String()  初始化一个新创建的 String 对象,使其表示一个空字符序列。
                    B:public String(byte[] bytes)  把字节数组转换成字符串
                    C:public String(byte[] bytes,int offset,int length)  把字节数组从某个索引(offset)开始,length个字节转换成字符串
                    D:public String(char[] value)   分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
                    E:public String(char[] value,int offset,int count)  把字符数组从某个索引(offset)开始,count个字符转换成字符串  
                    F:public String(String original)  把字符串常量转化成字符串 
                    G:下面的这一个虽然不是构造方法,但是结果也是一个字符串对象
                               String s = "hello";
         (3)字符串的特点
                    A:字符串一旦被赋值,就不能改变。
                               注意:这里指的是字符串的内容不能改变,而不是引用不能改变。
                    B:字面值作为字符串对象和通过构造方法创建对象的不同
                              String s = new String("hello");和String s = "hello"的区别?
                              前者在堆内存中先new出一个String ,然后再去常量池里去找有没有常量值"hello",没有,就创建了一个,所以总共创建了两个对象,
                              后者呢,先直接去字符串常量池里去找,没有,就创建了一个,所以总共就创建了一个对象。
         (4)字符串的面试题(看程序写结果)
               
                     ==:引用类型比较的是地址值,基本类型比较的是值
                     equals:比较引用类型默认是地址值,,但String重写了equals()方法,所以现在比较的是字符串内容

                   

                    A:==和equals()

                              String s1 = new String("hello");
                              String s2 = new String("hello");
                              System.out.println(s1 == s2);// false  比较的是地址值 new出了两个对象 地址值不同
                              System.out.println(s1.equals(s2));// true  内容相同


                              String s3 = new String("hello");
                              String s4 = "hello";
                              System.out.println(s3 == s4);// false  
                              System.out.println(s3.equals(s4));// true


                              String s5 = "hello";
                              String s6 = "hello";
                              System.out.println(s5 == s6);// true   在字符串常量池指向同一地址
                              System.out.println(s5.equals(s6));// true
                    B:字符串的拼接
                              String s1 = "hello";
                              String s2 = "world";
                              String s3 = "helloworld";
                              System.out.println(s3 == s1 + s2);// false  字符串变量两者相加,先开辟空间,再拼接
                              System.out.println(s3.equals((s1 + s2)));// true


                              System.out.println(s3 == "hello" + "world");// true  字符串常量相加,先拼接,然后再在常量池里找,有返回地址,没有就创建                           

                              System.out.println(s3.equals("hello" + "world"));// true


        (5)字符串的功能
                A:判断功能
                            boolean equals(Object obj)    将此字符串与指定的对象比较。
                            boolean equalsIgnoreCase(String str)   将此 String 与另一个 String 比较,不考虑大小写。
                            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)  返回指定位置之后,指定字符在字符串中第一次出现处的索引
                           int indexOf(String str,int fromIndex)  返回指定位置之后,指定字符串在字符串中第一次出现处的索引    
                           String substring(int start)  从指定位置截取字符串,默认截取到结尾
                           String substring(int start,int end)  从指定位置开始到指定位置结束截取字符串,截取部分包含start,但是不包含end
                C:转换功能
                          byte[] getBytes()  把字符串转换成字节数组 
                          char[] toCharArray()  把字符串转换成字符数组
                          static String valueOf(char[] chs)  把字符数组转成字符串
                          static String valueOf(int i)  把int类型的值转成字符串
                          String toLowerCase()  把字符串转成小写
                          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 compareToIgnoreCase(String str)  忽略大小写比较           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值