java String 提供的方法

String类的判断功能:

1 * boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
2 * boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
3 * boolean contains(String str):判断大字符串中是否包含小字符串
4 * boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
5 * boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
6 * boolean isEmpty():判断字符串内容是否为空 ""

注意:

字符串内容为空和字符串对象为空。
String s = ""; 对象存在 内容为空
String s = null; 对象不存在 对象都不存在,所以不能调用方法,否则 空指针异常 NullPointerException

1 两个字符串内容是否相同啊?

* boolean equals(Object obj);
* boolean equalsIgnoreCase(string str);忽略大写比较字符串内容。

该方法的作用是判断两个字符串对象的内容是否相同。如果相同则返回true,否则返回false。例如:

String s = “abc”;
String s1 = new String(“abc”);
boolean b = s.equals(s1);

而使用“==”比较的是两个对象在内存中存储的地址是否一样。例如上面的代码中,如果判断:
boolean b = (s == s1);
则变量b的值是false,因为s对象对应的地址是”abc”的地址,而s1使用new关键字申请新的内存,
所以内存地址和s的”abc”的地址不一样,所以获得的值是false。

在String类中存在一个类似的方法equalsIgnoreCase,该方法的作用是忽略大小写比较两个字符串的内容是否相同。例如:

String s = “abc”;
String s1 =”ABC”;
boolean b = s. equalsIgnoreCase (s1);

则变量b的值是true。

2 字符串中是否包含指定字符串?
boolean contains(String str):判断一个字符串中是否包含另一个字符串

1 String s = “student.doc”;
2 boolean b = s.contains(“doc”);//  true
3
4 String s1 = "helloworld";
5 System.out.println("contains:" + s1.contains("hello")); //true
6 System.out.println("contains:" + s1.contains("hw")); false

3 字符串是否以指定字符串开头,是否以指定字符串结尾。

* boolean startsWith(string);
* boolean endsWith(string);

endsWith方法的作用是判断字符串是否以某个字符串结尾,如果以对应的字符串结尾,则返回true。
例如:
String s = “student.doc”;
boolean b = s.endsWith(“doc”);
则变量b的值是true。

startsWith方法该方法的作用和endsWith方法类似,只是该方法是判断字符串是否以某个字符串作为开始。例如:
String s = “TestGame”;
boolean b = s.startsWith(“Test”);
则变量b的值是true。

4 boolean isEmpty():判断字符串内容是否为空。

String s4 = "";
String s5 = null;

System.out.println("isEmpty:" + s4.isEmpty()); true

// NullPointerException
// s5对象都不存在,所以不能调用方法,空指针异常
System.out.println("isEmpty:" + s5.isEmpty());



String类的获取功能

 1 * int length():获取字符串的长度。
 2 * char charAt(int index):获取指定索引位置的字符
 3 * int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
 4 为什么这里是int类型,而不是char类型?
 5 原因是:‘a‘和97其实都可以代表‘a‘
 6
 7 * int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
 8 * int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
 9 * int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
10
11
12 * String substring(int start):从指定位置开始截取字符串,默认到末尾。
13 * String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。

1 获取字符串中字符的个数(长度). int length();

该方法的作用是返回字符串的长度,也就是返回字符串中字符的个数。
中文字符也是一个字符。例如:

1 String s = “abc”;
2 String s1 = “Java语言”;
3 int len = s.length();
4 int len1 = s1.length();

则变量len的值是3,
变量len1的值是6。

2 根据位置获取字符:char charAt(int index);按照索引返回字符

该方法的作用是按照索引值,获得字符串中的指定字符。
(规定字符串中第一个字符的索引值是0,第二个字符的索引值是1,依次类推)
例如:

1 String s = “abc”;
2 char c = s.chatAt(1);

则变量c的值是’b’。

3 根据字符获取在字符串中的第一次出现的位置.

1 * int indexOf(int ch)
2 * int indexOf(int ch,int fromIndex):从指定位置进行ch的查找第一次出现位置
3 * int indexOf(String str);
4 * int indexOf(String str,int fromIndex);

根据字符串获取在字符串中的最后一次出现的位置.

1 * int lastIndexOf(int ch)
2 * int lastIndexOf(int ch,int fromIndex):从指定位置进行ch的查找第一次出现位置
3 * int lastIndexOf(String str);
4 * int lastIndexOf(String str,int fromIndex);

该方法的作用是查找特定字符或字符串在当前字符串中的起始位置,如果不存在则返回-1。例如:
String s = “abcded”;
int index = s.indexOf(‘d’);
int index1 = s.indexOf(‘h’);

