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 ...
随机推荐
- 【Hdu3555】 Bomb(数位DP)
Description 题意就是找0到N有多少个数中含有49. \(1\leq N \leq2^{63}-1\) Solution 数位DP,与hdu3652类似 \(F[i][state]\)表示位 ...
- Mysql的安装和图形化界面的使用
访问mysql网址:https://dev.mysql.com/ 下面需要登录你的oracle账号进行下载就好~ 下载之后是一解压包形式存在的~ 解压之后的文件 这里我新建了my.ini的文件~将my ...
- 2016.3.17__CSS3动画__第十一天
CSS3动画 假设您认为这篇文章还不错,能够去H5专题介绍中查看很多其它相关文章. 通过 CSS3,我们能够创建动画,这能够在很多网页中取代动绘图片.Flash 动画以及 JavaScript. 今日 ...
- 关于signal和fork的思考
fork可以在linux中创建子进程.先看man手册里面的东西: SYNOPSIS #include <unistd.h> pid_t fork(void);DES ...
- 自学WPF之Binding(二)
没有Source的Binding,使用ContentText作为Binding源: 上一篇是把CLR类型对象当作指定为Binding的Source,两种方法:一是把对象赋值给Binding.Sourc ...
- MVC(二)
一: 在新接触MVC的时候可以先使用VS建一个MVC项目(不是空项目哟),MVC特别人性化的建一个示例,展示了MVC项目的基本组成.如下: App_Data 数据库文件,需根据数据库变动而变更. Ap ...
- idea历史版本下载
https://confluence.jetbrains.com/display/IntelliJIDEA/Previous+IntelliJ+IDEA+Releases
- iOS 实现后台 播放音乐声音 AVAudioPlayer 以及铃声设置(循环播放震动)
1.步骤一:在Info.plist中,添加"Required background modes"键,value为:App plays audio 或者: 步骤二: - (BOOL) ...
- 使用Python Shapefile Library创建和编辑Shapefile文件
介绍 shapefile是GIS中非常重要的一种数据类型,在ArcGIS中被称为要素类(Feature Classes),主要包括点(point).线(polyline)和多边形(polygon).P ...
- [置顶]
echarts x轴文字显示不全(xAxis文字倾斜比较全面的3种做法值得推荐)
echarts x轴标签文字过多导致显示不全 如图: 解决办法1:xAxis.axisLabel 属性 axisLabel的类型是object ,主要作用是:坐标轴刻度标签的相关设置.(当然yAxis ...