java基础学习_常用类02_Scanner类和String类_day12总结

=============================================================================
=============================================================================
涉及到的知识点有:
  1:Scanner类的概述和使用(了解)
    (1)Scanner类的概述
    (2)Scanner类的构造方法
    (3)Scanner类的成员方法
  2:String类的概述和使用(掌握)
    (1)String类的概述
    (2)String类的构造方法
    (3)字符串的特点
    (4)字符串的面试题(看程序写结果)
    (5)字符串的功能
    (6)字符串的案例
=============================================================================
=============================================================================
1:Scanner类的概述和使用(了解)
  (1)Scanner类的概述
    在JDK5以后出现的用于键盘录入数据的类。
    是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
---------------------------------------
  (2)Scanner类的构造方法
    A:讲解了System.in这个东西。
      它其实是标准的输入流,对应于键盘录入
    B:构造方法
      InputStream is = System.in;

      public Scanner(InputStream is)
    C:常用的格式
      Scanner sc = new Scanner(System.in);
---------------------------------------
  (3)Scanner类的成员方法
    1.基本方法的格式:
      A:public boolean hasNextXxx() 即判断下一个输入项是否是某种类型的。
        其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx。
      B:public Xxx nextXxx() 获取某种类型的元素,即返回某种类型的元素。
        Xxx的含义和上个方法中的Xxx相同。
---------------------------------------
    2.要掌握的两个常用方法:
      A:public int nextInt() 获取一个int类型的值
      B:public String nextLine() 获取一个String类型的值
---------------------------------------
    3.需要注意的小问题:
      对于同一个扫描器对象,若先获取一个数值,再获取一个字符串,会出现问题。
      即:先nextInt()然后nextLine()的问题。
      主要原因:就是那个换行符号的问题。
      如何解决呢?
        A:先用键盘录入对象获取一个数值后,再创建一个新的键盘录入对象用来获取字符串。
        B:把所有的数据都先按照字符串获取,然后要什么,你就对应的转换成什么。
-----------------------------------------------------------------------------
2:String类的概述和使用(掌握)
  (1)String类的概述
    字符串是由多个字符组成的一串数据(字符序列)。
    字符串可以看成是字符数组,即它可以和字符数组进行相互转换。

    在实际开发中,字符串的操作是最常见的操作,没有之一。
    而Java没有内置的字符串类型,所以,就在Java类库中提供了一个类String 供我们来使用。
---------------------------------------
  (2)String类的构造方法
    A:public String()   无参构造,即创建一个空内容的字符串对象。

    B:public String(byte[] bytes)    把字节数组转成字符串,即使用一个字节数组构建一个字符串对象。

    C:public String(char[] value)   把字符数组转成字符串,即使用一个字符数组构建一个字符串对象。

    D:public String(byte[] bytes, int offset, int length)   把字节数组的一部分转成字符串,即使用一个字节数组构建一个字符串对象,指定开始的索引值,与使用的字节个数。

    E:public String(char[] value, int offset, int count)   把字符数组的一部分转成字符串,即使用一个字符数组构建一个字符串对象,指定开始的索引值,与使用的字符个数。

    F:public String(String original)   把字符串常量值转成一个字符串对象。
      String s = new String("hello"); 这种构造方法会创建两个或一个对象。

    G:String s = "hello";   虽然不是构造方法,但是结果也是一个字符串对象。这种直接赋值的方法会创建一个或零个对象。
      String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
---------------------------------------
  (3)字符串的特点
    A:字符串是常量,字符串的内容一旦被赋值,就不能被改变。
      注意:这里指的是字符串的内容不能改变,而不是引用不能改变,引用可以改变。
        即:字符串的内容会在字符串常量池里。每一个字符串的内容会有一个地址值。
    B:字面值作为字符串对象和通过构造方法创建对象的不同?
      String s1 = new String("hello");
      String s2 = "hello";
      System.out.println(s1 == s2); // false
      System.out.println(s1.equals(s2)); // true

    ==(等号的比较的是):
      基本类型:比较的就是值是否相同。
      引用类型:比较的就是地址值是否相同。
    equals(该方法比较的是):
      只能是引用类型:默认情况下,比较的是地址值。
      不过,我们可以根据情况自己重写该方法。一般重写都是自动生成,比较的是对象的成员变量值是否相同。
    equals:
      比较引用类型默认也是比较地址值是否相同,而String类重写了equals()方法,比较的是内容是否相同。
