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 ...
随机推荐
- Juel 表达式使用
JUEL 包的结构例如以下: 1.1.1. Juel maven仓库配置 眼下最新的版本号是2.2.7.使用的时候在pom.xml中加入仓库坐标就可以. <dependency> < ...
- xml基本语法(2)
本节要点: 了解XML的文档声明 了解XML的元素.命名规则.属性.元素内容.处理指令等概念 1 XML文档声明 表示该文档是一个XML文档,以及遵循哪个XML版本的规范. 规范:<?xml 版 ...
- nginx、fastCGI、php-fpm关系梳理
前言: Linux下搭建nginx+php+memached(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装php-fpm扩展并启动php-fpm守护进程,nginx ...
- maven安装配置及使用maven创建一个web项目
今天开始学习使用maven,现在把学习过程中的资料整理在这边. 第一部分.maven安装和配置. http://jingyan.baidu.com/article/295430f136e8e00c7e ...
- Linux企业运维人员必备150个命令汇总
命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) l ...
- html5笔记——<section> 标签
定义和用法 <section> 标签定义文档中的节(section.区段).比如章节.页眉.页脚或文档中的其他部分. 注意: section 不是一个专用来做容器的标签,如果仅仅是用于设置 ...
- MVC+EF 入门教程(四)
一.前言 写了那么久,那么现在给大家看效果了 二.效果展示 点击创建Blog 显示 编辑 编辑成功,是不是很酷. 删除 终于完成了,准备睡觉!虽然有很多不足的地方,我会慢慢的去改的.感谢累了一天的自己 ...
- iOS设计模式之懒加载
一.为什么要懒加载? 答: iPhone设备内存有限,如果在程序在启动后就一次性加载将来会用到的所有资源,那么久可能会耗尽iOS设备的内存.这些资源例如大量的数据,图片,音频,过多的控件等. 二.懒加 ...
- 使用Node.js搭建一个本地服务器
let http = require('http'); //创建一个http let server = http.createServer((request,response)=>{ //创建一 ...
- 我是这样学习使用google学术的
本科期间一直在cnki上面检索论文,随着科研能力的需要,部分论文在cnki的局限性就体现出来了,我就开始培养自己的文献检索能力.现在的各种开发工具,各种论文检索网站再加上文献检索的形式越来越复杂,我们 ...