String 类

  1. 定义

    • String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。我们可以将字符串看作是String, 但是严格意义上来说, String还是一个类,只是比较特殊罢了
  2. 特殊性

    • String 类型的变量可以引用地址
    • String 类型的变量可以直接指向常量
    • String 对象的长度是不可变的,如果两个字符串拼接成一个字符串,其实是创建了一个新的字符串对象
    public static void main(String[] args) {
    String str = new String();// 指向地址值 new对象相当于指向一个新地址
    String str2 = "abc"; //指向常量
    }
  3. 常用的构造方法

    • public String():空构造
    • public String(byte[] bytes):把字节数组转成字符串
    • public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
    • public String(char[] value):把字符数组转成字符串
    • public String(char[] value,int index,int count):把字符数组的一部分转成字符串
    • public String(String original):把字符串常量值转成字符串
    • 测试题
      • 判断定义为String类型的s1和s2是否相等?

        • String s1 = "abc";
        • String s2 = "abc";
        • System.out.println(s1 == s2);
        • System.out.println(s1.equals(s2));
      • 下面这句话在内存中创建了几个对象?
        • String s1 = new String("abc");

          • 答案: 创建了两个看对象,一个在常量池,一个在堆内存
      • 判断定义为String类型的s1和s2是否相等
        • String s1 = new String("abc");
        • String s2 = "abc";
        • System.out.println(s1 == s2);
        • System.out.println(s1.equals(s2));
      • 判断定义为String类型的s1和s2是否相等?
        • String s1 = "a" + "b" + "c";
        • String s2 = "abc";
        • System.out.println(s1 == s2);
        • System.out.println(s1.equals(s2));
      • 判断定义为String类型的s1和s2是否相等?
        • String s1 = "ab";
        • String s2 = "abc";
        • String s3 = s1 + "c";
        • System.out.println(s3 == s2);
        • System.out.println(s3.equals(s2));
  4. 常用的判断方法

    • boolean equals(Object obj): 比较字符串的内容是否相同,区分大小写

    • boolean equalsIgnoreCase(String str): 比较字符串的内容是否相同,忽略大小写

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

    • boolean startsWith(String str): 判断字符串是否以某个指定的字符串开头

    • boolean endsWith(String str): 判断字符串是否以某个指定的字符串结尾

    • boolean isEmpty(): 判断字符串是否为空

    • 案例

      • 需求:模拟登录,给三次机会,并提示还有几次。
      • 用户名和密码都是admin
      public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      int i = 1;
      while(i<=3){
      System.out.println("请输入用户名");
      String name = scanner.nextLine();
      System.out.println("请输入密码");
      String password = scanner.nextLine();
      if("admin".equals(name)&&"admin".equals(password)){
      System.out.println("恭喜您,登录成功");
      break;
      }
      System.out.println("用户名或密码错误,请您重新输入,您还有"+(3-i)+"次机会机会");
      i++;
      }
      scanner.close();
      }
    • 测试题

      • 查询一个某个班级中所有姓张的学生
      • String[] strs = {"李张蛋","张三","张飞","李伟","刘明"};
  5. 常用的获取方法

    • int length(): 获取字符串的长度

    • char charAt(int index): 获取指定索引位置的字符

    • int indexOf(int ch): 返回指定字符在此字符串中第一次出现处的索引, ch是字符的码表值

    • int indexOf(String str): 返回指定字符串在此字符串中第一次出现处的索引

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

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

    • int lastIndexOf 同上

    • String substring(int start):从指定位置开始截取字符串,默认到末尾

    • String substring(int start,int end):从指定位置开始到指定位置结束截取字符串

    • 案例

      • 需求:遍历字符串
      public static void main(String[] args) {
      String str = "abcdkekdkgallsd";
      for (int i = 0; i < str.length(); i++) {
      System.out.println(str.charAt(i));
      }
      }
    • 测试题

      • 需求:不准使用charAt(),遍历字符串
  6. 常用的转换方法

    • byte[] getBytes(): 把字符串转换为字节数组

    • char[] toCharArray():把字符串转换为字符数组

    • static String valueOf(char[] chs):把字符数组转成字符串

    • static String valueOf(int i):把int类型的数据转成字符串

    • 注意:String类的valueOf方法可以把任意类型的数据转成字符串

    • String toLowerCase():把字符串转成小写(了解)

    • String toUpperCase():把字符串转成大写

    • String concat(String str):把字符串拼接

    • 案例

      • 需求:把一个字符串的首字母转成大写,其余为小写
      public static void main(String[] args) {
      String str = "abCdkeHgDlsd";
      String str2 = str.substring(0,1).toUpperCase().concat(str.substring(1).toLowerCase());
      System.out.println(str2);
      }
  7. 替换方法

    • String replace(char old,char new) : 将字符串中的一部分字符用新的代替
    • String replace(String old,String new) : 将字符串中的一部分字符串用新的代替
  8. 切割方法

    • String[] split(String regex) : 按照规则来切割字符串
    • String[] split(String regex, int limit) : 按照规则来切割字符串 limit 表示总共切成几段(也就是数组的长度)
  9. 其他常用方法

    • trim() : 去除字符串前后的空格
    • int compareTo(String anotherString) : 按字典顺序比较两个字符串(大小写)
    • int compareToIgnoreCase(String str) : 按字典顺序比较两个字符串(忽略大小)

