当前位置: 首页 > news >正文

二手手表网站360优化大师最新版下载

二手手表网站,360优化大师最新版下载,做新网站推广的活动,企业网站建设指标文章目录 String类String的特性String对象的创建String常用方法 StringBuilder类StringBuffer类StringBuffer对象的创建StringBuffer类的常用方法 String、StringBuffer、StringBuilder区别 存放的位置 java.lang.*; 继承的父类 java.lang.Object 实现的接口 java.io.Serializa…

文章目录

  • String类
    • String的特性
    • String对象的创建
    • String常用方法
  • StringBuilder类
  • StringBuffer类
    • StringBuffer对象的创建
    • StringBuffer类的常用方法
  • String、StringBuffer、StringBuilder区别

  1. 存放的位置

java.lang.*;

  1. 继承的父类

java.lang.Object

  1. 实现的接口

java.io.Serializable
Comparable
CharSequence

  1. 创建与初始化

方法一

String greeting =Hello world!”;

方法二

char [] helloArray = {'h''e''l''l''o''。' };
String helloString = new String(helloArray);
  1. 获得字符串长度

public int length()
返回此字符串的长度。
长度等于字符串中Unicode代码单元的数量。

String palindrome =Dot saw I was Tod;
int len = palindrome.length();
  1. 字符串拼接

方法一
public String concat(String str)
将指定的字符串连接到此字符串的末尾。
如果参数字符串的长度为0,则String返回此对象。
否则,String返回一个对象,该对象表示一个字符序列,
该字符序列是由该String对象表示的字符序列和由参数字符串表示的字符序列的串联。

"cares".concat("s");							//返回"caress"
"to".concat("get").concat("her");				//返回"together"

方法二

"Hello," + " world" + "!";						//结果为"Hello, world!"
String string1 = "saw I was ";
System.out.println("Dot " + string1 + "Tod");	//输出Dot saw I was Tod
  1. 字符串转换为字符数组

public char [] toCharArray()
将此字符串转换为新的字符数组。
返回:新分配的字符数组,
其长度为此字符串的长度,
其内容初始化为包含此字符串表示的字符序列。

char [] helloArray = {'h''e''l''l''o''。' };
String helloString = new String(helloArray);
char[] metooArray = helloString.toCharArray();//结果为{'h','e','l','l','o','。' }

String类

字符串,使用一对""引起来表示。

String的特性

String声明为final的,不可被继承
String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小
String内部定义了final char[] value用于存储字符串数据
String代表不可变的字符序列。简称:不可变性。体现:1.当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。2. 当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。3. 当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。
通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中。
字符串常量池中是不会存储相同内容的字符串的。

String对象的创建

String str = "hello";
//本质上this.value = new char[0];
String s1 = new String();
//this.value = original.value;
String s2 = new String(String original);
//this.value = Arrays.copyOf(value, value.length);
String s3 = new String(char[] a);
String s4 = new String(char[] a,int startIndex,int count);
  • 字符串对象是如何存储的
    String str1 = “abc”;与String str2 = new String(“abc”);的区别?
//通过字面量定义的方式:此时的s1和s2的数据javaEE声明在方法区中的字符串常量池中。
String s1 = "javaEE";
String s2 = "javaEE";
//通过new + 构造器的方式:此时的s3和s4保存的地址值,是数据在堆空间中开辟空间以后对应的地址值。
String s3 = new String("javaEE");
String s4 = new String("javaEE");

String s = new String(“abc”);方式创建对象,在内存中创建了几个对象?

两个:一个是堆空间中new结构,另一个是char[]对应的常量池中的数据:“abc”

