String、StringBuffer 的使用 ,两个面试问题
1》统计不同类型字符个数
public static void main(String[] args) {
//案例:统计不同类型字符个数
String password = "abZZc23&%Asd^4"; //密码:大写,小写,数字,特殊字符 //1.声明变量
int big = 0;//大写
int small = 0;//小写
int num = 0;//数字
int other = 0;//特殊字符 //2.遍历字符串的字符
for(int i=0; i < password.length();i++){
//取字符
char ch = password.charAt(i);
System.out.println(ch); //判断字符是否为大写
if(ch >= 'A' && ch <='Z'){
big ++;
}else if(ch >= 'a' && ch <= 'z'){//判断是否为小写
small ++;
}else if(ch >= '0' && ch <= '9'){//判断是否为数字
//'0' 对应码表的数字是48
//'9' 对应码表的数字是57
num ++;
}else{//特殊字符
other ++;
}
} System.out.println("大写字母出现的次数:" + big);
System.out.println("小写字母出现的次数:" + small);
System.out.println("数字出现的次数:" + num);
System.out.println("特殊字符出现的次数:" + other);
}
2》String类转换功能
byte[] getBytes():把字符串转换为字节数组
char[] toCharArray():把字符串转换为字符数组
static String valueOf(char[] chs):把字符数组转成字符串
static String valueOf(int i):把int类型的数据转成字符串
注意:String类的valueOf方法可以把任意类型的数据转成字符串
String toLowerCase():把字符串转成小写
String toUpperCase():把字符串转成大写
String concat(String str):把字符串拼接,且只能拼接字符串。+方式拼接字符串时,可以是任意类型
3》 案例 将一个字符串的首字母 变成大写,其余的字母小写
/*
* 需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
* 举例:
* helloWORLD
* 结果:
* Helloworld
*
* 分析:
* A:先获取第一个字符
* B:获取除了第一个字符以外的字符
* C:把A转成大写
* D:把B转成小写
* E:C拼接D
*/
public class StringTest { public static void main(String[] args) {
// 定义一个字符串
String s = "helloWORLD"; // 先获取第一个字符
String s1 = s.substring(0, 1);
// 获取除了第一个字符以外的字符
String s2 = s.substring(1);
// 把A转成大写
String s3 = s1.toUpperCase();
// 把B转成小写
String s4 = s2.toLowerCase();
// C拼接D
String s5 = s3.concat(s4);
System.out.println(s5); // 优化后的代码
// 链式编程
String result = s.substring(0, 1).toUpperCase().concat(s.substring(1).toLowerCase());
System.out.println(result); }
}
4》案例:把int[] arr = {1,2,3} 转成字符串 [1,2,3]
思路:字符串拼接 首先 新建一个字符串 然后加上 '[' ,循环便利这个数组,然后拼接 字符串,最后判断是否是最后一个,加上 ‘]’
5》String类的其它功能
public String replace(char oldChar, char newChar)//替换字符
public String replace(CharSequence target, CharSequence replacement) //替换字符串
String trim();//去除前后空格
public int compareTo(String anotherString) //比较
public int compareToIgnoreCase(String str) //比较
例子:
String s1= "abc";
String s2 = "aac"
s1.compareTo(s2):结果+1
6》案例:字符串的反转
String str = "abc";
for(int i = str.length() - 1;i >= 0 ;i--){
System.out.print(str.charAt(i));
}
7》案例:统计大串中小串出现的次数
String str = "helgyfnnnngyfooogyf88";
String name = "gyf";
思路:使用死循环,将匹配道德字符串位置加上匹配子串的长度 ,截取,使用统计变量 统计出现次数
8》StringBuffer的构造方法
>StringBuffer 字符串缓冲区类
>StringBuffer里面的字符序列【char[]】是可以改变的
>String的字符序列是不可以改变
9》StringBuffere的添加方法
>append方法
>insert方法
10》StringBuffer的删除方法
>deleteCharAt(int index) 删除指定索引的字符
>delete(int start,int end): 删除开始到结束位置的字符
11》StringBuffer的反转功能
>reverse()方法,将字符串反转
12》StringBuffer的截取功能
>public String substring(int start): 从指定位置截取到末尾
>public String substring(int start,int end): 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
13》StringBuffer与String的相互转换
String –> StringBuffer
通过构造方法
通过append()方法
StringBuffer -> String
通过构造方法
通过toString()方法
通过subString(star,end);
14》数组转成字符串,使用StringBuffer实现
int[] arr = {1,2,3} -> [1,2,3]
思路:循环便利这个数组,然后使用StringBuffer 的append方法来拼接这个字符串 使用if else 判断添加的位置
15》字符串反转,使用StringBuffere的reverse方法实现
16》两首字符串的面试题:
a>StringBuffer和StringBuilder的区别
StringBuffer是jdk1.0版本的,是线程安全的,效率低,加同步锁
StringBuilder是jdk1.5版本的,是线程不安全的,效率高,没有加锁
b>String 和StringBuffer,StringBuilder的区别
String是一个不可变的字符序列
StringBuffer,StringBuilder是可变的字符序列
String、StringBuffer 的使用 ,两个面试问题的更多相关文章
- [置顶] String StringBuffer StringBuilder的区别剖析
这是一道很常见的面试题目,至少我遇到过String/StringBuffer/StringBuilder的区别:String是不可变的对象(final)类型,每一次对String对象的更改均是生成一个 ...
- String,StringBuffer,StringBuilder的区别及其源码分析
String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结: 1.先来分析一下这三个类之间的关系 乍一看它们都是用于处理字符串的java类,而 ...
- String,StringBuffer,StringBulider
StringBuffer.StringBuilder.String中都实现了CharSequence接口. CharSequence是一个定义字符串操作的接口,它只包括length().charAt( ...
- 关于String StringBuffer StringBuilder
0. String对象的创建 1.关于类对象的创建,很普通的一种方式就是利用构造器,String类也不例外:String s=new String("Hello world&qu ...
- String,StringBuffer和StringBuilder源码解析[基于JDK6]
最近指导几位新人,学习了一下String,StringBuffer和StringBuilder类,从反馈的结果来看,总体感觉学习的深度不够,没有读出东西.其实,JDK的源码是越读越有味的.下面总结一下 ...
- String StringBuffer StringBuilder (转)
转自:http://www.iteye.com/topic/522167 众所周知,String是由字符组成的串,在程序中使用频率很高.Java中的String是一个类,而并非基本数据类型. 不过她却 ...
- String,StringBuffer与StringBuilder差异??
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要地, String 类型和 StringBuffer 类型的主要性能差 ...
- 【Java基础】String StringBuffer StringBuilder
String String是不可变的 我们都知道String不是基本数据类型,而是一个对象,并且是final类型的,不可变的.(public final class String) 查看以下代码: S ...
- ES6学习:两个面试题目--关于模板字符串
号称看完就能“让开发飞起来”,不过文中的两个面试题目的知识点并没包括在文中. https://www.jianshu.com/p/287e0bb867ae 文中并没有完整的知识点去完成上面的两道题,这 ...
随机推荐
- RSA解密解密
#!/usr/bin/env python # -*- coding:utf-8 -*- import rsa import base64 # ######### 1. 生成公钥私钥 ######## ...
- KindEditor echarts
var editor; KindEditor.ready(function (K) { editor = K.create('textarea[name="content"]', ...
- codeforces 979A Pizza, Pizza, Pizza!!!
题意: 对一个圆形的pizza,只能用直线来切它,求把它切为n+1份的形状和size都相同的最下次数. 思路: 形状和size都相同,那么只能是扇形,分奇偶讨论. n为0还得特判,切0刀,因为这个还被 ...
- interface接口——公共规范标准
黑马课程学习记录: 个人理解也可以看成一个类:源代码还是.java,编译后的字节文件还是.class 抽象类中可以含有普通成员方法,但是有抽象方法的必须是抽象类或者接口, 接口中只能含有抽象方法: 创 ...
- Java技术整理1---反射机制及动态代理详解
1.反射是指在程序运行过程中动态获取类的相关信息,包括类是通过哪个加载器进行加载,类的方法和成员变量.构造方法等. 如下示例可以通过三种方法根据类的实例来获取该类的相关信息 public static ...
- 量化交易-外汇交易-MetaTrader5
量化交易-外汇交易-MetaTrader5 外汇有充足的流动性, 7*24, 交易成本低,多空双向,外加杠杆,无人能控盘,有模拟盘,相当适合做量化交易练习积累经验. 第一,全球最大最公平的市场.外汇市 ...
- GUI常用对象介绍2
%示意line对象的用法 hf=figure; hl=plot([:]); %示意line对象的属性 get(hl) %设置line的颜色 set(hl,'Color','r'); %设置每个点形状 ...
- nfs共享文件搭建
Linux NFS服务器的安装与配置详解 一.NFS服务简介 NFS是Network File System(网络文件系统).主要功能是通过网络让不同的服务器之间可以共享文件或者目录.NFS客户端 ...
- fjwc2019 D3T1 签到题 (贪心)
#184. 「2019冬令营提高组」签到题 每次询问接近O(1).......考虑贪心 怎么贪心呢? 对于相邻的两个数,我们要保证异或x后单调不降 我们找到两个数二进制上最高的相异位 当左边的数相异位 ...
- vector at()函数比 []运算符操作安全
转载:https://blog.csdn.net/chenjiayi_yun/article/details/18507659 []操作符的源码 reference operator[](size_t ...