Java 从入门到精通 第16章String类
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类相关推荐
- Java从入门到精通 第22章 多线程
Java从入门到精通 第22章 多线程 //单一线程的运行流程 public class Nanjing {public static void main(String[] args) {// TOD ...
- 《C++ Primer Plus》读书笔记 第16章 string类和标准模板库
第16章 string类和标准模板库 1.string类 表16.1列出了string类的几个构造函数.其中NBTS(null-terminated string)表示以空字符结束的传统C-风格字符串 ...
- 第 16 章 string类和标准模板库
第 16 章 string类和标准模板库 16.1 string类 C语言在 string.h(C++中为cstring)提供了一系列的字符串函数. 16.1.1 构造字符串 string 实际上是模 ...
- 《Java从入门到精通》第九章学习笔记
第9章 类的高级特性 一.抽象类 抽象类只声明方法的存在,不能被实例化,就是说抽象类不能创建其对象,在定义抽象类时要在class前面加上abstract关键字. 1 /*定义一个抽象类Fruit,并定 ...
- java从入门到精通第11章_《Java从入门到精通》第十章学习笔记
第10章 Java集合类 一.概述 Java中的java.util包中提供了一些集合类,也被称为容器,不同于数组,集合的长度是可变的,存放的是对象的引用.常用的集合有List集合.Set集合.Map集 ...
- java从入门到精通第8章_《Java从入门到精通》第七章学习笔记
第7章 类和对象 一.类和对象的定义及关系 1.类是同一类别对象的抽象定义:可以理解为是某一类具体对象的模子,确定对象将会拥有的特性,包括该类对象具备的属性和方法. 2.对象是对类的一种具体化的客观存 ...
- Java从入门到精通章节练习题——第六章
Java从入门到精通章节练习题--第六章 Exercise 1 简易计算器 Exercise 2 购买电影票 Exercise 3 计算平均分 Exercise 4 厘米与英寸互转 Exercise ...
- Java从入门到精通 第九章 数字处理类
Java从入门到精通 第九章 数字处理类 一.数字格式化 二.数学运算 1)Math类 2)常用数学运算方法 三.随机数 1)Math.random()方法 2)Random类 四.大数字运算 1)B ...
- java从入门到精通第四版明日科技书籍简介及下载
Java从入门到精通(第4版)(附光盘) 平装 – 2016年10月20日 <Java从入门到精通(第4版)(附光盘)>从初学者角度出发,通过通俗易懂的语言.丰富多彩的实例,详细介绍了使用 ...
- 1. Vue从入门到精通(第一章 vue核心)
Vue从入门到精通(第一章 vue核心) 第一章 Vue核心 1. Vue简介 1.1 Vue是什么? 1.2 Vue的作者以及迭代版本 1.3 Vue的特点 2. 搭建Vue开发环境 2.1 安装V ...
最新文章
- JSP页面空指针异常调错办法之weblogic
- 利用WPF建立自己的3d gis软件(非axhost方式)(五)在鼠标点击的位置增加UI
- [zz]一行代码解决iframe挂马(服务器端注入、客户端ARP注入等)
- android gis 框架,三、ArcGis For Android:图层(Layers)
- 记录cu上shell比赛的第6题:输入日期,打印天数
- PHP 运行 php-fpm 报错
- 个人隐私保护2:用BitLocker创建一块需要密码才能进入的区域
- 【路径规划】基于matlab模拟退火算法求解火灾巡逻最短路径问题【含Matlab源码 252期】
- 两轮差速AGV的控制理论
- hp打印机计算机接口,老司机操作电脑连接惠普打印机提示无法识别UsB端口的办法?...
- 视频画面大小剪裁操作教程
- mysql5.6.39免安装,win7 64位配置mysql 5.6免安装版,初始化配置和Mysql创建新用户方
- Ubuntu无法调节屏幕亮度问题
- 有什么软件可以搜JAVA题答案_可以搜简答题答案及解析的软件app或者公众号有吗?...
- 极客日报:iPhone 13或有8款配色;vivo百万年薪招工程师;特斯拉新增行车记录视频紧急情况自动保存功能
- Jenkins教程(六)脚本与方法执行效果不合预期,如何及时中止pipeline
- python 制作英文单词_python常用150个英文单词
- ES 7.6.2集群迁移(从一套ES集群迁移数据到另一套集群)
- 守望先锋打开黑屏闪退,已经重装过好几次都没用? 真正原因在这里
- 蓝桥云题库之国王游戏——Python满分解答
热门文章
- 水晶报表的使用经验和资料总结
- Pytorch和caffe对maxpool模式ceil比较
- PyTorch——nn.Conv2d和其中的padding策略,Caffe、Tensorflow的padding策略
- 衡量神经网络的三个指标,参数量,multi-add,flop计算力
- 用户行为分析最重要的3个点 渠道转化留存
- 查看linux中某个端口(port)是否被占用***
- HoloLens开发手记 - Unity之语音输入
- 二叉树遍历算法之三:后序遍历
- Hadoop 源代码分析(二三)FSDirectory
- DevExpress Dashboard创建仪表盘参数