String类基础知识

1、String类表示字符串,理解为不可变的字符序列

2、String类声明为final,不可被继承

3、String类实现了Serializable接口:表示字符串是支持序列化的(序列化:可将java对象转变为二进制文件,从而传输这个java对象)

4、String类实现了 Comparable接口:表示字符串可以比较大小

5、底层用final char[]  value存储

String类对象的创建方式

1、字面量方式

String s1="abcd"

该方式首先在栈空间里声明了一个String类型变量s1,然后在方法区中的常量池里存储abcd,将存储地址值(Ox0001)赋给s1,使s1指向abcd

2、构造器方式

String s2=new String(“abcd”);

该方式首先在栈空间里声明了一个String类型变量s2,然后在堆空间开辟一片空间,将该空间的地址值(Ox1111)赋给s2,使s2指向它。在方法区中的常量池里存储abcd,将存储地址值(Ox0001)赋给value属性,使它指向abcd

图中所示地址值均为假设地址值

其余类创建对象只有构造器方式

字符串的连接运算

1、str="aaa"+"bbb"

字符串常量和字符串常量连接后依然存在于常量池中,而常量池中相同的数据只存在一份。

因此若连接后的数据(aaabbb)已经在常量池中存在,就将该地址赋给接收它的变量(str)

若不存在,将在常量池中开辟空间存储连接后的数据(aaabbb),将新开辟的地址赋给接收它的变量(str)

2、str=s1+"bbb"

字符串变量和字符串常量连接后,先在堆空间new一个对象,将该对象的地址赋给接收它的变量(str),再让该对象指向常量池。因此,无论连接后的数据是否在常量池中存在,连接后的变量(str)指向的都是堆空间中对象的地址

2、str=s1+s2

字符串变量和字符串变量的连接,同2。

代码示例:

public class StringTest {public static void main(String[] args) {String s1="aaa";String s2="bbb";String s3="aaabbb";String s4="aaa"+"bbb";System.out.println(s3==s4);//true,常量池中相同的数据只存在一份,因此s4被赋上的是s3的地址String s5=s1+"bbb";System.out.println(s3==s5);//false,只要有一个是变量,就相当于在堆空间new了一个对象,该对象再指向常量池。因此s5被赋上的是堆空间中new出来的对象的地址String s6=s1+s2;System.out.println(s5==s6);//false,两个都是变量,就相当于在堆空间new了一个对象,该对象再指向常量池。因此s6被赋上的是堆空间中new出来的对象的地址System.out.println(s3==s6.intern());//true,intern()方法返回常量池中的存储地址}
}

String类的常用方法举例:

public class StringTest2 {public static void main(String[] args) {String str="Hello World";System.out.println("该字符串的长度是:"+str.length());//包括空格System.out.println("下标为1的字符是:"+str.charAt(1));System.out.println("该字符串是否为空:"+str.isEmpty());System.out.println("全部转换为小写:"+str.toLowerCase());System.out.println("全部转换为大写:"+str.toUpperCase());str="     Hello   World    ";System.out.println("去掉首尾空格:"+str.trim());String s1="Hello World";String s2=new String("Hello World");System.out.println("s1和s2的地址值是否相同:"+(s1==s2));//==比较地址值System.out.println("s1和s2的内容是否相同:"+s1.equals(s2));//equals比较内容}
}

equalsIgnorCase(object anObject):忽略大小写之后比较字符串内容是否相同

concat(String str):拼接字符串

compareTo(String anotherString):比较字符串大小

substring(int beginIndex):从指定索引处截取子串

startsWith(String prefix):是否以指定子串开始

endsWith(String suffix):是否以指定子串结束

contains(String str):是否包含子串

indexOf(int ch):返回子串第一次出现的索引,没有出现过返回-1

lastIndexOf(int ch):返回子串最后一次出现的索引,没有出现过返回-1

replace(char oldChar,char newChar):用新字符代替旧字符

matches(String regex):按正则表达式进行匹配

split(String regex):按正则表达式将字符串拆分成字符串数组

将String型转化为int型

Integer.parseInt(str)

将int型转化为String型

String.valueOf(i)   或  i+""

Java常用类之String类知识清单,简单易理解相关推荐

