博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【java学习】常用实体类--String、StringBuffer\StringTokenizer
阅读量:3904 次
发布时间:2019-05-23

本文共 4098 字,大约阅读时间需要 13 分钟。

文章目录

参数传递

基本数据类型:值传递

引用数据类型:引用本身无法被改变,而引用指向的对象内容可以被改变
如:

public void change(Studen s){
s.setName("张三");//允许s = new Student("李四","男");//试图改变引用本身,不允许

String

在java.lang包中,且为final类,即不可以被拓展,没有子类。

1.String常量也是对象,用双引号括起来的字符序列,Java把用户程序中的String常量放入常量池。常量池中的数据在程序运行期间不允许被改变。凡new构造出的对象都不在常量池中。
Java中的引用有点像c++中的指针,通过引用可以对堆中的对象进行操作。在java程序中,最常见的引用类型是强引用,当使用new创建一个新对象并将其赋值给一个变量的时候,这个变量就成为指向该对象的一个强引用
如:String s = new String(“hi”)
String t = new String(“hi”)
二者的实体虽然相同,但二者的引用不同,即s==t的值是false.(使用new后,每次都要开辟新天地)
另外,用户无法输出String对象的引用:
输入System.out.printIn(s)
结果:
在这里插入图片描述

String类有两个常用构造方法:

(1)char a[]={‘j’,‘a’,‘v’,‘a’};

String s = new String(a);
用一个字符数组创建一个String对象
(2)String(char a[],int start,int count)
提取字符数组a中的一部分创建一个String对象

引用String常量

可以把String常量的引用赋给一个String对象,例如:

String s1,s2;
s1=“你好”;
s2=“你好”;
s1==s2返回true. s1,s2具有相同的引用。

"String testOne=“你”+“好”;“的赋值号的右边是两个常量进行并置运算,因此结果是常量池中的常量"你好”(常量优化技术:

常量折叠是一种Java编译器使用的优化技术,Java,Sti0《testOne=“你”+“好,被编译器优化为
Stxing testOne=“你好”,就像intx=1+2被优化为ntx=3样),所以,表达式"你好”
testOne和表达式 hello=testOne的值都是true。对象 testOn中存放着引用12AB, testOne的实体中存放着字符序列"你好":
"testTwo=you+hi;“的赋值号的
右边有变量,例如变量you参与了并置运算,那么you+hi相当于"new String(你好);”,因此结果在动态区诞生新对象, testTwo存放着引用BCD5, test Two的实体中存放着字符序列“你
好”,所以表达式hello==testTwo的结果是 false
如图:
在这里插入图片描述

String类的常用方法

1.valueOf() //将其他数据类型转化为字符串对象,参数可以是除byte以外的任何数据类型。

2.charAt(int index);//指定参数位置的字符
3.boolean startsWith(String str,inr offset) //判断调用字符串在位置offset处开始是否以子串str开头
boolean endsWith(String str) 是否以str结尾
4.int indexOf()和int lastIndexOf():返回调用字符串对象中指定的字符或者子串首次出现的位置/最后一次出现的位置,未找到返回-1
如int indexOf(int ch) (有多个重载函数)
5.取子串方法:substring()
String substring(int beginIndex)
String substring(int beginIndex,int endIndex)
6.boolean equals(Object anotherObject):字符串相等性比较(区分大小写)
boolean equalsIgnore(String string)字符串相等性比较(不区分大小写)
int conpareTo(String string);//字符串大小比较(区分大小写)
int conpareToIgnore(String string);//字符串大小比较(不区分大小写)
7.String concat(String str);//将str连接到后面
8.replace()替换

String s = "abcc";      //将s中的c用a替换        System.out.println(  s.replace('c','a'));

在这里插入图片描述

String s = "abcc";      //将s中的c用a替换      s.replace('c','a');        System.out.println(s);//输出的还是原来的abcc

9.String trim()去掉前后空白

strip();去掉首位空格isBlank();//判断是否字符串空白
10.boolean contain(String s)
是否包含参数s的字符序列

StringBuffer和StringBuilder

Java提供了两个可变字符串类StringBuffer和StringBuilder,中文翻译为“字符串缓冲区”。

StringBuffer是线程安全的,它的方法是支持线程同步,线程同步会操作串行顺序执行,在单线程环境下会影响效率。StringBuilder是StringBuffer单线程版本,Java 5之后发布的,它不是线程安全的,但它的执行效率很高。
StringBuilder的中构造方法有4个:
StringBuilder():创建字符串内容是空的StringBuilder对象,初始容量默认为16个字符。
StringBuilder(CharSequence seq):指定CharSequence字符串创建StringBuilder对象。CharSequence接口类型,它的实现类有:String、StringBuffer和StringBuilder等,所以参数seq可以是String、StringBuffer和StringBuilder等类型。
StringBuilder(int capacity):创建字符串内容是空的StringBuilder对象,初始容量由参数capacity指定的。
StringBuilder(String str):指定String字符串创建StringBuilder对象。

StringBuilder中实现插入、删除和替换等操作的常用方法说明如下:

  1. StringBuilder insert(int offset, String str):在字符串缓冲区中索引为offset的字符位置之前插入str,insert有很多重载方法,可以插入任何类型数据。
    2 .StringBuffer delete(int start, int end):在字符串缓冲区中删除子字符串,要删除的子字符串从指定索引start开始直到索引end - 1处的字符。start和end两个参数与substring(int beginIndex, int endIndex)方法中的两个参数含义一样。
    3.StringBuffer replace(int start, int end, String str)字符串缓冲区中用str替换子字符串,子字符串从指定索引start开始直到索引end - 1处的字符。start和end同delete(int start, int end)方法。
    以上介绍的方法虽然是StringBuilder方法,但StringBuffer也完全一样

StringTokenizer

和 split()方法不同的是,StringTokenizer 对象不使用正则表达式作分隔标记。有时需要分析 String 对象的字符序列并将字符序列分解成可被独立使用的单词,这些单词叫作语言符号。例如,对"You are welcome",如果把空格作为分隔标记,那么“ You are welcome”就有三个单词(语言符号);而对于“ You,are,welcome",如果把逗号作为分隔标记,那么“ You,are,welcome”有三个单词。

当分析—个 String 对象的字符序列并将字符序列分解成可被独立使用的单词时,可以使用 java.util 包中的 StringTokenizer 类,该类有两个常用的构造方法。
• StringTokenizer(String s):为 Strin g 对象s 构造一个分析器。使用默认的分隔标记,即空格符、换行符、回车符、Tab 符、进纸符做分隔标记。
• StringTokenizer(String s, String delim):为 String 对象s 构造一个分析器。参数 delim 的字符序列中的字符的任意排列被作为分隔标记。
例如:
StringTokeni zerStringTokenizer fenxi = new StringTokenizer
(" you#*are welcome " ) ;
称—个StringTokenizer 对象为—个字符串分析器。一个分析器可以使用nextToken()方法逐个获取 String 对象的字符序列中的语言符号(单词)。每当调用 nextToken(时,都将在 String对象的字符序列中获得下一个语言符号。每当获取到一个语言符号,字符串分析器中负责计数的变量的值就自动减 1, 该计数变量的初始值等于字符串中的单词数目。
通常用 while 循环来逐个获取语言符号,

转载地址:http://gtten.baihongyu.com/

你可能感兴趣的文章
实施质量管理的实践
查看>>
用户需求开发优先级排序
查看>>
20个成功的项目管理经验
查看>>
研发配置管理流程
查看>>
用户访谈的提纲
查看>>
软件产品发布基本流程
查看>>
产品集成检查列表
查看>>
CMMI认证准备工作任务
查看>>
IT服务工具分类
查看>>
某企业需求工程师培训情况调研
查看>>
项目SOW构成要素
查看>>
流程文件定义程序
查看>>
pmo职能整理
查看>>
PMO的年度工作总结
查看>>
评审过程检查单
查看>>
软件项目成本明细案例
查看>>
公司运营管理结构图
查看>>
CMMI的改进组织结构
查看>>
elearning学习系统的试用心得
查看>>
ISO20000请求管理总流程
查看>>