1.String

package com.henu;public class Demo05 {public static void main(String[] args) {/** 字符串是常量;它们的值在创建之后不能更改,这是什么意思呢?其实就是说一旦这个字符串确定了,* 那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但str变量中记录的地址值是可以改变的。*//** 首先创建一个String对象s,然后让s的值为“ABCabc”, 然后又让s的值为“123456”。 * 从打印结果可以看出,s的值确实改变了。那么怎么还说String对象是不可变的呢? 其实这里存在一个误区: *s只是一个String对象的引用,并不是对象本身。对象在内存中是一块内存区,成员变量越多,* 这块内存区占的空间越大。引用只是一个4字节的数据,里面存放了它所指向的对象的地址,* 通过这个地址可以访问对象。 也就是说,s只是一个引用,它指向了一个具体的对象,当s=“123456”;*  这句代码执行过之后,又创建了一个新的对象“123456”, 而引用s重新指向了这个心的对象,*  原来的对象“ABCabc”还在内存中存在,并没有改变。*/String str1  = "ABCabc";str1 = "123456";      String s3 = "abc";String s4 = new String("abc");System.out.println(s3==s4);//falseSystem.out.println(s3.equals(s4));//true,/*s3和s4的创建方式有什么不同呢?s3创建,在内存中只有一个对象。这个对象在字符串常量池中s4创建,在内存中有两个对象。一个new的对象在堆中,一个字符串本身对象,在字符串常量池中*/byte[] bys = new byte[]{97,98,99,100};// 创建String对象,把数组元素作为字符串的内容String s5 = new String(bys);//创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数length为要几个元素String s6 = new String(bys, 1, 3); /** String方法查找* */String str2 = "abcde";String s1 = str2.substring(1); //返回一个新字符串,内容为指定位置开始到字符串末尾的所有字符String s2 = str2.substring(2, 4);//返回一个新字符串,内容为指定位置开始到指定位置结束所有字符String str = "StringDemo.java";boolean b1 = str.startsWith("Demo");//判断是否以给定字符串开头boolean b2 = str.startsWith("String");boolean b3 = str.endsWith("java");//判断是否以给定字符串结尾String str3 = "abcde";int index = str3.indexOf("bcd"); //判断是否包含指定字符串,包含则返回第一次出现该字符串的索引,不包含则返回-1boolean b4 = str3.contains("bcd");//判断是否包含指定字符串,包含返回true,不包含返回false/*** 将字符串转化为字符数组,或者字节数组*/String str4 = "abcde";char[] chs = str4.toCharArray();byte[] bytes = str4.getBytes();for(byte b : bytes) {System.out.println(b);}/*** 判断两个字符串中的内容是否相同*/boolean flag = str3.equals(str);/***  判断该字符串的内容是否为空的字符串      isEmpty()获取给定的字符,在该字符串中第一次出现的位置  indexOf(String str)获取该字符串中指定位置上的字符 (返回值String)substring(int beginIndex)  substring(int beginIndex, int endIndex)把该字符串转换成 小写字符串   toLowerCase()把该字符串转换成 大写字符串      toUpperCase()在该字符串中,将给定的旧字符,用新字符替换  replace(char oldChar, char newChar)在该字符串中, 将给定的旧字符串,用新字符串替换replaceAll(String regex, String replacement)replaceFirst(String regex, String replacement)去除字符串两端空格,中间的不会去除,返回一个新字符串 trim()*/String string = str4.substring(str4.indexOf(2));System.out.println(string);}}

1.练习1

package com.henu;
/*** @author limengdong* @date 2019年7月19日* @classroom 208bigdata* @description:获取指定字符串中,大写字母、小写字母、数字的个数。*/
public class Demo06 {public static void main(String[] args) {String str = "AbCDfg3876";char[] cs = str.toCharArray();int bigCount = 0;int smallCount = 0;int numberCount = 0;for(int i = 0; i < cs.length; i++) {if (cs[i] >= 48 && cs[i] <= 57) {numberCount++;}else if (cs[i] >= 65 && cs[i] <= 90) {bigCount++;}else if (cs[i] >= 97 && cs[i] <= 122) {smallCount++;}else {continue;}}System.out.println("大写字母个数为:"+bigCount);System.out.println("小写字母个数为:"+smallCount);System.out.println("数字个数为:"+numberCount);}
}

2.练习2

package com.henu;import java.util.Arrays;/*** @author limengdong* @date 2019年7月19日* @classroom 208bigdata* @description:将字符串中,第一个字母转换成大写,其他字母转换成小写,并打印改变后的字符串*      A = (char)a -32;*/
public class Demo07 {public static void main(String[] args) {//第一种写法/*String str = "abCDfg3876";String str1 = str.toLowerCase();char[] cs = str1.toCharArray();cs[0] = (char) (cs[0] - 32);System.out.println(cs[0]);String str2 = Arrays.toString(cs);System.out.println(str2);*///第二种写法String str = "abCDfg3876";String first = str.substring(0, 1);String end = str.substring(1);String big = first.toUpperCase();String small = end.toLowerCase();String res = big + small;System.out.println(res);}}

3.练习三

package com.henu;
/*** @author limengdong* @date 2019年7月19日* @classroom 208bigdata* @description:查询大字符串中,出现指定小字符串的次数。*     如“hellojava,nihaojava,javazhenbang”中查询出现“java”的次数。*/
public class Demo08 {public static void main(String[] args) {String string = "hellojava,nihaojava,javazhenbang";int count = 0;int index = -1;/*** string.indexOf("java")取出第一个java字符串所在的位置,并赋值index。* !=-1代表在字符串string中存在java字符串,当去过第一个index值后,* 然后substring(index+1),从第一个java后取字符串,然后再做判断。*/while((index = string.indexOf("java")) != -1) {string = string.substring(index+1);count++;}System.out.println(count);}}

2.StringBuffer

package com.henu;
/*** @author limengdong* @date 2019年7月19日* @classroom 208bigdata* @description:StringBuffer的方法使用。*/
public class Demo09 {public static void main(String[] args) {/*** StringBuffer 的方法使用*/StringBuffer sBuffer = new StringBuffer();sBuffer.append("java").append("天下第一");sBuffer.append("php").append("天下无敌");System.out.println(sBuffer);//java天下第一php天下无敌sBuffer.delete(1, 2);System.out.println(sBuffer);//jva天下第一php天下无敌sBuffer.insert(1, "a");System.out.println(sBuffer);//java天下第一php天下无敌sBuffer.replace(0, 5, "python");System.out.println(sBuffer);//python下第一php天下无敌sBuffer.reverse();System.out.println(sBuffer);//敌无下天php一第下nohtypSystem.out.println(sBuffer.toString());//敌无下天php一第下nohtyp/*** StringBuffer类方法查找练习*///substring(int start, int end) 返回一个新的 String ,其中包含此序列中当前包含的字符的子序列。/*  创建一个字符串缓冲区对象。用于存储数据。StringBuffer sb = new StringBuffer();添加数据。不断的添加数据后,要对缓冲区的最后的数据进行操作,必须转成字符串才可以。String str = sb.append(true).append("hehe").toString();*/int[] arr = {34,12,89,68};String str = toString_1(arr);System.out.println(str);                }//练习:int[] arr = {34,12,89,68};将一个int[]中元素转成字符串  格式 [34,12,89,68]public static String toString_1(int[] arr) {StringBuffer stringBuffer = new StringBuffer();stringBuffer.append("[");for(int i = 0; i < arr.length; i++) {if (i != arr.length-1) {stringBuffer.append(arr[i]+",");                    }else {stringBuffer.append(arr[i]+"]");}}return stringBuffer.toString();}}

3.StringBuilder

package com.henu;
/*** @author limengdong* @date 2019年7月19日* @classroom 208bigdata* @description:StringBuilder类*/
public class Demo10 {public static void main(String[] args) {/** 一个可变的字符序列。 此类提供与StringBuffer的API,但不保证同步。*  此类设计用作简易替换为StringBuffer在正在使用由单个线程字符串缓冲区的地方(如通常是这种情况)。*   在可能的情况下,建议使用这个类别优先于StringBuffer ,因为它在大多数实现中将更快。 */}}

java基础----String、StringBuffer、StringBuilder相关推荐

  1. 【翻译】Java中String, StringBuffer, StringBuilder的区别

    2019独角兽企业重金招聘Python工程师标准>>> String 是  Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会 用String定义一些内容,然后通过著 ...

  2. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  3. Java之String,StringBuffer,StringBuilder

    1.String 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序.String 对象创建后则不能被 ...

  4. Java基础-String和StringBuilder类型(11)

    String类概述 字符串是由多个字符组成的一串数据 字符串可以看成是字符数组 构造方法 public String(String original) public String(char[] val ...

  5. 黑马程序员——Java基础---String与StringBuilder

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  6. Java中String,StringBuffer,StringBuilder的区别

    String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 运行速度 StringBuilder > StringBuffe ...

  7. 2.Java中String,StringBuilder以及StringBuffer的关系与区别

    String     StringBuffer     StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...

  8. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  9. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  10. `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`

    Java–String&&StringBuffer&&StringBuilder 文章目录 `Java`--`String`&&`StringBuffe ...

最新文章

  1. 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用
  2. c语言logout_C++ 格式化日志输出实现代码
  3. ECMAScript 对象类型
  4. 【bzoj4994】[Usaco2017 Feb]Why Did the Cow Cross the Road III 树状数组
  5. html本地缓存未查看信息,不同用户看到了相同的信息-一次web系统缓存问题的解决...
  6. 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)
  7. 二叉树类图_数据结构(十四)——二叉树
  8. JSP 页面实现一个计算器功能
  9. C语言从入门到精通保姆级教程(2021版上)
  10. vim文本编辑器的操作和命令(可作手册查询)
  11. Web漏洞之CORS与JSONP跨域漏洞
  12. 网站设计流程分为哪几个步骤
  13. 创业者、如何可以投资小,又可以依附互联网去创业?
  14. 登录页面渗透测试思路与总结
  15. Q:python编码
  16. Windows10下安装vs2013旗舰版(Visual Studio 2013 Ultimate)
  17. Hibernate之QBE--》用语法函数表示sql语句【个人感觉此技术相当之垃圾,反其正道而行】(二十八)
  18. 路缘石成型机使用技术更新后施工效果呈现的过程
  19. 已经拍好的视频怎么加水印?视频加水印方法大分享
  20. macOS 13.0 Cocoapods安装 (you don‘t have write permissions for the /Library/Ruby/Gems/2.6.0 directory)

热门文章

  1. POJ - 3693 Maximum repetition substring(后缀数组+RMQ)
  2. Web开发-Django表单
  3. 差分约束系统之Bellman_Ford与Spfa判断负权回路
  4. 线段树HDU1698(成段更新)
  5. HDU2608 0 or 1
  6. masm中常用的伪指令
  7. TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系
  8. c++中的pod类型
  9. 【送书福利8本】YYDS《剑指Offer》,百万程序员人手一册
  10. 慌了,居然被问到怎么做高并发系统的限流