16.1 String类

~  Java中定义了String和StringBuffer连个类来封装对字符串的各种操作,它们放在java.lang包中,不需要用import java.lang这个语句导入就可以直接使用它们
  String类用于比较两个字符串,查找和抽取串中的字符或子串,进行字符串与其它类型之间的相互转换。String类对象的内容一旦被初始化就不能在改变,对于String类的每次改变都会生成一个新的字符串,比较浪费内存。
  StringBuffer类用于内容可以改变的字符串,可以将其他各种类型的数据增加、插入到字符串中,也可以转置字符串中原来的内容。StringBuffer每次都改变自身,不生成新的对象,比较节约资源。

16.1.1 字符串的声明

String s1;
//必须显式的赋初值,否则System.out.println(s)会报错

6.1.3 String类的两种实例化方式

String s="有志者事竟成";
String s=new String("Where there's will, there's way");

16.1.4 String内容的比较

public boolean equals(String anObject)
public boolean equalslIgnorecase(String anotherString)//不区分大小写
public int comprareTo(String anotherString)

1.判定是否一致比较方法:

(1)equals(object)
(2)==//属于地址比较//范例
String str1="Hello";
String str2="Hello";
String str3=str2  //引用传递
str1==str2//false
str1==str3//false
str2==str3//true
str1.equals(str2)//true
str2.equals(str3)//true
str1.equals(str3)//ture

2.判定字符串大小方法

//范例
//compareTo比较的是字符串第一个不同字符的ASCII码值
String str1="This is a string."
String str2=new String("this is a string");
int result1=str1.compareTo("That is another string");//resualt1=8
int result2=str2.compareTo("This is a String.");//result2=0
int resualt3=str1.compareTo(str2);//result3=-32

16.1.5 字符串常量是String类的匿名对象

String str="Hello";
System.out.println(str.equals("Hello"));
System.out.println("Hello".equals(str));//true,"Hello"是String类的匿名对象//如果str=null,则System.out.println(str.equals("Hello"));出现NullPointerException
//System.out.println("Hello".equals(str))可自动处理null问题,不会出错

16.1.6 两种字符创实例化方式的区别

1.直接赋值,好比将一个字符串的常量赋给了指定的字符串String变量,而每个字符串常量都属于的匿名对象。仅开辟一块堆内存和一块栈内存空间。共享设计模式。

//范例
String strA="Hello";
String strB="Hello";
String strC=strB;
strA==strB//true;
strA==strC//true;
StrB==strC//true;

2.构造方法实例化,会开辟两块堆内存空间,其中一块内存空间将成为垃圾,通过构造方法进行的String类对象,也无法进行自动入池的操作,即数据无法共享

//范例
String strA="Hello";
String strB=new String("Hello"),intern();//手工入池
String strC="Hello"
String StrD=new String("Hello");
strA==strB//true
strA==strC//true
strB==strC//true
strA==strC//false

16.7.1 字符串一旦声明则不可改变

//范例
String str="Hello";
str+="World";
str=str+"!!!";
System.out.println(str);//输出Hello,World!!!,str看似改变了,事实并非如此
//字符串的内容并没有改变,改变的只是String类对象的引用,并且会产生大量字符串垃圾。应该尽量避免如是操作

16.1.8 String类的常用方法

1.字符与字符串

str.charAt(0);//取出字符串第一个字符
str.charAt(3);public String(char[] value)
public char[] toCharArray()
public charAt(int index)
public String(char[] value,int offset,int count)

2.字节与字符串

3.字符串查找方法

