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

学做网站论清远头条新闻

学做网站论,清远头条新闻,火车头wordpress采集后定时发布,企业网站源码javaJava---第八章 字符串String字符串的常用方法StringBuilder和StringBuffer常用方法 对比String 和StringBuilder 和 StringBuffer 字符串 String 特性: String 类位于java.lang包中,无需引入,可直接使用String 类是由final修饰的&#xff…

Java---第八章

  • 字符串
    • String
    • 字符串的常用方法
    • StringBuilder和StringBuffer
      • 常用方法
    • 对比String 和StringBuilder 和 StringBuffer

在这里插入图片描述

字符串

String

特性:

  • String 类位于java.lang包中,无需引入,可直接使用
  • String 类是由final修饰的,表示String 类是一个最终类,不能被继承
  • String 类构建的对象不可再被更改
package org.device.Device;public class DeviceTest {public static void main(String[] args) {//当使用一个字面量给字符串赋值的时候,首先会去字符串常量池里检测是否//存在其字面量,如果存在//则直接使用这个字面量的地址赋值即可,如果不存在,//则需要在字符串常量池中创建这个字面量,然后//再将地址赋值过去String s = "超用心";s += "在线学习";//这里的字符串拼接发生在堆内存上System.out.println(s);}
}

常见的构造方法:

public String(String original);public String(char value[]);public String(char value[],int offset,int count);public String(byte bytes[]);public String(byte bytes[].int offset,int length);public String(byte bytes[],Charset charset);//字符集

分别解释:

public String(String original);public static void main(String[] args) {String s = "超用心在线学习";System.out.println(s);//这里会创建两个对象,一个是字面量会在常量池中创建一个对象//另一个是new String()构造方法创建出来的对象String s1 = new String("超用心在线学习");System.out.println(s1);}
}

上面有String s = “超用心学习”,下面再创建就会先去常量池里查找,发现有一个,然后只创建一个堆内存对象


public String(char value[]);public String(char value[],int offset,int count);public static void main(String[] args) {char[] values = {'a','d','m','i','n'};String s2 = new String(values);System.out.println(s2);String s3 = new String(values,1,3);//跳过1个,再继续输出3个System.out.println(s3);}

输出:

admin
dmi

public String(byte bytes[]);public String(byte bytes[].int offset,int length);public static void main(String[] args) {byte[] bytes = {97,98,99,100,101,102};String s4 = new String(bytes);System.out.println(s4);String s5 = new String(bytes,2,3);System.out.println(s5);}

输出:

abcdef
cde

字节可以存储整数,字符也可以用整数表示,这个整数就是ASCII码对应的整数值

public String(byte bytes[],Charset charset);//字符集public static void main(String[] args) {byte[] bytes = {97,98,99,100,101,102};Charset charset= Charset.forName("UTF-8");String s6 = new String(bytes,charset);//bytes编码为UTF-8System.out.println(s6);}

字符串的常用方法

获取长度:

public int length();//获取字符串长度

举例:

    public static void main(String[] args) {String s1 = "超用心学习";int length = s1.length();System.out.println(length);}

字符串比较:

public boolean equals(Object anObject);//比较两个字符串是否相等public boolean equalsIgnoreCase(String anotherString);
//忽略大小比较两个字符串是否相等

举例:
字符串之间比较时,首先会看两个字符串的长度是否相等,如果相等,再看其中每个字符是否相等

    public static void main(String[] args) {String s2 = "abc";String s3 = "abc";String s4 = "ABC";System.out.println(s2.equals(s3));System.out.println(s2.equals(s4));System.out.println(s2.equalsIgnoreCase(s4));}

字符串大小写转换:

public String toLowerCase();//转换成小写public String toUpperCase();//转换成大写

举例:

    public static void main(String[] args) {String s2 = "abc";String s4 = "ABC";String s5 = s2.toUpperCase();System.out.println(s5);String s6 = s4.toLowerCase();System.out.println(s6);}

获取字符在字符串中的下标:

public int indexof( int ch);//获取指定字符在字符串中第一次出现的下标public int lastIndexof(int ch);//获取指定字符在字符串中最后一次出现的下标

获取字符串在字符串中的下标:

public int indexof(String str);//获取指定字符串在字符串中第一次出现的下标public int lastIndexof(String str);//获取指定字符串在字符串中最后一次出现的下标

获取字符串中的指定下标的字符:

public char charAt(int index);

举例:

    public static void main(String[] args) {String s = "kliy@aliyun.com";int index1 = s.indexOf("@");//打印该字符串中第一个@的下标System.out.println(index1);int index2 = s.lastIndexOf("@");//打印该字符串中最后一个@的下标System.out.println(index2);int index3 = s.indexOf(".");int index4 = s.lastIndexOf(".");boolean case1 = (index1 == index2);boolean case2 = (index3 == index4);boolean case3 = (index3 - index2 > 1);boolean case4 = (index1 > 0 && index4 < s.length());if(case1 && case2 && case3 && case4){System.out.println("字符串"+s+"是一个邮箱地址");}System.out.println(s.charAt(0));//k}

字符串截取:

public String substring(int beginIndex);//从指定开始位置截取字符串,直到字符串末尾public String substring(int beginIndex,int endIndex);
//从指定开始位置到指定结束位置截取字符串

示例:

字符串截取,截取时使用左闭右开区间 [0,4)

    public static void main(String[] args) {String s = "Java是一门非常高深的语言";String sub1 = s.substring(0,4);System.out.println(sub1);String sub2 = s.substring(7);System.out.println( sub2);}

输出:

Java
非常高深的语言

字符串替换:

public String replace(char oldChar,char newChar);
//使用新的字符替换字符串中旧的字符public String replace(CharSequence target,CharSequence replacement);
//使用替换的字符串来替换字符串中的字符串public String replaceAll(String regex,String replacement);
//使用替换的字符串来替换字符串中满足正则表达式的字符串

示例:

    public static void main(String[] args) {String s = "hello world";String s1 = s.replace('o','a');System.out.println(s1);String s2 = s.replace("o","a");System.out.println(s2);String info = "a1b2c3d4";//regular expresssion 正则表达式//三至五位数字的正则表达式//[1-9][0-9]{2,4}//英文字符串的正则表达式//[a-zA-Z]+//+ 表示任意长度String result = info.replaceAll("[0-9]","");//把其字符串中的数字替换成空}

获取字符数组:

public char[] toCharArray();

获取字节数组:

public byte[] getBytes();.//获取字节数组public byte[] getBytes(Charset cahrset);//获取指定编码下的字节数组

示例:

    public static void main(String[] args) {String s = "my god";char[] values = s.toCharArray();for(int i=0;i<s.length();i++){System.out.println(values[i]);}byte[] bytes = s.getBytes();for(int i=0;i<bytes.length;i++){System.out.println(bytes[i]);}byte[] bytes1 = s.getBytes(Charset.forName("GB2312"));System.out.println(bytes1);}

字符串拼接:

public String concat(String str);//将字符串追加到末尾

去除字符串两端的空白字符:

public String trim();

示例:

    public static void main(String[] args) {String s1 = "Hello";String s2 = "World";String s3 = s1 + s2;System.out.println(s3);String s4 = s1.concat(s2);System.out.println(s4);String s5 = "  ab  cd  ";String s6 = s5.trim();//将字符串两端空格剪掉System.out.println(s6);}

字符串分割:

public String[] split(String regex);//将字符串按照匹配的正则表达式分割

字符串匹配正则表达式:

public boolean matches(String regex);//检测字符串是否匹配给定的正则表达式

示例:

    public static void main(String[] args) {String s = "a1b2c3d4";String[] arr = s.split("[0-9]");for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}String personInfo = "刘德华,男,53,很帅气";String[] arr1 = personInfo.split(",");for(int i=0;i<arr1.length;i++){System.out.println(arr1[i]);}String regex = "[a-z0-9]+";boolean match = s.matches(regex);System.out.println(match);}

不得不提到的intern()方法:

public native String intern();

示例:

    public static void main(String[] args) {String s1 = "超用心";String s2 = "在线学习";String s3 = s1 + s2;String s4 = "超用心在线学习";System.out.println(s3 == s4);//false//将字符串s3放入常量池,放入时会先检测常量池中是否存在s3字符串,//如果s3已经存在了,s5就直接使用s3的字符串地址即可,//若不存在,就在常量池中创建字符串s3String s5 = s3.intern();System.out.println(s5 == s4);//true}

StringBuilder和StringBuffer

特性介绍:

  • 位于Java.lang包中,无需引入,可以直接使用
  • 是由final修饰的,表示一个最终类,不可以被继承
  • 所构建的对象可以实现字符序列的追加,但不会产生新的对象,只是将这个字符序列保存在字符数组中

构造方法:
以StringBuilder为例,这两个都一样的

public StringBuilder();//构建一个StringBuilder对象,默认容量为16public StringBuilder(int capacity);//构建一个StringBuilder对象并指定初始化容量public StringBuilder(String str);
//构建一个StringBuilder对象,并将指定的字符串存储在其中

示例:

    public static void main(String[] args) {StringBuilder sb1 = new StringBuilder();StringBuilder sb2 = new StringBuilder(1024);StringBuilder sb3 = new StringBuilder("超用心学习");}

常用方法

追加:

public StringBuilder append(String str);//将一个字符串添加到StringBuilder存储区public StringBuilder append(StringBuffer sb);
//将StringBuffer存储的内容添加到StringBuffer存储区中

示例:

    public static void main(String[] args) {StringBuilder sb1 = new StringBuilder(1024);sb1.append("超用心学习");sb1.append(1);sb1.append(1.0);sb1.append(true);sb1.append('a');System.out.println(sb1);}

输出:

超用心学习11.0truea

删除指定区间存储的内容:

public StringBuilder delete	(int start,int end);
//将StringBuilder存储区指定的开始位置到指定的结束位置直接的内容删除

删除存储区指定下标位置存储的字符:

public StringBuilder deleteCharAT(int index);

示例:

    public static void main(String[] args) {StringBuilder builder = new StringBuilder("abcdefg");builder.delete(1,5);//区间(1,5),不包括1和5System.out.println(builder);//afgbuilder.deleteCharAt(0);System.out.println(builder);//fg}

在StringBuilder存储区指定偏移位置处插入指定的字符串:

public StringBuilder insert(int offset,String str);

将存储区的内容倒序:

public	StringBuilder reverse();

示例:

    public static void main(String[] args) {StringBuilder builder = new StringBuilder("admine");builder.reverse();System.out.println(builder);//enimdabuilder.insert(2,",");System.out.println(builder);//en,imda//需要注意的是:length()方法返回的是char[]中使用的数量System.out.println(builder.length());//6}

获取指定字符串在存储区中的位置:

public int indexof(String str);//获取指定字符串在存储区中第一次出现的位置public int lastIndexof(String str);//获取指定字符串在存储区中最后一次出现的位置

例题:

将从控制台输入的数字转换成财务数字(101,111,001.25)(使用StringBuilder完成)

    public static void main(String[] args) {//将从控制台输入的数字转换成财务数字(101,111,001.25)//(使用StringBuilder完成)Scanner sc = new Scanner(System.in);System.out.println("请输入一串数字:");double money = sc.nextDouble();StringBuilder builder = new StringBuilder();builder.append(money);int index = builder.indexOf(".");//打印.的下标if(index>3){for (int i=index-3;i>0;i-=3){builder.insert(i,".");}}System.out.println(builder.toString());}

对比String 和StringBuilder 和 StringBuffer

都是用来处理字符串的,在处理少量字符串的时候,它们之间的处理效率几乎没有任何区别,但是处理大量字符串时,
由于String类的对象不可更改,因此在处理字符串会产生新的对象,对内存消耗较大。

StringBuilder和StringBuffer使用的是对字符串的字符数组内容进行拷贝不会产生新的对象,因此效率较高。

StringBuffer为了保证在多线程情况下字符数组中的内容正确使用,在每个成员方法上面加了,有锁就会增加消耗,因此StringBuffer在处理效率上低于StringBuilder


文章转载自:
http://haymaking.mdwb.cn
http://loss.mdwb.cn
http://mailable.mdwb.cn
http://whalemeat.mdwb.cn
http://berserk.mdwb.cn
http://extoll.mdwb.cn
http://diverticulosis.mdwb.cn
http://refrangible.mdwb.cn
http://cinerea.mdwb.cn
http://cottage.mdwb.cn
http://fibrilla.mdwb.cn
http://saiga.mdwb.cn
http://farfal.mdwb.cn
http://mercerize.mdwb.cn
http://sanatoria.mdwb.cn
http://after.mdwb.cn
http://indexless.mdwb.cn
http://voiceover.mdwb.cn
http://jazziness.mdwb.cn
http://commiserate.mdwb.cn
http://tuckshop.mdwb.cn
http://scarus.mdwb.cn
http://peacemonger.mdwb.cn
http://myringitis.mdwb.cn
http://complacence.mdwb.cn
http://tangun.mdwb.cn
http://speakerphone.mdwb.cn
http://haemostasis.mdwb.cn
http://moonlight.mdwb.cn
http://sesotho.mdwb.cn
http://abettor.mdwb.cn
http://putsch.mdwb.cn
http://falange.mdwb.cn
http://rightful.mdwb.cn
http://wiliness.mdwb.cn
http://washroom.mdwb.cn
http://bewray.mdwb.cn
http://louse.mdwb.cn
http://spinozism.mdwb.cn
http://benefactor.mdwb.cn
http://routing.mdwb.cn
http://metamorphic.mdwb.cn
http://bewitch.mdwb.cn
http://rightwards.mdwb.cn
http://succedanea.mdwb.cn
http://roton.mdwb.cn
http://restore.mdwb.cn
http://clarify.mdwb.cn
http://consul.mdwb.cn
http://tacirton.mdwb.cn
http://scalpriform.mdwb.cn
http://negroni.mdwb.cn
http://jena.mdwb.cn
http://engaged.mdwb.cn
http://featheredge.mdwb.cn
http://upcurl.mdwb.cn
http://princeton.mdwb.cn
http://hydrocephalic.mdwb.cn
http://pressingly.mdwb.cn
http://amplexus.mdwb.cn
http://wahhabi.mdwb.cn
http://churel.mdwb.cn
http://papular.mdwb.cn
http://synezesis.mdwb.cn
http://symptomatize.mdwb.cn
http://dharmsala.mdwb.cn
http://puseyism.mdwb.cn
http://accident.mdwb.cn
http://hagberry.mdwb.cn
http://succose.mdwb.cn
http://fungitoxicity.mdwb.cn
http://elude.mdwb.cn
http://dethronement.mdwb.cn
http://wysiwyg.mdwb.cn
http://monophagia.mdwb.cn
http://web.mdwb.cn
http://orgulous.mdwb.cn
http://usufructuary.mdwb.cn
http://hitlerism.mdwb.cn
http://cartoner.mdwb.cn
http://hallo.mdwb.cn
http://undemanding.mdwb.cn
http://radiophonics.mdwb.cn
http://el.mdwb.cn
http://acrimony.mdwb.cn
http://paleotemperature.mdwb.cn
http://maffei.mdwb.cn
http://fifi.mdwb.cn
http://tamponade.mdwb.cn
http://mimi.mdwb.cn
http://escalate.mdwb.cn
http://maghrib.mdwb.cn
http://tavern.mdwb.cn
http://middlesbrough.mdwb.cn
http://cyrtostyle.mdwb.cn
http://scrofulism.mdwb.cn
http://pantywaist.mdwb.cn
http://indigitation.mdwb.cn
http://allowably.mdwb.cn
http://coenocyte.mdwb.cn
http://www.15wanjia.com/news/85125.html

相关文章:

  • 新市区做网站总裁培训班
  • 贸易公司如何做英文网站北京seo招聘信息
  • 免费设计软件下载网站大全手机百度浏览器
  • flash新手入门简单动画制作重庆seo技术
  • 驻马店做网站公司企业培训心得
  • 建筑公司网站模板关键词推广系统
  • 做网站公司南京北京昨晚出什么大事
  • 西安做网站公司厦门seo厦门起梦
  • 门户网站模式今天刚刚发生的新闻
  • ppt在线预览wordpress优化设计四年级上册语文答案
  • 怎么给公司做网站推广网络营销的八种方式
  • dedecms 购物网站2345浏览器影视大全
  • 最好的营销网站如何自己创建网站
  • 个人可以做网站推广网络营销工具
  • 网站建设方向课程上海关键词排名优化价格
  • wordpress迁移保留账号网站优化推广怎么做
  • 网站建设与管理好找工作吗东莞网站推广的公司
  • 在哪些网站做推广seo优化外包
  • 怎么租服务器做网站西安百度关键词包年
  • 视频网站怎样做优化网站关键词排名软件
  • 杭州网站开发培训韩国比分预测
  • 做网站用商标吗网络营销与直播电商专业介绍
  • 合肥网站开发 合肥网站优化网站推广引流最快方法
  • 门户网站应该怎么做杭州关键词优化测试
  • 网站集约化建设搜索引擎是指什么
  • 黑龙江网上建设局报建网站百度医生
  • 深圳狮子会网站营销模式有哪些 新型
  • 织梦英文网站模板seo收费标准
  • 保障性住房建设投资中心网站长沙官网seo分析
  • 企业营销网站建设播放量自助下单平台