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 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
相关文章
|
11天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
27 1
|
11天前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
24 0
java基础(13)String类
|
8天前
|
安全 Java
String类-知识回顾①
这篇文章回顾了Java中String类的相关知识点,包括`==`操作符和`equals()`方法的区别、String类对象的不可变性及其好处、String常量池的概念,以及String对象的加法操作。文章通过代码示例详细解释了这些概念,并探讨了使用String常量池时的一些行为。
String类-知识回顾①
|
4天前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
26 14
|
8天前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
11天前
|
Java
java的class类
java的class类
18 5
|
2月前
|
API 索引
String类下常用API
String类下常用API
38 1
|
2月前
for循环和String类下方法的一个练习题
for循环和String类下方法的一个练习题
45 1
|
21天前
|
存储 安全 Java
Java——String类详解
String 是 Java 中的一个类,用于表示字符串,属于引用数据类型。字符串可以通过多种方式定义,如直接赋值、创建对象、传入 char 或 byte 类型数组。直接赋值会将字符串存储在串池中,复用相同的字符串以节省内存。String 类提供了丰富的方法,如比较(equals() 和 compareTo())、查找(charAt() 和 indexOf())、转换(valueOf() 和 format())、拆分(split())和截取(substring())。此外,还介绍了 StringBuilder 和 StringJoiner 类,前者用于高效拼接字符串,后者用于按指定格式拼接字符串
20 1
Java——String类详解
|
17天前
|
安全 Java
Java StringBuffer 和 StringBuilder 类详解
在 Java 中,`StringBuffer` 和 `StringBuilder` 用于操作可变字符串,支持拼接、插入、删除等功能。两者的主要区别在于线程安全性和性能:`StringBuffer` 线程安全但较慢,适用于多线程环境;`StringBuilder` 非线程安全但更快,适合单线程环境。选择合适的类取决于具体的应用场景和性能需求。通常,在不需要线程安全的情况下,推荐使用 `StringBuilder` 以获得更好的性能。
下一篇
无影云桌面