Java基础之常用类(String类)的更多相关文章

  1. java基础源码 (1)--String类

    这个是String类上面的注释,我用谷歌翻译翻译的,虽然有点语法上的问题,但是大概都可以翻译出来 /** * The {@code String} class represents character ...

  2. java基础类型数据与String类包装类之间的转换与理解

    数据类型转换一般分为三种: 在java中整型,实型,字符型视为简单数据类型,这些数据类型由低到高分别为:(byte,short,char--int-long-float-double) 简单数据类型之 ...

  3. 【Java基础】常用类

    常用类 字符串相关的类 String类:代表字符串,使用一对 "" 引起来表示. public final class String implements java.io.Seri ...

  4. Java 常用类String类、StringBuffer类

    常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...

  5. Java常用API(String类)

    Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...

  6. Java基础-类加载机制与自定义类Java类加载器(ClassLoader)

    Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...

  7. Java基础-DBCP连接池(BasicDataSource类)详解

    Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...

  8. Java 1.7.0_06中String类内部实现的一些变化【转】

    原文链接: java-performance 翻译: ImportNew.com- 夏千林译文链接: http://www.importnew.com/7656.html ChangeLog: 201 ...

  9. java基础解析系列(九)---String不可变性分析

    java基础解析系列(九)---String不可变性分析 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---In ...

  10. C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;

    ArrayList和Array的区别: 相同点:1.两者都实现了IList.ICollection.IEnumerable接口:       2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值 ...

随机推荐

  1. ToroiseGit/GitBash 设置提交信息模板设置

    一.背景:当使用git提交代码时,每次的提交信息固定,却又比较长不好记的时,还需要将模板的地址保存下来,如果能设置一个固定的模板就可以很好的解决这个问题. 提交前的提交信息需要手动输入: 二.Toro ...

  2. GCN的原理及其代码实现

    图数据的特征性质 图像数据是一种特殊的图数据,图像数据是标准的2D网格结构图数据.图像数据的CNN卷积神经网络算法不能直接用在图数据上,原因是图数据具有以下特殊性. 节点分布不均匀:图像数据及网格数据 ...

  3. 从SVN导出项目出现的乱码问题

    解决的方法很简单,只需要将Eclipse的编码标准设置为UTF-8即可 1.Window->Preferences->General->Workspace   面板Text file ...

  4. 我说HashMap初始容量是16,面试官让我回去等通知

    众所周知HashMap是工作和面试中最常遇到的数据类型,但很多人对HashMap的知识止步于会用的程度,对它的底层实现原理一知半解,了解过很多HashMap的知识点,却都是散乱不成体系,今天一灯带你一 ...

  5. do-while循环的使用

    一.循环结构的4个要素 ① 初始化条件 ② 循环条件 --->是boolean类型 ③ 循环体 ④ 迭代条件 二.do-while循环结构: ①do{ ③; ④;}while(②); 执行过程: ...

  6. 虚拟化_Xen——敬请期待!

    更改Workstation兼容性为12.x,选择系统版本为RHEL6-64位,安装XenServer7.6成功!

  7. 在mybatis中#{}和${}的区别

    文章目录 1.第一个#{} 2.第二个${} 3.区别 1.第一个#{} 解释: 使用#{}格式的语法在mybatis中使用preparement语句来安全的设置值 PreparedStatement ...

  8. 《吐血整理》高级系列教程-吃透Fiddler抓包教程(30)-Fiddler如何抓取Android7.0以上的Https包-番外篇

    1.简介 通过宏哥前边几篇文章的讲解和介绍想必大家都知道android7.0以上,有android的机制不在信任用户证书,导致https协议无法抓包.除非把证书装在系统信任的证书里,此时手机需要roo ...

  9. <五>掌握左值引用和初识右值引用

    1:C++的引用,引用和指针的区别? 1:从汇编指令角度上看,引用和指针没有区别,引用也是通过地址指针的方式访问指向的内存 int &b=a ; 是需要将a的内存地址取出并存下来, b=20; ...

  10. 脚本之一键部署nexus

    NEXUS_URL="https://download.sonatype.com/nexus/3/nexus-3.39.0-01-unix.tar.gz" #NEXUS_URL=& ...