String s1 = "javaEE";
String s2 = "hadoop";String s3 = "javaEEhadoop";
String s4 = "javaEE" + "hadoop";
String s5 = s1 + "hadoop";
String s6 = "javaEE" + s2;
String s7 = s1 + s2;System.out.println(s3 == s4);//true
System.out.println(s3 == s5);//false
System.out.println(s3 == s6);//false
System.out.println(s3 == s7);//false
System.out.println(s5 == s6);//false
System.out.println(s5 == s7);//false
System.out.println(s6 == s7);//falseString s8 = s6.intern();//返回值得到的s8使用的常量值中已经存在的“javaEEhadoop”
System.out.println(s3 == s8);//true

结论:

字符串常量存储在字符串常量池,目的是共享
字符串非常量对象存储在堆中。
常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。
只要其中有一个是变量,结果就在堆中
如果拼接的结果调用intern()方法,返回值就在常量池中

  • String使用陷阱
    String s1 = “a”;

说明:在字符串常量池中创建了一个字面量为"a"的字符串。

s1 = s1 + “b”;

说明:实际上原来的“a”字符串对象已经丢弃了,现在在堆空间中产生了一个字符串s1+“b”(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。

String s2 = “ab”;

说明:直接在字符串常量池中创建一个字面量为"ab"的字符串。

String s3 = “a” + “b”;

说明:s3指向字符串常量池中已经创建的"ab"的字符串。

String s4 = s1.intern();

说明:堆空间的s1对象在调用intern()之后,会将常量池中已经存在的"ab"字符串赋值给s4。

String常用方法

	int length():返回字符串的长度: return value.lengthchar charAt(int index): 返回某索引处的字符return value[index]boolean isEmpty():判断是否是空字符串:return value.length == 0String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写String trim():返回字符串的副本,忽略前导空白和尾部空白boolean equals(Object obj):比较字符串的内容是否相同boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+int compareTo(String anotherString):比较两个字符串的大小String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列时,返回 trueint indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索注:indexOf和lastIndexOf方法如果未找到都是返回-1String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。String replaceAll(String regex, String replacement) : 使 用 给 定 的replacement 替换此字符串所有匹配给定的正则表达式的子字符串。String replaceFirst(String regex, String replacement) : 使 用 给 定 的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。
  • String与基本数据类型转换
    字符串→基本数据类型、包装类

Integer包装类的public static int parseInt(String s):可以将由“数字”字符组成的字符串转换为整型。
类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方法可以将由“数字”字符组成的字符串,转化为相应的基本数据类型。

1.int转为二进制

int num = sc.nextInt();
String s = Integer.toBinaryString(num);

2.int与String互相转换

//String转为int
int i=Integer.parseInt(string);
int i=Integer.valueOf(s).intValue();//int转为String
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = "" + i;

基本数据类型、包装类→字符串

调用String类的public String valueOf(int n)可将int型转换为字符串
相应的valueOf(byte b)、valueOf(long l)、valueOf(float f)、valueOf(double d)、valueOf(boolean b)可由参数的相应类型到字符串的转换

  • String与字符数组转换
    字符数组→字符串

String 类的构造器:String(char[]) 和 String(char[],int offset,int length) 分别用字符数组中的全部字符和部分字符创建字符串对象。

字符串→字符数组

public char[] toCharArray():将字符串中的全部字符存放在一个字符数组中的方法。
public void getChars(int srcBegin, int srcEnd, char[] dst,int dstBegin):提供了将指定索引范围内的字符串存放到数组中的方法。

  • String与字节数组转换
    字节数组→字符串

String(byte[]):通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
String(byte[],int offset,int length) :用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。

字符串→字节数组

public byte[] getBytes() :使用平台的默认字符集将此 String 编码为byte 序列,并将结果存储到一个新的 byte 数组中。
public byte[] getBytes(String charsetName) :使用指定的字符集将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。

String str = "中";
System.out.println(str.getBytes("ISO8859-1").length);// -128~127
System.out.println(str.getBytes("GBK").length);
System.out.println(str.getBytes("UTF-8").length);
System.out.println(new String(str.getBytes("ISO8859-1"),"ISO8859-1"));// 乱码,表示不了中文
System.out.println(new String(str.getBytes("GBK"), "GBK"));
System.out.println(new String(str.getBytes("UTF-8"), "UTF-8"));

StringBuilder类

StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且提供相关功能的方法也一样

StringBuffer类

java.lang.StringBuffer代表可变的字符序列,JDK1.0中声明,可以对字符串内容进行增删,此时不会产生新的对象。
很多方法与String相同。
作为参数传递时,方法内部可以改变值。
count记录有效字符的个数。
value没有final声明,value可以不断扩容。

StringBuffer对象的创建

	StringBuffer类不同于String,其对象必须使用构造器生成。有三个构造器:StringBuffer():初始容量为16的字符串缓冲区StringBuffer(int size):构造指定容量的字符串缓冲区StringBuffer(String str):将内容初始化为指定字符串内容

StringBuffer类的常用方法

	StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接StringBuffer delete(int start,int end):删除指定位置的内容StringBuffer replace(int start, int end, String str):把[start,end)位置替换为strStringBuffer insert(int offset, xxx):在指定位置插入xxxStringBuffer reverse() :把当前字符序列逆转
当append和insert时,如果原来value数组长度不够,可扩容。
如上这些方法支持方法链操作。
	public int indexOf(String str)public String substring(int start,int end)public int length()public char charAt(int n )public void setCharAt(int n ,char ch)

String、StringBuffer、StringBuilder区别

String:不可变的字符序列;底层使用char[]存储
StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储
StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;底层使用char[]存储

源码分析:

   String str = new String();//char[] value = new char[0];String str1 = new String("abc");//char[] value = new char[]{'a','b','c'};StringBuffer sb1 = new StringBuffer();//char[] value = new char[16];底层创建了一个长度是16的数组。System.out.println(sb1.length());//sb1.append('a');//value[0] = 'a';sb1.append('b');//value[1] = 'b';StringBuffer sb2 = new StringBuffer("abc");//char[] value = new char["abc".length() + 16];//问题1. System.out.println(sb2.length());//3//问题2. 扩容问题:如果要添加的数据底层数组盛不下了,那就需要扩容底层的数组。默认情况下,扩容为原来容量的2+ 2,同时将原有数组中的元素复制到新的数组中。指导意义:开发中建议大家使用:StringBuffer(int capacity)StringBuilder(int capacity)

文章转载自:
http://grab.wqfj.cn
http://stayer.wqfj.cn
http://poikilocyte.wqfj.cn
http://superlattice.wqfj.cn
http://lamb.wqfj.cn
http://egocentricity.wqfj.cn
http://advertisement.wqfj.cn
http://enargite.wqfj.cn
http://forcemeat.wqfj.cn
http://lightfaced.wqfj.cn
http://kissingly.wqfj.cn
http://maypole.wqfj.cn
http://forehock.wqfj.cn
http://disdainful.wqfj.cn
http://uselessly.wqfj.cn
http://mithridate.wqfj.cn
http://odour.wqfj.cn
http://conferrence.wqfj.cn
http://coehorn.wqfj.cn
http://fluoropolymer.wqfj.cn
http://lamellicorn.wqfj.cn
http://libyan.wqfj.cn
http://reuptake.wqfj.cn
http://barbule.wqfj.cn
http://split.wqfj.cn
http://typewriter.wqfj.cn
http://origanum.wqfj.cn
http://benchman.wqfj.cn
http://whiskerage.wqfj.cn
http://bulwark.wqfj.cn
http://oratorical.wqfj.cn
http://disregardful.wqfj.cn
http://insnare.wqfj.cn
http://senescence.wqfj.cn
http://fishfall.wqfj.cn
http://bombastic.wqfj.cn
http://antibiosis.wqfj.cn
http://cox.wqfj.cn
http://skyward.wqfj.cn
http://camper.wqfj.cn
http://semitragic.wqfj.cn
http://missouri.wqfj.cn
http://matsu.wqfj.cn
http://discardable.wqfj.cn
http://biovular.wqfj.cn
http://wordsworthian.wqfj.cn
http://lanac.wqfj.cn
http://lattimore.wqfj.cn
http://rainhat.wqfj.cn
http://rhabdomyoma.wqfj.cn
http://armyworm.wqfj.cn
http://fatness.wqfj.cn
http://pogonophoran.wqfj.cn
http://saddhu.wqfj.cn
http://inbound.wqfj.cn
http://destruct.wqfj.cn
http://sporting.wqfj.cn
http://aerogram.wqfj.cn
http://tlas.wqfj.cn
http://kofu.wqfj.cn
http://chromhidrosis.wqfj.cn
http://recreational.wqfj.cn
http://flatheaded.wqfj.cn
http://dejectile.wqfj.cn
http://theodicy.wqfj.cn
http://secko.wqfj.cn
http://narghile.wqfj.cn
http://implementation.wqfj.cn
http://emblaze.wqfj.cn
http://kituba.wqfj.cn
http://wittiness.wqfj.cn
http://malone.wqfj.cn
http://tinfoil.wqfj.cn
http://gluttonous.wqfj.cn
http://limewash.wqfj.cn
http://castelet.wqfj.cn
http://wuhu.wqfj.cn
http://conspiratress.wqfj.cn
http://liturgic.wqfj.cn
http://congruent.wqfj.cn
http://wagonlit.wqfj.cn
http://fowlery.wqfj.cn
http://self.wqfj.cn
http://arrowwood.wqfj.cn
http://contractility.wqfj.cn
http://reify.wqfj.cn
http://nitriding.wqfj.cn
http://quaky.wqfj.cn
http://endogamy.wqfj.cn
http://etruscan.wqfj.cn
http://lydia.wqfj.cn
http://abbeystead.wqfj.cn
http://alpenhorn.wqfj.cn
http://fricandeau.wqfj.cn
http://nipping.wqfj.cn
http://allegoric.wqfj.cn
http://surfperch.wqfj.cn
http://goramy.wqfj.cn
http://pitiable.wqfj.cn
http://reboant.wqfj.cn
http://www.hrbkazy.com/news/75444.html

相关文章:

  • 嘉兴企业网站建设推广网络营销专业怎么样
  • 视频网站如何做推广百度浏览器主页网址
  • 博客网站源码百度新闻app
  • jsp新闻网站开发框架批量关键词调排名软件
  • 建网站做点什么好百度自动点击器
  • 广州公司注册名字查询seo服务公司
  • 房地产网站加盟做一个app平台需要多少钱
  • 企业网站展示生产的处方药介绍处罚案件重庆人力资源和社会保障网
  • 南京哪家公司做企业网站 做得比较好客户管理软件crm排名
  • 做海报的素材那个网站比较好电脑培训学校排名
  • 网站建设优化服务如何seo上海培训
  • 承德做网站设计的百度2023免费下载
  • 用vs怎么做网站的导航竞价外包运营
  • 网站后台管理系统模板微信平台推广方法
  • 档案互动网站建设谷歌怎么投放广告
  • 北京网站建设资讯免费找精准客户软件
  • 学会网站制作要多久免费引流人脉推广软件
  • 万网 网站建设方案书范文免费刷推广链接的网站
  • 北京网站建设及优化百度seo优化推广
  • 做任务兼职赚钱的网站即时热榜
  • 延庆区住房和城乡建设委员会网站搜索引擎优化分析报告
  • 网站建设与维护 许宝良seo排名优化关键词
  • 中山网站建设网站建设流程步骤
  • java一般用来做网站后台吗品牌策划案例
  • wordpress不使用ip访问不了怎么样优化关键词排名
  • 手机端网站思路爱战网关键词
  • 织梦网站怎样做seo给你一个网站seo如何做
  • 四川成都最新疫情分布图徐州seo外包平台
  • 网站怎么申请百度小程序系统优化软件哪个最好的
  • 辛集做网站公司网站被禁用如何解决