内存如下图所示01/02:


---------------------------------------
  (4)字符串的面试题(看程序写结果)
    A:==和equals()
      String s1 = new String("hello");
      String s2 = new String("hello");
      System.out.println(s1 == s2); // false
      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:String类的判断功能
      public boolean equals(Object obj)        比较字符串的内容是否相同,区分大小写
      public boolean equalsIgnoreCase(String str)    比较字符串的内容是否相同,忽略大小写

      public boolean contains(String str)          判断大字符串中是否包含小字符串

      public boolean startsWith(String str)       判断字符串是否以某个指定的字符串开头
      public boolean endsWith(String str)        判断字符串是否以某个指定的字符串结尾

      public boolean isEmpty()               判断字符串是否为空
        注意:
          String s = "";    //字符串内容为空。
          String s = null;   //字符串对象为空。对象都不存在,所以不能调用方法,如果去调用方法,会出现空指针异常。
---------------------------------------
    B:String类的获取功能
      public int length()    获取字符串的长度(字符个数)。

      public char charAt(int index)    获取指定索引位置的字符。
      public int indexOf(int ch)          返回指定字符在此字符串中第一次出现处的索引。
        注意:形参为什么这里是int类型,而不是char类型?
        原因是:'a'和97其实都可以代表'a'。形参为int类型时写'a'和97都可以,而为char类型时则只能写'a'了。

      public int indexOf(String str)            返回指定字符串在此字符串中第一次出现处的索引。
      public int indexOf(int ch, int fromIndex)      返回指定字符在此字符串中从指定位置后第一次出现处的索引。
      public int indexOf(String str, int fromIndex)     返回指定字符串在此字符串中从指定位置后第一次出现处的索引。

      public String substring(int start)       从指定位置开始截取字符串,默认到末尾(包含start这个索引)。
      public String substring(int start, int end)    从指定位置开始到指定位置结束截取字符串(包括start索引但是不包end索引)。
---------------------------------------
    C:String类的转换功能
      public byte[] getBytes()      把字符串转换为字节数组。
      public char[] toCharArray()     把字符串转换为字符数组。

      public static String valueOf(char[] chs)    把字符数组转成字符串。(方法重载)
      public static String valueOf(int i)              把int类型的数据转成字符串。(方法重载)
        注意:String类的valueOf方法可以把任意类型的数据转成字符串。

      public String toLowerCase()    把字符串转成小写。(注意:原串不变,生成的新串变为小写的)
      public String toUpperCase()    把字符串转成大写。(注意:原串不变,生成的新串变为小写的)

      public String concat(String str)     把字符串进行拼接。
---------------------------------------
    D:String类的其他功能
      a:替换功能
        public String replace(char old, char new)
        public String replace(String old, String new)
      b:去除字符串两端空格功能
        public String trim()
      c:按字典顺序比较两个字符串功能
        public int compareTo(String str)
        public int compareToIgnoreCase(String str)

        示例:
          String s1 = "hello";
          String s2 = "hello";
          String s3 = "abc";
          String s4 = "xyz";
          System.out.println(s1.compareTo(s2)); // 0
          System.out.println(s1.compareTo(s3)); // 7
          System.out.println(s1.compareTo(s4)); // -16
            比较不一样的时候,就用前一个串的第一个字符的ASCII减去后一个串的第一个字符的ASCII,得到一个int值返回。
            若第一个字符相同,则比较第二个字符,以此类推。若都相同,则返回int值0。

          若如下这样,查看该方法源码可知,返回的是第一个串比第二个串多的字符个数。
          String s5 = "hello";
          String s6 = "hel";
          System.out.println(s5.compareTo(s6)); // -2

---------------------------------------
  (6)字符串的案例
    A:模拟用户登录
    B:字符串的遍历
    C:统计字符串中大写、小写及数字字符的个数
    D:把字符串的首字母转成大写,其他转成小写
    E:把int数组拼接成一个指定格式的字符串输出
    F:字符串反转
    G:统计大串中小串出现的次数
=============================================================================

我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/607677

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。