【java学习】常用实体类--String、StringBuffer\StringTokenizer
文章目录
- 参数传递
- String
- String类有两个常用构造方法:
- 引用String常量
- String类的常用方法
- StringBuffer和StringBuilder
- StringBuilder中实现插入、删除和替换等操作的常用方法说明如下:
- StringTokenizer
参数传递
基本数据类型:值传递
引用数据类型:引用本身无法被改变,而引用指向的对象内容可以被改变
如:
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中实现插入、删除和替换等操作的常用方法说明如下:
- 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 循环来逐个获取语言符号,
【java学习】常用实体类--String、StringBuffer\StringTokenizer相关推荐
- Java学习笔记——实体类(ENTITY,VO,DTO,BO)
最近在写代码的时候,对于Entity.VO.DTO.BO的概念有些混淆,不太了解具体的用途以及作用,所以想梳理一下. 阿里巴巴Java开发手册中的分层领域模型规约: DO(Data Object):此 ...
- java实验系统常用类,Java的常用系统类
Java的常用系统类Tag内容描述: 1.Java语言与JBuilder应用初步 第六章 常用的Java系统类,本章要点,字符串类 数值(Number)类及其子类 数组类 集合类 Object类,字符 ...
- Java常用实体类--System类
字符串.日期.数字是Java程序中最常使用的数据对象,对这些数据的创建.修改.格式化和转换等操作融入在Java程序的每个角落,必须熟练掌握.本节将通过实例演示以下常用实体类 Java系统级类:系统类S ...
- java 系统 类_Java常用实体类--System类
字符串.日期.数字是Java程序中最常使用的数据对象,对这些数据的创建.修改.格式化和转换等操作融入在Java程序的每个角落,必须熟练掌握.本节将通过实例演示以下常用实体类Java系统级类:系统类Sy ...
- java常用的集合对象_java常用实体类、集合类
java常用实体类.集合类 [转自51cto博客jichangwei的BLOG] 1:String类,字符串是常量,他们的值在创建之后不能更改,可以共享. equals()用来比较两个字符串的值,== ...
- java的常用引用类、数组、String类
java的常用引用类.数组.String类 1. 常用引用类 1.1 Scanner 一个简单的文本扫描器类. 使用: //创建扫描器对象 Scanner sc = new Scanner(Syste ...
- java 中常用的类
java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l static double abs(double a) 获取double 的绝对值 l sta ...
- Java中常用的类,包,接口
Java中常用的类,包,接口 包名 说明 java.lang 该包提供了Java编程的基础类,例如 Object.Math.String.StringBuffer.System.Thread等,不使用 ...
- Java基础 ----常用时间类
Java基础 ----常用时间类 java.util.Date java.util.Calendar java.text.SimpleDateFormat new Date().getTime() & ...
最新文章
- leetcode 30. Substring with Concatenation of All Words 与所有单词相关联的字串 滑动窗口法
- 1039 Course List for Student
- autoconfig.xml与antx.properties一级application.properties之间的关系
- python学习笔记 day04 列表增删改查
- 面试必谈的哈希,.Net 程序员温故而知新
- win10下JDK环境变量配置与IDEA开发工具清晰简洁步骤,迈出Java学习第一步
- shell如何自动输入密码
- 【clickhouse】使用waterdrop将Hive中的数据导入ClickHouse
- 你的个人信息是如何被盗走的?MySQL脱库,脱库的原理,怎么脱库,脱库的步骤,一库三表六字段
- Zabbix 3.0入门到企业实战阅读目录
- 树莓派4B Ubuntu20.04 ROS2 RTABMAP realsense d455
- HHUOJ 1860 哆啦A梦的口袋
- android opengl美颜功能,Android 关于美颜/滤镜 利用PBO从OpenGL录制视频
- idea 破解版安装
- centos6.5 大于16T硬盘 分区和格式化挂载
- CSS的选择器(超详细!!)
- java简单播放器涉及与实现
- java flappy bird_Java实例---flappy-bird实例解析
- node-red安装
- 软件测试响应时间原则,性能测试二八原则,响应时间2/5/8原则
热门文章
- linux centos 回收站,centos rm 回收站
- php中bc,php中BC高精确度函数库
- redis php操作日志,php-redis笔记
- wireshark抓包常见提示含义解析
- 深度学习和目标检测系列教程 6-300:目标检测Fast-RCNN架构
- leetcode 刷题140 141
- java常用工具类_java(二):工作中常用到的工具类
- 博士申请 | 阿联酋阿布扎比人工智能大学许志强老师招收全奖博士/硕士
- 10万奖金!探索图像盲降噪新方式,旷视2022 MegCup炼丹大赛等你来战
- ​清华大学提出基于生成对抗神经网络的自然图像多风格卡通化方法并开源代码...