JAVA_String类点滴
1、String构造函数
String 支持几种构造函数,例如:
//默认构造函数
String s = new String();
创建一个String实例,该实例不包含字符。
//被字符数组初始化的字符串
String(char chars[])
char chars[] = {'a','b','c'};
String s = new String(chars);
该构造函数用abc初始化s。
//指定字符数组的一个子区域作为初始化值
String(char chars[],int startIndex,int numChars)
startIndex指定子区域开始的下标,numChars指定所用字符的个数。
char chars[] = {'a','b','c','d','e','f'};
String s = new String(chars,2,3);
//构造一个String对象
string(String strobj)
class Strings
{
public static void main(String[] args)
{
char chars[] = {'a','b','c','d','e','f'};
String str1 = new String(chars);
String str2 = new String(str1);
System out.println(str1);
System out.println(str2);
}
}
程序的输出如下:
abcdef
abcdef
//字节数组初始化的构造函数
String(byte asciichars[])
String(byte asciichars[],int startIndex,int numChars)
class bytes
{
public static void main(String[] args)
{
byte ascii[] = {65,66,67,68,69,70};
String str1 = new String(ascii);
String str2 = new String(str1,2,3);
System out.println(str1);
System out.println(str2);
}
}
程序的输出如下:
ABCDEF
CDE
2、字符串长度
字符串长度是指其所包含的字符个数。调用Length()方法可以得到这个值。
char chars[] = {'a','b','c'};
String s = new String(chars);
System.out.println("Length:" + s.Length());
3、字符串连接
通常,JAVA是允许对String 对象进行操作,+运算符是个例外,它可以连接2个字符串。
string age = "90";
String s = "My age is " + age;
System.out.println(s);
字符串输出为My age is 90。
当创建一个很长的字符串时,可以将它拆开,使用+将它们连接起来。
String s = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" +
"cccccccccccccccccccccccccccccc";
字符串还可以和其他类型的数据连接。如下:
int age = 90;
String s = "My age is " + age;
System.out.println(s);
程序输出与前面相同。
这是因为在字符串对象中age自动转换为它的字符串形式。然后与前面的字符串连接。
有可能得到意想不到情况,如下程序:
String s = "My age is " + 2 + 4;
System.out.println(s);
程序输出 My age is 24。
这是由于运算符的优先级所造成的。
My age is首先与2的字符串形式连接,然后与4的字符串形式连接。
可以使用()实现2和4的相加。
String s = "My age is " + (2 + 4);
4、toString()
toString()方法可以确定所创建类的对象的字符串形式。
可以对所创建类toString()方法覆写。可以被用于print()和println()以及连接表达式中。
class Box
{
double width;
double height;
double depth;
Box(double w,double h,double d)
{
width=w;
height=h;
depth=d;
}
public String toString()
{
return "Dimensions are" + width + "by" + depth + "by" + height + ".";
}
}
class toStringDemo
{
public static void main(String[] args)
{
Box box1 = new Box(10,20,30);
String s = "Box:" + box1;
System.out.println(box1);
System.out.println(s);
}
}
当box1对象在连接表达式中使用或出现在println()中时,Box类的toString方法被自动调用。
5、截取字符
(1)、charAt()
返回指定索引处的字符,索引范围从0到length()-1。通过charAt()可以获取指定索引的单个字符。
public class test
{
public static void main(String[] args)
{
String s = "abcdefg";
char d = s.charAt(3);
System.out.println(d);
}
}
(2)、getChars()
从该字符串中拷贝字符到目的字符数组中。
public void getChars(int srcBegin,
int srcEnd,
char dst[],
int dstBegin)
srcBegin - 要复制的字符串中第一个字符的索引。
srcEnd - 要复制的字符串中最后一个字符的索引。
dst - 目标数组。
dstBegin - 目标数组中的开始偏移量。
实例:
public class getChardemo
{
public static void main(String[] args)
{
String s = "change the template for this generated" +
"file go to Window - Preferences - Java -" +
"Code Style - Code Templates";
int i=7;
int j=20;
char chars[] = new char[100];
s.getChars(i,j,chars,50);
System.out.println(chars);
}
}
(3)、getBytes()
从该字符串拷贝字符到目的字节数组中。 每个字节接收对应字符的低8位。
public void getBytes(int srcBegin,
int srcEnd,
byte dst[],
int dstBegin)
srcBegin - 要复制的字符串中第一个字符的索引。
srcEnd - 要复制的字符串中最后一个字符的索引。
dst - 目标数组。
dstBegin - 目标数组中的开始偏移量。
(4)、toCharArray()
public char[] toCharArray()
把该字符串转换成一个新的字符数组。
返回:
一个新分配的字符数组,其长度就是该字符串的长度,内容初始化为该字符串表示的字符序列。
public class test
{
public static void main(String[] args)
{
String s = "change the template for this generated";
char d[]= s.toCharArray();
for(int i=0;i<d.length;i++)
System.out.println(d[i]);
}
}
6、字符串比较
(1)、equals()和equalsIgnoreCase()
使用equals()方法比较2个字符串是否相等,区分大小写。
String s1 = "abc";
String s2 = "abc";
System.out.println(s1.equals(s2));
程序输出:True
equalsIgnoreCase()可以忽略大小写。
String s1 = "ABC";
String s2 = "abc";
System.out.println(s1.equalsIgnoreCase(s2));
程序输出:True
(2)、regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len);
regionMatches(int toffset,String other,int ooffset,int len);
上述两个方法用来比较两个字符串中指定区域的子串。入口参数中,用toffset和ooffset分别指出当前字符串中的子串起始位置和要与之比较的字符串中的子串起始地址;len 指出比较长度。前一种方法可区分大写字母和小写字母,如果在 boolean ignoreCase处写 true,表示将不区分大小写,写false则表示将区分大小写。而后一个方法认为大小写字母有区别。由此可见,实际上前一个方法隐含了后一个方法的功能。比如:
String s1= “tsinghua”
String s2=“it is TsingHua”;
s1.regionMatches(0,s2,6,7);
最后一个语句表示将s1字符串从第0个字符“t”开始和s2字符串的第6个字符“T”开始逐个比较,共比较7对字符,由于区分大小写,所以结果为false。
但如果最后一个语句改为:
s1.regionMatches(true,0,s2,6,7);
则结果为true,因为入口参数中true表示忽略大小写区别。
如果 toffset 或 ooffset 是负的,或如果 toffset+length 大于该字符串的长度, 或 ooffset+length 大于参数字符串的长度,那么该方法返回 false 。
(3)、startsWith()和 endsWith()
public boolean startsWith(String prefix,
int toffset)
public boolean startsWith(String prefix)
测试该字符串是否是以指定的前缀开头。
prefix - 前缀。
toffset - 在字符串中查找的起始点。
若参数表示的字符序列是该字符串序列的前缀则返回 true ,否则返回 false 。
若参数表示的字符序列是该对象开始于索引 toffset 处的子字符串前缀则返回 true ,否则返回 false 。
public boolean endsWith(String suffix)
测试该字符串是否以指定的字符串作后缀。
参数:
suffix - 后缀。
返回:
若参数表示的字符序列是该对象字符序列的后缀则返回 true ,否则返回 false 。
7、equals()与==比较
equals()方法比较字符串对象中的字符是否相等
==运算符比较2个对象的引用是否引用相同的实例。
8、compareTo()
public int compareTo(String anotherString)
按词典顺序比较两个字符串。不区分大小写, 比较的基础是字符串中每个字符的 Unicode 值。
参数:
anotherString - 要比较的 String 。
返回:
若参数字符串等于该字符串,则返回 0 ;若该字符串按词典顺序小于参数字符串则返回值小于 0 ;若该字符串按词典顺序大于参数字符串则返回值大于 0 。
compareToIgnoreCase()方法区分大小写。
class testcompare{
public static void main(String[] args){
String ch[] = {"as","de","gfd","gfd","red"};
for(int i=0;i<ch.length;i++){
for(int j=i+1;j<ch.length;j++){
if(ch[j].compareTo(ch[i])<0)
{
String t = ch[j];
ch[j]=ch[i];
ch[i]=t;
}
}
System.out.println(ch[i]);
}
}
}
9、搜索字符串
public int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。如果未出现该字符,则返回 -1。
public int indexOf(int ch,
int startIndex)
从指定的索引开始搜索,返回在此字符串中第一次出现指定字符处的索引。
startIndex 的值没有限制。如果它为负,它和 0 具有同样的效果:将搜索整个字符串。如果它大于此字符串的长度,则它具有等于此字符串长度的相同效果:返回 -1。
如果未出现该字符,则返回 -1。
public int lastIndexOf(int ch)
返回最后一次出现的指定字符在此字符串中的索引。如果未出现该字符,则返回 -1。
public int lastIndexOf(int ch,
int startIndex)
从指定的索引处开始进行后向搜索,返回最后一次出现的指定字符在此字符串中的索引。
startIndex参数同上。如果在该点之前未出现该字符,则返回 -1。
public int indexOf(String str)
返回第一次出现的指定子字符串在此字符串中的索引。
如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这样的子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1。
public int indexOf(String str,
int startIndex)
从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。
public int lastIndexOf(String str)
返回在此字符串中最右边出现的指定子字符串的如果在此对象中字符串参数作为一个子字符串出现一次或多次,则返回最后一个这样的子字符串的第一个字符。如果它不作为一个子字符串出现,则返回 -1。
索引。将最右边的空字符串 "" 视作发生在索引值 this.length() 处。
public int lastIndexOf(String str,
int startIndex)
从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。
10、修改字符串
(1)substring()
public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。
"unhappy".substring(2) returns "happy"
"Harbison".substring(3) returns "bison"
"emptiness".substring(9) returns ""
public String substring(int beginIndex,
int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,一直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
beginIndex - 开始处的索引(包括)。
endIndex - 结束处的索引(不包括)。
(2)concat()
public String concat(String str)
将指定字符串联到此字符串的结尾。 同“+”运算符功能相同。
"cares".concat("s") returns "caress"
"to".concat("get").concat("her") returns "together"
(3)replace()
public String replace(char oldChar,
char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。
"mesquite in your cellar".replace('e', 'o')
returns "mosquito in your collar"
(4)
public String trim()
返回字符串的副本,忽略前导空白和尾部空白。
11、改变字符串中字符的大小写
toLowerCase()
public String toLowerCase()
转换该 String 为小写。
toUpperCase
public String toUpperCase()
转换该 String 为大写。
class stringcov
{
public static void main(String[] args)
{
String s1 = "This is A test";
String s2 = s1.toLowerCase();
String s3 = s1.toUpperCase();
System.out.println("lower:" + s2);
System.out.println("upper:" + s3);
}
}
相关推荐
### Java点滴学习资料 #### 一、Java简介与特点 Java是一种高级编程语言,由Sun Microsystems公司于1995年推出。Java的核心优势之一在于其跨平台特性,即所谓的“一次编写,到处运行”,这使得Java代码能够在不同...
这份“Java经验点滴类注释文档编写方法”压缩包提供了一些关于如何有效编写Java类注释的指导和范例。下面将详细介绍Java类注释的编写规范和常用技巧。 1. **Javadoc 注释**: Java中的注释主要有三种形式:单行注释...
为了获取用户的输入,Java 提供了 `java.util.Scanner` 类。下面是一个简单的示例: ```java import java.util.Scanner; public class InputExample { public static void main(String[] args) { Scanner sc = ...
在Java编程中,"增删改查"(CRUD,Create, Read, Update, Delete)是数据库操作的基础,无论是在小型项目还是大型企业级应用中都广泛应用。本实例旨在通过一个简单的小项目来帮助你理解和实践这些基本操作,使用的...
public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 2. 将文件保存为`Hello.java`,确保文件扩展名为`.java`。 3. 打开命令提示符,切换到源代码所在的目录,例如`F:\...
### Eclipse SWT开发点滴 #### 一、第三方包的引用 在使用Eclipse进行SWT开发时,经常会遇到需要引入第三方库的情况。以下是引入第三方库的具体步骤: 1. **工程项目增加Libraries** - 右键点击项目 -> `Build ...
### Memcached使用点滴详解 #### 一、Memcached简介及应用场景 Memcached是一款高性能的分布式内存对象缓存系统,主要用于减少数据库负载、加速动态Web应用并增强可扩展性。其核心设计思想在于通过缓存数据库查询...
这些操作需要对字符串进行操作,如使用String类的方法,或者使用`java.util.regex`包的正则表达式进行匹配和替换。 5. **数据持久化**:当用户保存文件时,程序需要将内存中的文本数据写入磁盘,这涉及到了数据的...
2. JSON转对象:反之,JsonUtil也提供了反序列化的方法,如`fromJson(String json, Class<T> clazz)`,根据给定的JSON字符串和目标类型创建一个新的Java对象。Jackson通过分析JSON结构并调用相应的构造函数或setter...
在Spring框架中,为了实现将Java对象自动转换为JSON格式的数据,我们需要引入特定的依赖库。这个过程通常涉及到Jackson或Gson这两个流行的JSON处理库。本文将深入探讨Spring如何配合这些库来实现自动JSON转换,并给...
String fileName = file.getName(); byte[] fileData = file.getData(); // 存储、移动或处理文件... } ``` 6. 清理资源:在处理完文件后,记得调用`clean()`方法清理临时文件。 ```java upload.clean(); ``` ...
data class ImageItem(val imageUrl: String, val caption: String?) ``` 2. **集合操作**:Kotlin提供了丰富的集合操作,如map、filter和reduce,方便我们处理图片列表。例如,筛选出有文本描述的图片: ```...
在移动社交应用中,朋友圈是用户分享生活点滴和信息的重要平台。实现图片加文字的转发功能,能够丰富用户的表达方式,提升互动体验。本篇文章将详细介绍如何在Android平台上实现这样的功能,主要涉及Intent的使用...