java学习笔记15(String 类,StringBuffer)
时间:2019-03-19
本文章向大家介绍java学习笔记15(String 类,StringBuffer),主要包括java学习笔记15(String 类,StringBuffer)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
/* * String类的特点: * 所有的""都是String的对象 * 字符串一旦创建就是常量,不能改变 */ public class StringDemo { public static void main(String[] args) { //发现创建对象不需要new String str = "abcd"; System.out.println(str); //输出:abcd而不是内存地址,因为String类重写了toString方法 str = "efgh"; System.out.println(str); //输出:efgh,之前不是说常量不能改变吗?这里的原因: //字符串本身是一个对象,在堆内存中,字符串本质是一个字符的数组 //源码:private final char value[];有final修饰,因此String是常量 //str = "efgh"是在内存中重新开一片,str的指向改变了,而"abcd"字符串对象没有改变 } }
String练习:
//1.统计某字符串中另一字符串出现的次数 public class Demo1 { public static void main(String[] args) { String s=new String("goodgoodstudy,daydayup"); int count=0; JiShuQi(s,"good", count); } private static void JiShuQi(String s,String key, int c) { int x=s.indexOf(key); if (x==-1) { System.out.println(key+"出现的次数为"+c); return; } s=s.substring((x+key.length())); c++; JiShuQi(s, key, c); } }
//将一字符串首字母变成大写,其余字符小写 public class Demo2{ public static void main(String[] args) { String s=new String("ksdhfEGBDebf"); Change(s); } private static void Change(String s) { String head=s.substring(0, 1).toUpperCase(); String sur=s.substring(1).toLowerCase(); String str=new String(head+sur); System.out.println(str); } }
public class Zuoye3 { /* * 获取指定字符串中,大写字母、小写字母、数字的个数。 String s = "asdklf2234jlOLKJ"; 97--122小写 65-90 大写 48-57 0-9 * 思想: * 1. 计数器,就是int变量,满足一个条件 ++ * 2. 遍历字符串, 长度方法length() + charAt() 遍历 * 3. 字符判断是大写,是小写,还是数字 */ public static void main(String[] args) { String s = "asdklf2234jlOLKJ"; int index=0; JiShu(s,index,0,0,0); } private static void JiShu(String s,int index, int Dcount, int Xcount, int Ncount) { char x=s.charAt(index); if (x>=65&x<=90) { Dcount++; }else if(x>=97&x<=122){ Xcount++; }else if(x>=48&x<=57){ Ncount++; } index++; if(index==s.length()){ System.out.println("大写字母:"+Dcount+"个,小写字母:"+Xcount+"个,数字:"+Ncount+"个"); return; } JiShu(s, index, Dcount, Xcount, Ncount); } }
/*StringBuffer 定义:可变字符数组 线程安全的 可变字符序列 StringBuffer与String 的区别:String是一个不可变的字符序列 String一旦创建就是常量 不能改变 StringBuffer的 方法:append(); insert(); delete(); replace(); reverse(); toString(); StringBuffer与StringBuilder的区别:StringBuffer是jdk1.0版,线程安全,效率低, StringBuilder是jdk1.5版,线程不安全,效率高 开发中用StringBuilder,因为开发速度快 */ public class StringBufferDemo { public static void main(String[] args) { StringBuffer str=new StringBuffer(); fun1(str); fun2(str); fun3(str); fun4(str); fun5(str); fun6(str); } private static void fun6(StringBuffer str) { // toString()转字符串; System.out.println("方法6:toString()方法"); System.out.println("原字符串"+str); String s=str.toString();//将StringBuffer转字符串类型 System.out.println("转字符串:"+s); } private static void fun5(StringBuffer str) { // reverse()方法: System.out.println("方法5:reverse()方法"); System.out.println("原字符串"+str); str.reverse(); System.out.println("翻转后字符串:"+str); System.out.println(); } private static void fun4(StringBuffer str) { // replace()方法 //replace(start, end, str);start:要替换字符的开始位置,end:替换的结束位置(不包含结束位置字符),str:替换的字符串 System.out.println("方法4:replace()方法"); System.out.println("原字符串为:"+str); str.replace(1, 3, "-i love java-"); System.out.println("替换后的字符串为:"+str); System.out.println(); } private static void fun3(StringBuffer str) { // delete()方法 //delete(start, end)start:开始下标 end:结束下标()不包含结束下标的字符 System.out.println("方法3:delete()方法"); System.out.println("原字符串:"+str); str.delete(3, 5); System.out.println("删除后字符串:"+str); System.out.println(); } private static void fun2(StringBuffer str) { // insert(插入的位置(下标),插入的字符串)方法 System.out.println("方法2:insert()方法"); System.out.println("源字符串为:"+str); str.insert(3, "java"); System.out.println("插入后字符串为"+str); System.out.println(); } private static void fun1(StringBuffer str) { // append()方法:追加 System.out.println("方法1:append()"); str.append("hello world"); System.out.println("原字符串为空,追加后为:"+str); System.out.println(); } } /*结果: * 方法1:append() 原字符串为空,追加后为:hello world 方法2:insert()方法 源字符串为:hello world 插入后字符串为heljavalo world 方法3:delete()方法 原字符串:heljavalo world 删除后字符串:helvalo world 方法4:replace()方法 原字符串为:helvalo world 替换后的字符串为:h-i love java-valo world 方法5:reverse()方法 原字符串h-i love java-valo world 翻转后字符串:dlrow olav-avaj evol i-h 方法6:toString()方法 原字符串dlrow olav-avaj evol i-h dlrow olav-avaj evol i-h**/
- process information unavailable 的解决办法
- JS魔法堂:再识IE的内存泄露
- 给树莓派安装中文字库
- Hadoop(十七)之MapReduce作业配置与Mapper和Reducer类
- Design Pattern: Observer Pattern
- Hadoop(十六)之使用Combiner优化MapReduce
- ActiveMQ笔记(6):消息延时投递
- CentOS 安装 Maven
- Architecture Pattern: Publish-subscribe Pattern
- OOAD-设计模式(三)之创建型设计模式(5种)
- ActiveMQ笔记(5):JMX监控
- session失效时间设置
- ActiveMQ笔记(4):搭建Broker集群(cluster)
- OOAD-设计模式(二)之GRASP模式与GOF设计模式概述
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- (二) 使用Mybatis完成CRUD操作 - Titan的Mybatis系列学习笔记
- 轻松使用纯css3打造有点意思的故障艺术(附React加强组件版)
- (一)Mybatis的入门 - Titan的Mybatis系列学习笔记
- Hadoop安装与环境配置入门
- Elasticsearch源码解析:环境搭建
- SpringBoot整合JWT认证机制实现接口鉴权
- [Java] Java多线程的探索 -获取新闻标题
- Java中对文件进行MD5加密
- [数据结构] 使用最小堆思想实现哈夫曼编解码
- [数据结构] 括号符的匹配
- [数据结构] 平衡二叉查找树 (AVL树)
- 写给前端的算法进阶指南,我是如何两个月零基础刷200题
- [Java] 在Java中优雅地进行文件IO操作
- [Java] 日期与时间的一些操作
- 一起来用python实现一下十大经典排序算法