20应届生面试题:使用String引用类型的时候,用过哪些方法?比如如何截取一段给定字符串的长度?
答:没回答上来!(没用过截取字符串)

String引用类型中有一个叫做substring的方法,这个就是用来截取字符串的。
Ctrl+鼠标左键点进了substring方法内,查看到了以下源码。

  //小白的理解://beginIndex是起始位置,endIndex是末端位置public String substring(int beginIndex, int endIndex) {//起始位置不能小于0  不然没有意义if (beginIndex < 0) {throw new StringIndexOutOfBoundsException(beginIndex);}//同理末端位置的值不能大于实际长度,超过实际长度截取没有意义if (endIndex > value.length) {throw new StringIndexOutOfBoundsException(endIndex);}//实际要截取的位置,就是末端位置-起始位置的值,比如7-1=6//6就是截取出来的长度int subLen = endIndex - beginIndex;//当然截取长度不能是小于零的数。if (subLen < 0) {throw new StringIndexOutOfBoundsException(subLen);}//这里就是返回所截取长度的新的字符串了,//他是按照你所输入的始末位置所自定义出来的//其实这里没咋看懂,就知道是返回实际长度的//如果起点位置的值是0开始,末端位置的值是最大长度。那么就返回原字符串//否则按照始末位置返回一个新的你自己所定义出来的字符串return ((beginIndex == 0) && (endIndex == value.length)) ? this: new String(value, beginIndex, subLen);}

源码里为什么一直在判断0,应该和String这个引用类型的实现原理有关,String它是一个char数组的储存结构。某种意义上也是一个数组。所以起始端按照数组里的定义,第0个元素实际上就是直观上的第一个元素。
(我是一个小白,对实现原理不懂所以只能说点自己所能理解的了)

以下是我用IDEA处于好奇,使用代码测试了一下。

        System.out.println("=======================");String c = "abc".substring(0,3);String c1 = "abc".substring(1,3);String c2 = "abc".substring(2,3);String d = "abcdf".substring(0,0);System.out.println(c);System.out.println(c1);System.out.println(c2);System.out.println(d);System.out.println("=======================");

        String d1 = "abcdf".substring(0,6);System.out.println(d1);

这个错误和源码里的末端值超过实际长度的异常名字一样
if (endIndex > value.length)
throw new StringIndexOutOfBoundsException(endIndex);

String如何截取字符串长度相关推荐

  1. C++ string常用截取字符串方法

    string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos) ...

  2. c++语言截取字符串,详解C++ string常用截取字符串方法

    string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos) ...

  3. c语言中截取字符串 sub,详解C++ string常用截取字符串方法

    string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos) ...

  4. java html 字符串截取字符串长度_Java截取带html标签的字符串,再把标签补全(保证页面显示效果)...

    一般是用在字符串中有html标签的截取. 如: 后台发布用了在线编辑器, 前台显示内容要截取的情况. import Java.util.ArrayList; import java.util.List ...

  5. C++ string 简单截取字符串使用

    用法1:截取下标从2(第3个字符起)开始到字符串结尾的字符串: #include <string> #include <iostream> using namespace st ...

  6. PHP截取字符串长度

    我们经常会遇到需要截取字符串(含中文汉字)长度的情况,比如标题显示不能超过多少字符,超出的长度用-表示,以下函数可以满足你的需求. 代码如下: /* Utf-8.gb2312都支持的汉字截取函数 cu ...

  7. 小程序 页面 中 截取字符串长度 超过显示 多余的 用省略号

    1.首先 在对应页面下新建  "  center.wxs   " 文件 这个文件是小程序自身 一套脚本语言 2.在 .wxs  文件中 写 截取字符串的 方法 // 小程序页面中 ...

  8. java js 截取字符串_java和Js 按字节来截取字符串长度(为了符合数据库varchar)

    /** * 截取符合oracle varchar长度的字符集 * * @author 陈兵 * */ public class SplitString { public static String s ...

  9. php mysql 截取字符串长度,mysql字符串截取

    MySQL 字符串截取函数有:left(), right(), substring(), substring_index().还有 mid(), substr(); 一:left(str, lengt ...

最新文章

  1. 电子时钟单片机c语言程序,51单片机电子时钟C语言程序
  2. 微信小程序客服消息使用指南
  3. Java List 排序 :Lambda表达式sort排序
  4. SAP UI5 应用开发教程之四十六 - 使用 Message Manager 实现开箱即用的验证(Validation)信息抛出
  5. CRM WebClient UI的浏览器打印实现
  6. Citrix路径遍历(CVE-2019-19781)
  7. Request 对象、重定向、请求转发
  8. hihocoder第229周:最大连续字母个数
  9. 房租抵扣个税不用再填房东信息 房东这下放心了吗?
  10. 手机万能摄像头ip搜索工具_一款 APP,130 多种功能,让你的手机秒变万能工具箱...
  11. MA1 轻轻松松学统计分析(上)
  12. linux du 查看文件夹大小
  13. vue组件eleme 时间选择器问题
  14. leetcode 面试题57 - II. 和为s的连续正数序列
  15. 密码学复习笔记2【分组密码/S-DES、DES】
  16. userenv和sys_context函数
  17. 简单实用,聊聊我常用的 4 款 Pandas 自动数据分析神器
  18. Flink系列文档-(YY05)-Flink编程API-多流算子
  19. Ubuntu子系统上安装miniconda.sh 438、444报错
  20. 2的1000次方的各位之和是多少?

热门文章

  1. 3D-3D:ICP_SVD
  2. 【深度学习 项目实战】Keras深度学习多变量时间序列预测的LSTM模型
  3. 【python小作业】编写函数,接收一个任意字符串,返回其中最长的数字字串。要求使用正则表达式。
  4. 机器学习面试题 (一)
  5. c语言图形学画扇形代码,利用CSS绘制任意角度的扇形示例代码
  6. syscall(SyS_gettid)
  7. 计算机基础知识(基础入门小白专属)六
  8. Python基本数据类型--列表
  9. Cesium是什么,简介
  10. 复杂交通流对混合交通的影响研究多向车流量分析