java字符串类的常用方法有哪些(java中字符串类型的关键字是什么)

发布时间:2023-09-06
本文主要介绍java字符串类的常用方法有哪些(java中字符串类型的关键字有哪些)?,下面一起看看java字符串类的常用方法有哪些(java中字符串类型的关键字有哪些)?相关资讯。
本文是《零基础学java》栏。它用通俗易懂的文字、图表、代码,带你从零开始走向高薪之路!
string本文首发于官方账号【编程攻略】
在java中,我们经常使用字符串。所有字符串值的类型都是string,这不是基本类型。它的全称是java.lang.string我们有必要在这里学习一些基本的使用方法。
字符串常量:在java中,所有的字符串常量都用双引号括起来,例如 abc 。因为它的类型是string,自然,每个string常量都是string的对象,在string中调用public(所谓public就是对程序员全部开放的方法、属性或类)方法也是很自然的。比如: abc 。的索引。;b ),它的意思是in abc ,其中 a 首先出现(从0开始),其结果为1。
字符串比较:
= =还有!=比较引用类型的数据时,是比较引用是否相同,而不是比较对象中的内容。比如: abc = = abc 结果如何呢?答案是真的。这是什么意思?意思是= =周围的两个常数实际上是同一个对象,而不是两个不同的对象有相同的字符组合。因此,在你的程序中,不管有多少 abc 你写这些 abc 都是一样的字符串。
那么如何比较两个字符串的内容是否相同呢?我们在string中使用equals方法,比如比较 abc 和 abd ,我们可以这样写:
初始化 abc 。等于( abd )或者 abd 。等于( abc )字符串变量:所谓初始化就是获取第一个值。因为构造字符串类有几种方法,所以字符串变量的初始化也会有几种对应的形式。我们这里只知道常用的方法,其他的,你可以自己去查jdk手册。
第一种形式:
字符串s = asdf 我们学习java,一定要知道原理,不能只知道一个不知道另一个。这句话是什么意思?我们知道字符串常量也是对象,所以它的意思是把 asdf 变量s中,那么s = = asdf ?自然也是如此。
第二种形式:
string s =新字符串( asdf );如您所见,这个表单是标准生成的类对。以图像的形式,那么s = = asdf 这条语句执行后。此时,它不再是真的,而是假的,这意味着 asdf 由s和 asdf 作为参数传递给字符串构造函数的是两个不同的字符串。这句话的意思是用 asdf 作为模板,然后用asdf的内容创建一个string对象。但是s.equals的值呢?asdf )?因为这两个字符串的字符序列一致,所以结果为真。
通用方法表
方法头中的方法函数可能抛出的异常public char charat(int index)返回指定索引处的char值。索引范围从0到length-1。序列的第一个char值位于索引0处,第二个位于索引1处,依此类推,这类似于数组索引。如果index的值不在字符串长度的范围内,将生成indexoutofboundsexception,该异常可能不会被捕获。当且仅当该字符串包含指定的字符序列时,public boolean contains(char sequences s)返回true。nullpointerexception-如果s为null,此异常可以将此字符串与指定的对象进行比较,而无需捕捉公共布尔equals (object an object)。当且仅当参数不为null并且是表示与此对象相同的字符序列的string对象时,结果为true。无公共布尔值等于忽略大小写(string anotherstring)将此字符串与另一个字符串进行比较,不区分大小写。如果两个字符串长度相同,并且对应的字符相等(不区分大小写),则认为这两个字符串相等。no public int compare to(string another string)如果参数string等于该字符串,返回值为0;如果该字符串小于字典顺序中的字符串参数,则返回小于0的值;如果按照字典顺序,此字符串大于字符串参数,则返回大于0的值。no public int compare to ignore case(string str)按字典顺序比较两个字符串,不考虑大小写。根据指定字符串是大于、等于还是小于此字符串(不区分大小写),返回负整数、0或正整数。公共场合禁止入内t indexof(int ch)是字符 该对象表示的字符序列中的索引;如果该字符没有出现,则返回-1。no public int index of (int ch,int from index)从指定的索引开始搜索,并返回指定字符在此字符串中第一次出现的索引,否则返回-1。no public int indexof(string str)如果string参数在此对象中作为子串出现,则返回第一个这样的子串的第一个字符的索引;如果它没有作为子串出现,则返回-1。no public int index of (string str,int from index)返回指定子串在此字符串中第一次出现的索引,否则返回-1。没有公共布尔值isempty返回true如果长度为0;否则返回false。此字符在此字符序列中的最后一次出现没有公共的int lastindexof(int ch)索引;如果该字符没有出现,则返回-1。no public int lastindexof (int ch,int from index)从指定的索引开始,返回指定字符在此字符串中最后一次出现的索引。如果该字符没有出现在这一点之前,则返回-1。no public int lastindexof(string str)如果一个字符串参数作为子串在该对象中出现一次或多次,则返回最后一个子串的第一个字符。如果它没有作为子串出现,则返回-1。no public int lastindexof(string str,int from index)返回指定子串在此字符串中最后一次出现的索引,并从指定索引开始反向搜索。如果字符串没有出现在这一点之前,则返回-1。no public int length返回该字符串的长度。no public string replace(char old char,char newchar)返回一个新的字符串,它是通过用新的char替换该字符串中出现的所有旧的char而获得的。no public string replace(char sequence targe,char sequence replacement)用指定的替换项替换此字符串的所有匹配目标。t 的子串。替换是从字符串的开头到结尾执行的。例如,替换 aa 在弦上 aaa 与 b 将产生 巴 而不是 ab 。如果目标或替换为空。。这个异常不一定要被捕获。public string substring(int begin index)返回一个新的字符串,它是这个字符串的子字符串。子字符串从指定索引处的字符开始,到字符串末尾结束。例子: 不开心 。substring(2)返回 快乐 如果beginindex是负数或者大于这个string对象的长度。这个异常不一定要被捕获。public string substring(int begin index,int end index)返回一个新的字符串,它是这个字符串的子串。子字符串从指定的beginindex开始,到索引endindex-1处的字符结束。因此,子串的长度是endindex-beginindex。例子: 汉堡 。substring (4,8)返回 催促 如果beginindex为负,或者endindex大于该string对象的长度,或者beginindex大于endindex,则抛出。这个异常不一定要被捕获。公共字符串tolowercase使用默认区域设置的规则将该字符串中的所有字符转换为小写。no public string touppercase使用默认区域设置的规则将该字符串中的所有字符转换为大写。no public string trim返回字符串的副本,忽略前导空格和尾随空格。没有公共静态字符串值(布尔b)如果参数为true,则字符串等于 真实 被返回;否则,字符串等于 虚假 被退回。没有公共静态字符串值(char c)返回char参数的字符串表示形式。例如,string . value of( ;a )是 a 并且没有公共静态string valueof(char[] data)新分配的字符串,表示字符数组参数中包含的相同字符序列。(char [] data,int offset,int count)的no public static string值返回由从数据数组中的偏移量开始的count数组元素组成的字符串indexoutofboundsexception如果offset为负,count为负,或者offset count大于data.length,则可能无法捕获该异常。公共静态字符串值(double d)返回double参数的字符串表示形式。与单参数double.tostring方法返回的结果一致。没有公共静态字符串值(float f)返回float参数的字符串表示形式。它与单参数float.tostring方法返回的结果一致。no public static string value of(int i)返回int参数的字符串表示。它与单参数integer.tostring方法返回的结果一致。没有公共静态字符串值(long l)返回long参数的字符串表示形式。它与单参数long.tostring方法返回的结果一致。没有(object obj)的公共静态字符串值。如果参数为null,则字符串等于 零 否则,返回obj.tostring的值。从上面的方法列表可以看出,有些方法名称相同,参数不同,这是方法的重载,比如valueof方法。所谓重载,是指在同一个类中有多个同名但参数表不同的方法定义。当调用这些重载方法时,java会根据不同的参数决定调用不同的重载方法。java在什么基础上区分不同的参数?根据相应位置参数的类型进行区分。有些方法前面有修饰符static,所以这个方法叫做static method。此方法由类名直接调用,而不是由对象调用。例如,上表中valueof的方法在被调用时看起来像string.valueof(123)。在上表中,我们看到所有方法前面都有一个公共类。向外界提供服务的方法都由修饰符public标识。当我们定义类的方法时,并不是所有的方法都是公共的,有些方法只供类(或者包或者子类)内部使用。这就好比你在超市结账的时候,只需要把商品和钱交给收银员就可以了。至于收银员以后怎么盘点,这是超市内部的机制,我们不 我不需要注意它。有些方法,比如charat,可能会抛出异常,但是这些异常不会抛出。;不需要在程序中被捕获或声明。什么情况?我们可以看到这些异常是从哪个类继承来的:java.lang.runtimeexception我们这里说:从这个类继承来的异常的任何子类,你的程序既不能捕获,也不能声明,但是一旦出现这类异常,你的程序就会毫不犹豫地被中断,系统会处理异常,很简单,只需要打印出错误堆栈信息,然后断开你的程序。因此,考虑到你的程序的健壮性,我们 最好捕获并处理它。一旦创建了stringbuffer和stringbuilderstring对象,就不能更改它们的内容。你可能会说string的replace方法没有替换子字符串。我们要明确,replace得到的是一个新的字符串,对原字符串没有影响。有时候,我们需要在原字符串的基础上进行操作,这时候就需要使用stringbuffer或者stringbuilder。
stringbuffer用于多线程环境,stringbuilder用于单线程环境。这两个类中提供的公共方法是一致的。这两个类的主要操作是append和insert方法,这些方法用各种类型重载以接受任何类型的数据。每种方法都可以有效地将给定的数据转换成字符串,然后将字符串的字符添加或插入到字符串生成器中。append方法总是将这些字符添加到生成器的末尾;insert方法在指定点添加字符。还有其他方法,可以参考jdk手册。
当我们生成这两类对象时,如果没有参数,比如:stringbuffer sb = new stringbuffer,它会构造一个不带字符的stringbuffer区域,初始容量为16个字符。但是如果使用带参数的构造函数,比如:string buffer sb = new string buffer( abc );它将构造一个stringbuffer区域,并将其内容初始化为abc。这个字符串的初始容量是16个以上的字。字符串参数的长度是19。还可以在创建对象时通过传递一个数值来设置stringbuffer区域的大小,比如:string buffer sb = new string buffer(20);这里20是stringbuffer区的大小。
数组的概念数组是一个数据序列,序列中的每个元素都有相同的类型,可以是基本类型,也可以是引用类型。如果是基本类型,每个数组元素所在的内存空间就是基本类型的值;如果是引用类型,每个数组元素所在的内存空间就是引用。如图所示:
数组的定义(二):
int[]a1;这种形式说明变量a1是数组变量,其数组元素类型为int type int a1[];这个形式说明a1[]数组元素的类型是int类型,a1是数组变量。无论哪种形式,我们都可以 定义数组时,不要像c语言那样指定数组的大小。让 让我们通过下面的例子进一步说明它们之间的区别:
int[] a,b,c;这里我们可以知道a,b,c三个变量都是数组变量inta [],b,c;这里我们知道只有a是数组变量,而b和c是一般变量,不是数组变量。数组变量是引用变量,也就是说数组变量存储的是数组引用,而不是数组本身,数组的存储空间在初始化的时候就分配在堆里(所谓堆,你可以理解为大仓库),这和c语言有很大的区别,这也成为了java数组的一个优势。
数组的初始化:和其他类型的变量一样,数组的初始化可以在定义的同时初始化,也可以在定义后第一次使用时初始化。有两种初始化形式:
int a[]= new int[10];这种形式在堆中分配一个可以容纳10个int数据的存储空间,其引用放在数组变量a中;int a [] = { 1,2,3,4,5 };这种形式实际上是把数组{1,2,3,4,5}的引用放到了a中,这种形式只能在定义数组的时候进行。如果数组元素是引用类型,使用大括号初始化数组有两种形式::公共类array init { public static void main(string[]args){ integer[]a = { new integer(1),new integer (2),new integer。r(3),};integer[] b =新整数[]{新整数(1),新整数(2),新整数(3),};}}数组元素的引用:数组元素也被下标引用,下标可以是int表达式,但值必须在0到数组大小-1的范围内。数组元素的类型都是定义数组时指定的类型。
多维数组二维以上的数组视为多维数组,java中数组的实现是通过链式存储来实现的,如下图所示:
对于同一维度,多维数组的定义和初始化原则是相同的,如下所示:
第一种形式,int [] [] a1 = {{1,2,3},{4,5,6},{7,8,9 } };//每个向量都用大括号括起来。用new定义a2的大小,: int[][]a2 = new int[2][2][4];因为在java中使用链式存储数组,所以数组中向量的大小不需要相同,例如:
int[][] a1 = {{ 1,2},{ 3,4,5,6},{ 7,8,9 } };你甚至可以举以下例子:
int b[][];//定义一个二维数组b = new int[2][];// b是指有两个子数组的数组b[0]= new int[5];// b[0]是指一个有5个元素的数组;b[1]= new int[3];// b[1]引用一个有三个元素的数组array作为方法的参数。方法的参数可以是数组。使用数组参数时,应注意以下事项:
在参数表中,数组名后面的方括号不能省略,方括号的个数等于数组的维数。在参数表中,数组名后面不需要括号。当参数是数组时,参数和实参传递一个引用示例:
a类{ void f(int va[]){ for(int i = 0;i可变长度;i )//va.length是数组va[i]的大小;} public static void main(string args[]){ int[]aa = new int[10];a ta = new a;for(int i = 0;i aa .长度;i)aa[i]= i;system . out . println( 在执行f );for(int i = 0;i aa .长度;i)系统输出int(aa[i] );//将aa作为参数传递给f方法ta . f(aa);//f此方法的调用必须使用对象,因为它是非静态方法system . out . println( \n在执行f );for(int i = 0;i aa .长度;i)system . out . print(aa[i] );复制数组将一个数组的内容复制到另一个数组不能使用赋值语句a = b,这会使a引用与b相同的数组..如果需要复制一个数组,可以使用system类中的arraycopy方法,其方法头如下:
public static void array copy(object src,int srcpos,object dest,int destpos,int length)从指定的源数组src中复制一个数组,从指定的位置srcpos开始。长度数组元素从srpcos到srpcos length-1,从目标数组dest的指定位置开始,从despcos到despcos length-1。
如果参数src和dest引用同一个数组对象,那么复制过程就像是把srcpos到srcpos length-1的元素复制到一个有length元素的临时数组,然后把这个临时数组的内容复制到目标数组的destpos到destpos length-1的位置。
在以下三种情况下会引发异常:
如果src或dest为null,则会引发nullpointerexception异常。
只要满足以下任一条件,就会引发arraystoreexception异常,并且不会修改目标数组:
src参数不是数组对象。dest参数不是数组对象。src和dest引用的数组元素类型是不一致的基本类型。src和dest参数引用的数组元素属于基本类型,另一个属于引用类型。如果源数组中从srpcos到srpcos length-1的所有实际元素都无法通过分配转换转换为目标数组的元素类型,则会引发arraystoreexception异常。在这种情况下,假设复制过程已经达到了k个长度,此时会抛出一个异常,从srcpos到srcpos k-1位置的源数量。组元素已被复制到目标数组中的destpos到destpos k-1位置,目标数组中的其他位置将不会被修改。
只要满足以下任一条件,就会引发indexoutofboundsexception异常,并且不会修改目标数组:
srcpos、destpos和length参数为负。srcpos长度大于src.length,后者是源数组的长度。destpos的长度大于dest.length,即目标数组字符串和字符数组的长度。在java中,字符数组不能视为字符串,但我们可以使用字符数组作为模板来创建字符串,如下所示:
char data[]= { ;a , b , c };//这里的数据可以 t被视为string str = new string(data);//str不仅指字符串的操作 abc 对数组的访问,也是对数组的遍历,这意味着某个数据结构中的每个元素都以某种被访问一次且只有一次。循环语句通常可用于遍历数组。这里我们引入一个专门用于遍历的foreach语句,其语法格式如下:
//这里,type是被遍历结构中元素的类型名,x是结构中的元素,collection是(typ:集合){...//循环体}如下:
int[]a = n: a){//下标system . out . print(x )不能用在foreach语句中;}对数组进行排序对数组进行排序,当然我们也可以自己编写各种标准的排序算法。下面是一个工具类java.util.arrays(注意是复数)。这个类包含各种操作数组的方法,例如排序和搜索。除非另有说明,否则如果该类中方法的数组参数引用值为null,将引发nullpointerexception。
按升序排序这个类中有一系列的方法来排序数组。该方法称为sort,由一系列重载实现,可以按升序对各种数组元素类型的数组进行排序。通常,我们看下面的方法头:
公共静态空sort(int[] a)这个方法按照数字升序对传入的int数组a进行排序。排序算法是一种优化的快速排序。
我们也可以只对数组的一部分进行排序。方法标题如下:
public static void sort (int [] a,int fromindex,int toindex)这个方法按照数字升序对传入的int数组a中从index到toindex-1的元素进行排序。同样,它也是一个经过调整的快速排序。此方法可能会引发以下异常:
illegalargumentexception-if from index toindexarrayindexoutofboundsexception-如果上面两个方法fromindex 0或toindex a.length重载,第一个参数可以是其他类型,包括基本类型和引用类型。
你可能注意到了,上面说的排序只能按升序排序,如果是其他复杂的排序就不适用了。
带比较器的排序jdk为我们提供了强大的排序支持,因为涉及到一些我们还没有接触到的知识,这里我就只理解一下。
public static t void sort(t[] a,比较器?super t c)和public static t void sort (t [] a,int from index,int to index,comparator?两者的区别在于,第一个对整个数组进行排序,第二个可以选择排序范围。
搜索数组元素要搜索数组中的元素,我们最简单但可能效率最低的方法是遍历数组。同样,工具类java.util.arrays也为我们提供了直接搜索方法binarysearch,它也有一系列重载。使用该方法的前提是数组必须按sort排序。其方法标题如下:
公共静态int二分搜索法(int [] a,int key)和公共静态int二分搜索法(int [] a,int from index,int toindex,int key)的区别在于,第一个对整个数组进行排序,第二个可以选择排序范围。重载后,第一个参数可以是各种其他类型,包括base。此类型和引用类型。
在方法中,a是要搜索的数组,key是该数组中要搜索的键值,fromindex是起始位置,toindex-1是结束位置。
如果键值包含在数组中,则返回其索引值;否则,它返回(-(插入点)-1)。插入点定义为键插入到数组中的点:即大于该键的第一个元素的索引,或者如果数组中的所有元素都小于指定的键,则为a.length或toindex,这确保当且仅当找到该键时,返回值为= 0,否则为负。
同样,这个方法也有两个带比较器的方法重载,这里就不描述了。
对于工具类java.util.arrays中的其他方法,您可以查看jdk手册。
问题是用筛选法找出1000以内的素数,按每行10个输出。
最后,本文来自官方账号【编程攻略】。更多java学习资料见【编程攻略】。
标签:
数组字符串
了解更多java字符串类的常用方法有哪些(java中字符串类型的关键字有哪些)?相关内容请关注本站点。
上一个:1150主板m2接口,主板M2是个什么接口
下一个:水仙大田繁殖及栽培方法

美国mac电磁阀
人们喝什么茶最适合养生、防秋燥呢?
电脑能无限连接吗(电脑想连接无线网络)
普洱茶感受官审评方法
毕业证照片哪里能查到(全国毕业证遗失补救平台)
人工智能龙头股排名前十,国内都哪些比较牛的人工智能公司
戴尔官方官网首页,戴尔官方网址是多少(戴尔官方网站首页)
软启动器如何实现软停车
茶不能老是端着,人不能老是装着
招投标代理