则返回字符d在字符串s中第一次出现的位置,数值为3。由于字符h在字符串s中不存在,则index1的值是-1。
当然,也可以从特定位置以后查找对应的字符,例如:
int index = s.indexOf(‘d’,4);
则查找字符串s中从索引值4(包括4)以后的字符中第一个出现的字符d,则index的值是5。

由于indexOf是重载的,也可以查找特定字符串在当前字符串中出现的起始位置,使用方式和查找字符的方式一样。
另外一个类似的方法是lastIndexOf方法,其作用是从字符串的末尾开始向前查找第一次出现的规定的字符或字符串,例如:
String s = “abcded”;
int index = s. lastIndexOf(‘d’);
则index的值是5。

1.4 获取字符串中一部分字符串。也叫子串.

* String substring(int beginIndex, int endIndex)//包含begin 不包含end 。
* String substring(int beginIndex); //截取begin到最后

该方法的作用是取字符串中的“子串”,所谓“子串”即字符串中的一部分。例如“23”是字符串“123”的子串。
字符串“123”的子串一共有6个:”1”、”2”、”3”、”12”、”23”、”123”。而”32”不是字符串”123”的子串。
例如:
String s = “Test”;
String s1 = s.substring(2);
则该代码的作用是取字符串s中索引值为2(包括)以后的所有字符作为子串,则字符串s1的值是”st”。

如果数字的值和字符串的长度相同,则返回空字符串。例如:
String s = “Test”;
String s1 = s.substring(4);
则字符串s1的值是””。

如果需要取字符串内部的一部分,则可以使用带2个参数的substring方法,例如:
String s = “TestString”;
String s1 = s.substring(2,5);
则该代码的作用是取字符串s中从索引值2(包括)开始,到索引值5(不包括)的部分作为子串,则字符串s1的值是”stS”。

下面是一个简单的应用代码,该代码的作用是输出任意一个字符串的所有子串。代码如下:

1 String s = “子串示例”;
2 int len = s.length(); //获得字符串长度
3 for(int begin = 0;begin < len – 1;begin++){ //起始索引值
4    for(int end = begin + 1;end <= len;end++){ //结束索引值
5       System.out.println(s.substring(begin,end));
6    }
7 }

在该代码中,循环变量begin代表需要获得的子串的起始索引值,其变化的区间从第一个字符的索引值0到倒数第二个字符串的索引值len -2,
而end代表需要获得的子串的结束索引值,其变化的区间从起始索引值的后续一个到字符串长度。通过循环的嵌套,可以遍历字符串中的所有子串。



转换功能

一 类型转换 :

 1 int i = 123 ;
 2 String s = "";
 3
 4 int --> string
 5
 6 s = i+"";
 7 s = String.ValueOf(i);//推荐
 8 s = Integer.toString(i);
 9
10 string --> int
11
12 i = Integer.parseInt(s);//推荐13 i = Integer.valueOf(i).intValue();

二 String的转换功能

 1 String[]  split(String regex)
 2
 3 char[]    toCharArray();
 4 byte[]    getBytes();
 5
 6 String    toUpperCase():大写
 7 String    toLowerCase():小写
 8
 9 String    replace(char oldch,char newch);
10 String    replace(String s1,String s2);
11
12 String    trim();
13 String    concat(string);
14 String    valueOf(n)

注意:

+号在java中的3种作用:正号 加号 字符串连接

1 将字符串变成字符串数组(字符串的切割)
* String[] split(String regex):涉及到正则表达式.

该方法的作用是以特定的字符串作为间隔,拆分当前字符串的内容,一般拆分以后会获得一个字符串数组。例如:
String s = “ab,12,df”;
String s1[] = s.split(“,”);
该代码的作用是以字符串”,”作为间隔,拆分字符串s,从而得到拆分以后的字符串数字s1,其内容为:{“ab”,”12”,”df”}。

该方法是解析字符串的基础方法。
如果字符串中在内部存在和间隔字符串相同的内容时将拆除空字符串,尾部的空字符串会被忽略掉。例如:
String s = “abbcbtbb”;
String s1[] = s.split(“b”);
则拆分出的结果字符串数组s1的内容为:{“a”,””,”c”,”t”}。

拆分出的中间的空字符串的数量等于中间间隔字符串的数量减一个。例如:
String s = “abbbcbtbbb”;
String s1[] = s.split(“b”);
则拆分出的结果是:{“a”,””,””,”c”,”t”}。最后的空字符串不论有多少个,都会被忽略。

如果需要限定拆分以后的字符串数量,则可以使用另外一个split方法,例如:
String s = “abcbtb1”;
String s1[] = s.split(“b”,2);
该代码的作用是将字符串s最多拆分成包含2个字符串数组。则结果为:{“a”,”cbtb1”}。
如果第二个参数为负数,则拆分出尽可能多的字符串,包括尾部的空字符串也将被保留。

