Java学习笔记20(String类应用、StringBuffer类、StringBuilder类)
1.获取指定字符串中大小写和数字的个数:
package demo;
public class StringTest {
public static void main(String[] args) {
getCount("IamHandsome666");
}
public static void getCount(String str) {
int upper = 0;
int lower = 0;
int digit = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= 65 && c <= 90) {
upper++;
} else if (c >= 97 && c <= 122) {
lower++;
} else if (c >= 48 && c <= 57) {
digit++;
}
}
System.out.println(upper);//
System.out.println(lower);//
System.out.println(digit);//
}
}
2.将一个字符串中第一个字母转成大写,其余字母转成小写并打印
package demo;
public class StringTest {
public static void main(String[] args) {
String string = toConvert("iAMhaNdSoMe");
System.out.println(string);
//输出:Iamhandsome
}
public static String toConvert(String str) {
String first = str.substring(0,1);
String after = str.substring(1);
first = first.toUpperCase();
after = after.toLowerCase();
return first+after;
}
}
3.从一个长字符串中找小字符串出现的次数:
package demo;
public class StringTest {
public static void main(String[] args) {
System.out.println(getStringCount("Ilikejava,andjavaisthebest,java", "java"));
}
public static int getStringCount(String str, String key) {
int count = 0;
int index = 0;
while ((index = str.indexOf(key)) != -1) {
count++;
str = str.substring(index+key.length());
}
return count;
}
}
//输出:3
String字符串无法改变,会有一些不便之处
所以介绍一个新类
StringBuffer类,字符串缓冲区
出现目的:为了提高字符串操作效率
内部采用了可变数组的方法,类内部定义了数组,这个数组没有final
数组的默认容量是16
关于它的方法,这里用一个示例来理解:
package demo;
public class StringBufferDemo {
public static void main(String[] args) {
append();
delete();
insert();
replace();
reverse();
toString_();
}
public static void append(){
StringBuffer buffer = new StringBuffer();
buffer.append(6);
buffer.append("hello");
System.out.println(buffer);
//6hello
}
public static void delete(){
StringBuffer buffer = new StringBuffer();
buffer.append("helloIlikeJava");
buffer.delete(1, 2);
buffer.deleteCharAt(8);
System.out.println(buffer);
//hlloIlikJava
}
public static void insert(){
StringBuffer buffer = new StringBuffer();
buffer.append("java");
buffer.insert(1, "Python");
System.out.println(buffer);
//jPythonava
}
public static void replace(){
StringBuffer buffer = new StringBuffer();
buffer.append("abcdefg");
buffer.replace(2, 4, "H");
System.out.println(buffer);
//abHefg
}
public static void reverse(){
StringBuffer buffer = new StringBuffer();
buffer.append("abcdefg");
buffer.reverse();
System.out.println(buffer);
//gfedcba
}
public static void toString_(){
StringBuffer buffer = new StringBuffer();
buffer.append("abcdefg");
String string = buffer.toString();
System.out.println(string);
//输出一个String类型的abcdefg,即字符串
}
}
StringBuffer类实例:
public class StringBufferTest {
public static void main(String[] args) {
int[] arr = {4,1,4,56,7,8,76};
System.out.println(toString(arr));
}
/*
* 目的:
* int[] arr = {34,12,89,68};将一个int[]中元素转成字符串
* 格式 [34,12,89,68]
*/
public static String toString(int[] arr){
//创建字符串缓冲区
StringBuffer buffer = new StringBuffer();
buffer.append("[");
//数组遍历
for(int i = 0 ; i < arr.length;i++){
//判断是不是数组的最后一个元素
if(i == arr.length-1){
buffer.append(arr[i]).append("]");
}else{
buffer.append(arr[i]).append(",");
}
}
return buffer.toString();
}
}
还有一个StringBuilder类,方法和StringBuffer的方法完全相同
区别:
StringBuffer类是一个线程安全的类,StringBuilder类是一个线程不安全的类,不过它更快
线程知识在后边会讲到,
日常开发建议使用StringBuilder类,因为相对速度更快
Java学习笔记20(String类应用、StringBuffer类、StringBuilder类)的更多相关文章
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 3.2常用类(java学习笔记)String与StringBuffer
一.String String又称不可变字符序列. 我们看JDK源码中用于字符存储的数组有final修饰,final修饰变量就代表变量不能改变. 我们可以看API文档中对String的描述. Stri ...
- 【学习笔记】String进阶:StringBuffer类(线程安全)和StringBuilder类
一.除了使用String类存储字符串之外,还可以使用StringBuffer类存储字符串.而且它是比String类更高效的存储字符串的一种引用数据类型. 优点: 对字符串进行连接操作时,使用Strin ...
- Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式
一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...
- Java学习笔记18---final关键字修饰变量、方法及类
英语里final这个单词大家都知道是"最终的"意思,其实还有一个意思是"不可更改的".在Java里,final关键字作"不可更改的"来解释更 ...
- java学习笔记18(基本类型包装类,system类)
基本类型包装类 定义:程序界面用户输入的数据都是以字符串类型存储的,如果需要操作这些字符串进行运算,需要转成基本数据类型,这时就要用到基本类型包装类,例: public class Demo { pu ...
- Thinking in java学习笔记之String的不可变性
为了提高效率,可以使用StringBuffer或StringBuilder 1. 在执行速度方面的比较:StringBuilder > StringBuffer 2. StringBuffer与 ...
- java学习笔记之String类
String类总结 String类概述: java.lang.String 类是字符串操作类 String类的常用构造方法: //1.直接赋值 String str= "hellojava& ...
- java学习笔记5——String类常用方法
1.字符串长度计算: int i = String1.length(); 2.字符串比较:1) equals()和equalsIgnoreCase //比较两个字符串对象的实体是否相同,相同输出tru ...
随机推荐
- J2EE十三个规范小结
J2ee是我们步入java学习的一个開始.它将开启这趟奇幻之旅,Java是一种简单的,跨平台的,面向对象的,分布式的.解释的.健壮的安全的.结构的中立的,可移植的.性能非常优异的多线程的,动态的语言. ...
- "Insufficient RAM for Flash Algorithms"出错原因及解决方式
"Insufficient RAM for Flash Algorithms"错误通常会有一个"cannot load flash programming algorit ...
- response与request回顾学习
一.response response是servlet.service方法的一个参数,它的类型是javax.servlet.http.HttpServletResponse,在客户端每发出一个请求时, ...
- wget 下载百度网盘文件
上传文件到服务器,有许多种方法,罗列一下我用过的 xftps之类的工具 rz tz命令 git 上传到码云 通过wget方式,上传文件到百度网盘,七牛云等只要支持wget方式下载即可 下面介绍一下怎么 ...
- Eclipse Maven构建WebApp项目资源目录显示不全的原因与解决方式
一.问题展示 1.Eclipse在使用Maven构建WebApp项目的时候,首先Maven的安装和配置都没有问题的,但是构建项目之后,Maven项目要求的几个必须要有的资源目录显示不了: 问题如下图: ...
- docker容器自动退出的问题
如果用了一段时间的docker就会发现,我们的容器经常用了一段时间就自动退出了,docker ps已经找不到了,在docker ps -a里面了,然后我们docker start containerI ...
- iOS 让图片变模糊
#import <Accelerate/Accelerate.h> 1.初始化图片 UIImageView *iv = [[UIImageView alloc]initWithFrame: ...
- 探索C++对象模型
只说C++对象模型在内存中如何分配这是不现实的,所以这里选择VS 2013作为调试环境具体探讨object在内存中分配情况.目录给出了具体要探讨的所有模型,正文分标题依次讨论.水平有限,如有错误之处请 ...
- C++ 头文件系列(list)
简介 list实现的实际上是双向链表,所以叫它doubly-linked list也许更好. 因为实现的是双向链表,所以它有两个非常重要的性质: 双向 链表 双向 双向意味着----给定一个元素,我们 ...
- CPU31X-2DP通过DP网络连接远程IO站
一.远程IO站介绍 二.该DP网络系统结构 三.组态DP主站 1.组态机架硬件配置 2.设置profibus属性,主站地址为2,如下图 3.完成主站组态 四.组态远程IO从站ET200M 1.接口模块 ...