if(str.contains("hello")

4.字符串替换

str.replaceAll("o""***");//用***替换o

5.子串截取

str.substring(5)//截取从指定位置到末尾
str.substring(0,5)//截取从指定位置到指定位置

6.字符串拆分

String data[]=str.split(" ");//按空格拆分

7.其他方法

toUpperCase()转化成大写
toLowerCase()转化成小写
isEmpty()判断是否为空
length()字符串长度
concat()//功能与“+”一致
intern()//入池

16.2总结

1.String s=new String(“java”)
创建的对象有两个,一个是"java",一个是指向”java“的引用对象s

2.Java中堆内容与栈内存的区别
(1)堆内容是栈内存的一个子集
(2)栈内存存取速度仅次于寄存器,栈内存里面的数据可共享,但是其大小和生存期必须在运行前确定
(3)堆内容是运行时可动态分配的数据区,从速度上看比内存慢,堆内容的数据不可共享,大小和生存期可以在运行前确定
(4)new关键字是运行时在堆内容里创建的对象。每new一次都会创建一个新的对象,因为堆数据不共享。

Java 从入门到精通 第16章String类相关推荐

  1. Java从入门到精通 第22章 多线程

    Java从入门到精通 第22章 多线程 //单一线程的运行流程 public class Nanjing {public static void main(String[] args) {// TOD ...

  2. 《C++ Primer Plus》读书笔记 第16章 string类和标准模板库

    第16章 string类和标准模板库 1.string类 表16.1列出了string类的几个构造函数.其中NBTS(null-terminated string)表示以空字符结束的传统C-风格字符串 ...

  3. 第 16 章 string类和标准模板库

    第 16 章 string类和标准模板库 16.1 string类 C语言在 string.h(C++中为cstring)提供了一系列的字符串函数. 16.1.1 构造字符串 string 实际上是模 ...

  4. 《Java从入门到精通》第九章学习笔记

    第9章 类的高级特性 一.抽象类 抽象类只声明方法的存在,不能被实例化,就是说抽象类不能创建其对象,在定义抽象类时要在class前面加上abstract关键字. 1 /*定义一个抽象类Fruit,并定 ...

  5. java从入门到精通第11章_《Java从入门到精通》第十章学习笔记

    第10章 Java集合类 一.概述 Java中的java.util包中提供了一些集合类,也被称为容器,不同于数组,集合的长度是可变的,存放的是对象的引用.常用的集合有List集合.Set集合.Map集 ...

  6. java从入门到精通第8章_《Java从入门到精通》第七章学习笔记

    第7章 类和对象 一.类和对象的定义及关系 1.类是同一类别对象的抽象定义:可以理解为是某一类具体对象的模子,确定对象将会拥有的特性,包括该类对象具备的属性和方法. 2.对象是对类的一种具体化的客观存 ...

  7. Java从入门到精通章节练习题——第六章

    Java从入门到精通章节练习题--第六章 Exercise 1 简易计算器 Exercise 2 购买电影票 Exercise 3 计算平均分 Exercise 4 厘米与英寸互转 Exercise ...

  8. Java从入门到精通 第九章 数字处理类

    Java从入门到精通 第九章 数字处理类 一.数字格式化 二.数学运算 1)Math类 2)常用数学运算方法 三.随机数 1)Math.random()方法 2)Random类 四.大数字运算 1)B ...

  9. java从入门到精通第四版明日科技书籍简介及下载

    Java从入门到精通(第4版)(附光盘) 平装 – 2016年10月20日 <Java从入门到精通(第4版)(附光盘)>从初学者角度出发,通过通俗易懂的语言.丰富多彩的实例,详细介绍了使用 ...

  10. 1. Vue从入门到精通(第一章 vue核心)

    Vue从入门到精通(第一章 vue核心) 第一章 Vue核心 1. Vue简介 1.1 Vue是什么? 1.2 Vue的作者以及迭代版本 1.3 Vue的特点 2. 搭建Vue开发环境 2.1 安装V ...

最新文章

  1. JSP页面空指针异常调错办法之weblogic
  2. 利用WPF建立自己的3d gis软件(非axhost方式)(五)在鼠标点击的位置增加UI
  3. [zz]一行代码解决iframe挂马(服务器端注入、客户端ARP注入等)
  4. android gis 框架,三、ArcGis For Android:图层(Layers)
  5. 记录cu上shell比赛的第6题:输入日期,打印天数
  6. PHP 运行 php-fpm 报错
  7. 个人隐私保护2:用BitLocker创建一块需要密码才能进入的区域
  8. 【路径规划】基于matlab模拟退火算法求解火灾巡逻最短路径问题【含Matlab源码 252期】
  9. 两轮差速AGV的控制理论
  10. hp打印机计算机接口,老司机操作电脑连接惠普打印机提示无法识别UsB端口的办法?...
  11. 视频画面大小剪裁操作教程
  12. mysql5.6.39免安装,win7 64位配置mysql 5.6免安装版,初始化配置和Mysql创建新用户方
  13. Ubuntu无法调节屏幕亮度问题
  14. 有什么软件可以搜JAVA题答案_可以搜简答题答案及解析的软件app或者公众号有吗?...
  15. 极客日报:iPhone 13或有8款配色;vivo百万年薪招工程师;特斯拉新增行车记录视频紧急情况自动保存功能
  16. Jenkins教程(六)脚本与方法执行效果不合预期,如何及时中止pipeline
  17. python 制作英文单词_python常用150个英文单词
  18. ES 7.6.2集群迁移(从一套ES集群迁移数据到另一套集群)
  19. 守望先锋打开黑屏闪退,已经重装过好几次都没用? 真正原因在这里
  20. 蓝桥云题库之国王游戏——Python满分解答

热门文章

  1. 水晶报表的使用经验和资料总结
  2. Pytorch和caffe对maxpool模式ceil比较
  3. PyTorch——nn.Conv2d和其中的padding策略,Caffe、Tensorflow的padding策略
  4. 衡量神经网络的三个指标,参数量,multi-add,flop计算力
  5. 用户行为分析最重要的3个点 渠道转化留存
  6. 查看linux中某个端口(port)是否被占用***
  7. HoloLens开发手记 - Unity之语音输入
  8. 二叉树遍历算法之三:后序遍历
  9. Hadoop 源代码分析(二三)FSDirectory
  10. DevExpress Dashboard创建仪表盘参数