2 将字符串变成字符数组。
* char[] toCharArray();

该方法的作用和getBytes方法类似,即将字符串转换为对应的char数组。例如:
String s = “abc”;
char[] c = s.toCharArray();
则字符数组c的值为:{‘a’,’b’,’c’}。

3 将字符串变成字节数组。
byte[] getBytes();

该方法的作用是将字符串转换为对应的byte数组,从而便于数据的存储和传输。例如:
String s = “计算机”;
byte[] b = s.getBytes(); //使用本机默认的字符串转换为byte数组
byte[] b = s.getBytes(“gb2312”); //使用gb2312字符集转换为byte数组
在实际转换时,一定要注意字符集的问题,否则中文在转换时将会出现问题。

4 将字符串中的字母转成大小写。
* String toUpperCase():大写
* String toLowerCase():小写

toLowerCase方法 该方法的作用是将字符串中所有大写字符都转换为小写。例如:
String s = “AbC123”;
String s1 = s.toLowerCase();
则字符串s1的值是”abc123”,而字符串s的值不变。

类似的方法是toUpperCase,该方法的作用是将字符串中的小写字符转换为对应的大写字符。例如:
String s = “AbC123”;
String s1 = s. toUpperCase ();
则字符串s1的值是”ABC123”,而字符串s的值也不变。

5 将字符串中的内容进行替换
* String replace(char oldch,char newch);
* String replace(String s1,String s2);

该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。例如:
String s = “abcat”;
String s1 = s.replace(‘a’,’1’);
该代码的作用是将字符串s中所有的字符a替换成字符1,生成的新字符串s1的值是”1bc1t”,而字符串s的内容不发生改变。

如果需要将字符串中某个指定的字符串替换为其它字符串,则可以使用replaceAll方法,例如:
String s = “abatbac”;
String s1 = s.replaceAll(“ba”,”12”);
该代码的作用是将字符串s中所有的字符串”ab”替换为”12”,生成新的字符串”a12t12c”,而字符串s的内容也不发生改变。

如果只需要替换第一个出现的指定字符串时,可以使用replaceFirst方法,例如:
String s = “abatbac”;
String s1 = s. replaceFirst (“ba”,”12”);
该代码的作用是只将字符串s中第一次出现的字符串”ab”替换为字符串”12”,则字符串s1的值是”a12tbac”,字符串s的内容也不发生改变

6 将字符串两端的空格去除。
* String trim();

该方法的作用是去掉字符串开始和结尾的所有空格,然后形成一个新的字符串。该方法不去掉字符串中间的空格。例如:
String s = “ abc abc 123 “;
String s1 = s.trim();
则字符串s1的值为:”abc abc 123”。字符串s的值不变。

7 将字符串进行连接 。
* String concat(string);

该方法的作用是进行字符串的连接,将两个字符串连接以后形成一个新的字符串。例如:
String s = “abc”;
String s1 = “def”;
String s2 = s.concat(s1);
则连接以后生成的新字符串s2的值是”abcdef”,而字符串s和s1的值不发生改变。

如果需要连接多个字符串,可以使用如下方法:
String s = “abc”;
String s1 = “def”;
String s2 = “1234”;
String s3 = s.concat(s1).concat(s2);
则生成的新字符串s3的值为”abcdef1234”。

其实在实际使用时,语法上提供了一种更简单的形式,就是使用“+”进行字符串的连接。例如:
String s = “abc” + “1234”;
则字符串s的值是”abc1234”,这样书写更加简单直观。
而且使用“+”进行连接,不仅可以连接字符串,也可以连接其他类型。
但是要求进行连接时至少有一个参与连接的内容是字符串类型。
而且“+”匹配的顺序是从左向右,
如果两边连接的内容都是基本数字类型则按照加法运算,
如果参与连接的内容有一个是字符串才按照字符串进行连接。

例如:
int a = 10;
String s = “123” + a + 5;
则连接以后字符串s的值是“123105”,计算的过程为首先连接字符串”123”和变量a的值,生成字符串”12310”,
然后使用该字符串再和数字5进行连接生成最终的结果。

而如下代码:
int a = 10;
String s = a + 5 + “123”;
则连接以后字符串s的值是”15123”,计算的过程为首先计算a和数字5,由于都是数字型则进行加法运算或者数字值15,
然后再使用数字值15和字符串”123”进行连接获得最终的结果。

