String类型详解

String本身就是一个类,只是Java对其进行了特殊处理。

两种实例化方式原理及区别:

/* 两种创建 String 对象的方法
* 1. 直接赋值:(推荐按这种方法)
* 2. 使用构造方法
* */
String str1 = "123";
String str2 = new String("123");

/*两者的区别
* 1. 直接赋值: 只会开辟一块堆内存空间,并且该对象会保存在对象池中,以供下次使用
* 2. 使用构造方法: 会开辟两块堆内存空间,并且一块将会成为垃圾,并且不会自动保存到对象池中,但可以通过 str1.intern() 方法手工入池
* */
// 两种创建 string 对象的区别
String str3 = "123";    // 与 str1 共享 "123" 数据所占的堆内存空间
System.out.println(str1 == str3);   // 值为: true;    JVM的常量共享

// 字符串的比较
System.out.println(str1 == str2);   // 结果为 false
System.out.println(str1.equals(str2)); // 结果为 true
/*
* 原因分析:
* "==" 只能进行数值的比较,str1 == str2 实际比较的是两个字符串内存地址的数值
* "equals()" 比较的才是两者的内容的区别
* */

/*
* 在以后的开发中强烈建议采用 way_2 比较字符串.
* 原因在于:
*   way_1 中 str1 如果为空的话会产生空指针异常,导致程序终止
*   way_2 中 str1 即使为空,只会得到的结果为 false,不会出现异常
* */
// way_1
str1.equals("hello");
// way_2
"hello".equals(str1);

常用操作分类:

构造函数:

String(byte[] bytes)

String(byte[] bytes, Charset charset)

String(byte[] bytes, String charsetName)

String(byte[] bytes, int offset, int length)

String(char[] value)

String(char[] value, int offset, int count)

String(StringBuffer buffer)

String(StringBuilder builder)

字符串与字符数组:

char[]

toCharArray()

字节与字符串:

byte[]

getBytes()

byte[]

getBytes(Charset charset)

byte[]

getBytes(String charsetName)

字符串比较:

int

compareTo(String anotherString)

比较字符串的大小(-1、0、1)

int

compareToIgnoreCase(String str)

忽略大小写比较字符串大小

boolean

equals(Object anObject)

boolean

equalsIgnoreCase(String anotherString)

字符串查找:

boolean

contains(CharSequence s)

是否包含

boolean

endsWith(String suffix)

int

indexOf(String str)

返回找到的 str 的首字母索引值

int

indexOf(String str, int fromIndex)

从指定位置查找

int

lastIndexOf(String str)

倒着查找

int

lastIndexOf(String str, int fromIndex)

boolean

matches(String regex)

使用正则表达式匹配

boolean

startsWith(String prefix)

boolean

startsWith(String prefix, int toffset)

字符串替换:

String

replace(char oldChar, char newChar)

String

replaceAll(String regex, String replacement)

String

replaceFirst(String regex, String replacement)

字符串拆分:

String[]

split(String regex)

String[]

split(String regex, int limit)

限制拆分后的个数

字符串截取:

String

substring(int beginIndex)

String

substring(int beginIndex, int endIndex)

其他常用方法

char

charAt(int index)

返回指定索引位置的字符

String

concat(String str)

连接两个字符串类似 “+”

boolean

isEmpty()

String

intern()

int

length()

String

toLowerCase()

转换为小写

String

toUpperCase()

转换为大写

String

trim()

去除开头结尾的空格(注意只有这一种方法:1.8)

PS:上面的方法是直接从 Java 1.8 API 文档中提取出来的,这里主要作为一个个人总结,由于较为简单所以没有符详细代码。

Java 中 String 类的常规操作相关推荐

  1. Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释

    Java中String类的concat方法 在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变 这两点从源码中对String的声明可以体现: private ...

  2. Java中String类的方法及说明

    String : 字符串类型 一.构造函数      String(byte[ ] bytes):通过byte数组构造字符串对象.      String(char[ ] value):通过char数 ...

  3. 【转载】Java中String类的方法及说明

    转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.构造函数      String ...

  4. 在java中String类为什么要设计成final

    在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087 转载于 ...

  5. c++ 输出string_来讲讲Java中String 类的知识点

    本文来总结一下Stirng 的有关知识点 1.String中的引用 String 可以通过new和构造方法来创建一个对象,用s来引用它(也就是相当于把asdf这个字符串赋值给s String s = ...

  6. java中string类面试题_java中String类的面试题大全含答案

    1.下面程序的运行结果是()(选择一项) String str1="hello"; String str2=new String("hello"); Syste ...

  7. JAVA中String类

    1.String类定义的变量是不可变得 eg:String s0="kvill"; String s1 = new String("kvill"); 为什么要设 ...

  8. java中String类的常用方法总结

    String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...

  9. java 中String类的常用方法总结,玩转String类

    String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...

最新文章

  1. 看麦田“蚂蚁网” 想网络新社区
  2. 一张图理解buffer与cache
  3. java电脑运行视频演示_javaweb视频第一天(二)
  4. [css] 使用css实现蒙版的效果
  5. 万州哪里有维修服务器,网关可以设在服务器、微机或大型机上
  6. Alibaba Nacos配置中心功能介绍与不同命名空间、分组等配置
  7. 云世界,一切如梦幻,数据也玩虚拟化。 SQL Server 2019 新特性系列一:数据虚拟化
  8. Nginx源码分析 - 实战篇 - 编写一个自定义的模块(24)
  9. 进击的UI------------UIToolBar(bottom导航条)
  10. html隐藏标签console,console的隐藏知识点,你get到了嘛?
  11. yolov3选取正负样本
  12. mos管h桥电机驱动电路与设计原理图-KIA
  13. 学习web前端能做游戏开发吗?
  14. hd4600黑苹果html5死机,HD4600终于可以不花屏了,写下心得。
  15. java流程控制试讲_java试讲.ppt
  16. 股票-每日复盘-5-24
  17. 剪切文件丢失如何恢复
  18. java多表头导出excel表格_【每日一点】1. Java如何实现导出Excel单表头或多表头
  19. 【笔记】ARM架构和ARM芯片(一)
  20. OXFeeeFeee指针的含义

热门文章

  1. 六十四、SpringBoot中的模板引擎Thymeleaf
  2. 三十七、下篇 | tkinter实现一个翻译软件
  3. “神算子”上线!EasyDL时序预测模型零门槛轻松上手
  4. 目标检测Workshop | COCO三连冠带你探索检测新世界
  5. 生成对抗网络(GAN)的数学原理全解
  6. 一文读懂「Attention is All You Need」| 附代码实现
  7. c程序设计语言用什么编译器,什么是编译器(编程软件)
  8. vue 初始化方法_Vue源码解读(一)引入Vue做了什么
  9. SpringMVC-组件分析之视图解析器(prefix,suffix)
  10. 编程式事务控制相关对象