  1. 17.Java常用实用类之String类中常用的方法以及一般应用场景,final关键字

    文章目录 1.String类学习 1.1.什么是String类 1.2.String类中常用的方法 1.2.1. 构造方法 1.2.2.public int length() 1.2.3.public ...

  2. 常用类 (六) ----- String类与字符串

    相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...

  3. java问题解读,String类为什么是final的

    一.理解final 望文生义,final意为"最终的,最后的",我理解为"不能被改变的",它可以修饰类.变量和方法. 所以我是否可以理解为被它所修饰的类.变量和 ...

  4. 【JavaSE】常用类3[String类、StringBuffer、StringBuilder]

    常用类3 ①.String类 -String常用方法 -String案例演示 ②StringBuffer和StringBuilder -StringBuffer -StringBuilder -Str ...

  5. java str2date,java date类与string类实例代码分享

    Date类用来指定日期和时间,其构造函数及常用方法如下: publicDate() 从当前时间构造日期时间对象. publicStringtoString() 转换成字符串. publiclongge ...

  6. Java常用类库之String

    Java常用类库之String学习与积累 概述 在学习Java时,我们知道Java的基本数据类型有整型的int,byte,short,long,字符型的char,布尔型的Boolean和浮点型的flo ...

  7. JavaSE(七)——Scanner类、String类

    文章目录 1. Scanner类 2. String类 2.1 定义 2.2 常见转换 2.3 字符串赋值 2.4 String类的判断功能 2.5 String类的获取功能 2.6 String类的 ...

  8. java基础知识--(常用类)String类

    8.01 String简介 String(字符串常量)概述 String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 字符串是常量: ...

  9. Java常用类库(Object类、String类、StringBuffer类、包装类、Math类、System类)详解

    常用类库 java.lang java.lang包下放置了Java开发中常用的类和接口,所以为简化该包下类的使用,java.lang包下的类在使用时不需要导入这些类 java.lang包下常用类有: ...

最新文章

  1. 波士顿动力双足机器人Atlas放出逆天体操表演,网友:比我还强
  2. 尽量使用int型的列类型
  3. python 神经网络中隐藏层的作用是什么?
  4. virsh 关机_KVM virsh常用命令篇
  5. erp开发和java开发区别_Java程序员求职必学:Spring boot学习指南!
  6. “李刚畅谈Java编程人生”讲座
  7. element-plus Table 表格自定义列模板使用及问题
  8. python 字符串以及通过dos命令运行py脚本
  9. bing翻译api php,Auto Tag Slug使用 google翻译并删除bing api key提示
  10. 耗时一年整理:Netty 终极权威指南 + 项目
  11. 幼儿园连锁管理系统源码
  12. Android事件机制深入探讨(一)
  13. 基于深度学习的行人检测技术
  14. GridView排序状态保持
  15. wim工具扫描linux磁盘,图文解说WIMTOOL的安装及利用该工具编辑WIM文件
  16. SpringCloud Stream+RabbitMQ自定义通道
  17. 【技术网站分享】全面整理了一波技术网站,分享给大家!
  18. powershell解压缩文件
  19. c++ 计算图形的面积
  20. python操作Excel【openpy】

热门文章

  1. 图像学习一:图像的旋转
  2. 汇率计算器 by React
  3. css样式中的vw什么意思,css vw是什么单位
  4. Centos6.10系统迁移到新固态硬盘LVM
  5. IDE 和SCSI简介
  6. Spring容器是什么?为什么要使用Spring容器?
  7. MySQL性能优化(三)Buffer Pool实现原理
  8. linux 系统管理员l,系统管理员的 SELinux 指南
  9. 【视觉-单目三维重建-理论篇】单目视觉三维重建----论文调研1
  10. php getcwd文件件,PHP目录函数 getcwd (取得当前工作目录)