而下面的连接代码是错误的:
int a = 12;
String s = a + 5 + ‘s’;
因为参与连接的没有一个字符串,则计算出来的结果是数字值,在赋值时无法将一个数字值赋值给字符串s。

8 valueOf方法
该方法的作用是将其它类型的数据转换为字符串类型。
需要注意的是,基本数据和字符串对象之间不能使用以前的强制类型转换的语法进行转换。
另外,由于该方法是static方法,所以不用创建String类型的对象即可。

例如:
int n = 10;
String s = String.valueOf(n);

则字符串s的值是”10”。虽然对于程序员来说,没有发生什么变化,但是对于程序来说,数据的类型却发生了变化。
介绍一个简单的应用,判断一个自然数是几位数字的逻辑代码如下:
int n = 12345;
String s = String.valueOf(n);
int len = s.length();

则这里字符串的长度len,就代表该自然数的位数。这种判断比数学判断方法在逻辑上要简单一些。

时间: 2025-01-06 06:07:38

java String 提供的方法的相关文章

java String 中 intern方法的概念

1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null: 3. String str=”kvill”:String str=new String (“kvill”);的区别: 在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念. 常量池(const

java String拼接的方法选择及性能分析

String 拼接的方法选择 在拼接静态字符串时,尽量用 +,因为通常编译器会对此做优化,如: String test = "this " + "is " + "a " + "test " + "string" 编译器会把它视为: String test = "this is a test string" 在拼接动态字符串时,尽量用 StringBuffer 或 StringBuilde

java String的各种方法及操作

No. 方法名称 功能 字符与字符串 01 public String(char[] value) 将字符数组中所有内容变为字符串 02 public String(char[] value,int offset,int count) 将字符数组中部分内容变为字符串 03 public char charAt(int index) 取得指定索引位置的字符,索引从0开始 04 public char[] toCharArray() 将字符串变为字符数组返回 字节与字符串 01 public Str

Java String的intern方法

在Java6中,intern方法返回的是对应字符串在永久态(方法区)中的地址:Java7以后,intern方法返回的是该字符串首次创建时候的堆内存的地址: 在java7中: package com.ecarx.daa.data.manager.utils; public class StringTest { public static void main(String[] args) { String a = new StringBuffer("a").append("a&q

深入分析Java的String类的方法与特点

字符串是任何编程语言都必须支持的变量类型,有些编程语言是直接提供了原生的变量类型,有些编程语言则使用语法特性以 SDK 的形式提供支持.在Java编程平台中,对字符串的支持使用了后者的形式,就是通过在 JDK中提供一个名为String的类,对应字符串这个变量类型. 源码分析 既然JDK中的String类对应了字符串变量类型,为了熟练地掌握Java中字符串相关的技能,我们必须深入地分析和研究一下这个类.编码界有一句名言叫做 "源码面前,了无秘密",因此,我们第一步就是来看看String类

JAVA String.format 方法使用介绍

1.对整数进行格式化:%[index$][标识][最小宽度]转换方式        我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解,就是最终该整数转化的字符串最少包含多少位数字.我们来看看剩下2个部分的含义吧: 标识: '-'    在最小宽度内左对齐,不可以与“用0填充”同时使用'#'    只适用于8进制和16进制,8进制时在结果前面增加一个0,16进制时在结果前面增加0x'+'    结果总是包括一个符号(一般情况下只适用

《Java程序员面试笔试宝典》之为什么需要public static void main(String[] args)这个方法

public staticvoid main(String[] args)为Java程序的入口方法,JVM在运行程序的时候,会首先查找main方法.其中,public是权限修饰符,表明任何类或对象都可以访问这个方法,static表明main方法是一个静态方法,即方法中的代码是存储在静态存储区的,只要类被加载后,就可以使用该方法而不需要通过实例化对象来访问,可以直接通过类名.main()直接访问,JVM在启动的时候就是按照上述方法的签名(必须有public与static修饰,返回值为void,且方

java基础知识回顾之---java String final类普通方法的应用之字符串数组排序

/* * 1,给定一个字符串数组.按照字典顺序进行从小到大的排序. * {"nba","abc","cba","zz","qq","haha"} *  * 思路: * 1,对数组排序.可以用选择,冒泡都行. * 2,for嵌套和比较以及换位. * 3,问题:以前排的是整数,比较用的比较运算符,可是现在是字符串对象. *   字符串对象怎么比较呢?爽了,对象中提供了用于字符串对象比较的功能

java基础知识回顾之---java String final类普通方法

辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      *      * 1,获取:     * 1.1 获取字符串中字符的个数(长度).     *         int length();     * 1.2 取字符串中的某一个字符,其中的参数index指的是字符串中序数.字符串的序数从0开始到length()-1 .     *