Java003-String字符串
1.这两种定义有什么区别
/***
* 面试题:这两种定义方式有什么区别?
* 如何证明?
* @param args
*/
public static void main(String[] args) {
String str = "hello";//常量池 String str1 = new String("hello");//在堆里开辟一块新的空间
}
2.String 常用方法
public static void test(){
String str = "Hello World";//常量的特点是定义了,就不会变,除非重新赋值
int len = str.length();//字符串的长度
boolean eq = str.equals("33333");//判断两个字符的值是不是相等
char charStr = str.charAt(2);//将字符串转换为char类型
boolean contains = str.contains("hello");//判断字符串是否包含这个字符串
boolean startWith = str.startsWith("H");//判断字符串是否以这个字符串开始
boolean endWith = str.endsWith("ddd");//判断字符串是否以这个字符串结尾
boolean empty = str.isEmpty();//判断这个字符串是否为空的字符串,是"",不是null
boolean eqIgnore = str.equalsIgnoreCase("HELLO WORLD");//不区分大小写的相等
//rep = Hello java; str = Hello World
//如果没有找到匹配的,则不做替换
String rep = str.replaceAll("World","java");//替换全部的
String rep1 = str.replace("H","e");//替换一个,传值的变量都是char
String rep2 = str.replace("He","eeeee");//替换一个,传值的变量都是char
System.out.println(rep);
System.out.println(str);
System.out.println(rep1);
System.out.println(rep2);
String[] strs = str.split(" ");//分割,分割后是变成数组
String sub = str.substring(1,5);//截取,下标是从0开始,1--是开始下标,5--是截止下标
System.out.println(sub);
String upStr = str.toUpperCase();//转大写
String lowStr = str.toLowerCase();//转小写
}
3.commons-lang3
dependencies {
compile('org.apache.commons:commons-lang3:3.10')
}
小练习
public class Demo6 {
//练习题:给定一个字符串,判断是否是一个回文(即正反都一样)
//abcdefggfedcba
public static void main(String[] args) {
test1();
}
public static void test1(){
String str = "abcdefgfedcba";
String str1 = StringUtils.reverse(str);//将字符串反转
System.out.println("str1 = " + str1);
if (str.equals(str1)){
System.out.println("该字符串时一个回文");
}
}
}
4.StringBuilder和StringBuffer
StringBuffer多了一个synchronized 关键字,线程安全锁
StringBuilder是线程不安全的
StringBuffer是线程安全的
但是一般情况下是在一个方法下使用,使用StringBuilder多点
如果出现多线程调用时,再用StringBuffer
//StringBuilder 的定义
@Override
public StringBuilder append(String str) {
super.append(str);
return this;
}
//StringBuffer的定义
@Override
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);
return this;
}
public static void test1(){
String str = "a,b,c,d,e,f,g";
String[] arr = str.split(",");
String res = "";
//这种情况是在不断的创建对象
for (String key:arr){
res += key + "*";
}
System.out.println("res = " + res);
}
public static void test2(){
String str = "a,b,c,d,e,f,g";
String[] arr = str.split(",");
//StringBuilder相当于一个容器,不断的往容器里加内容
StringBuilder res = new StringBuilder();
for (String key:arr){
res.append(key).append("*");
}
System.out.println("res = " + res);
}
public static void test3(){
String str = "a,b,c,d,e,f,g";
String[] arr = str.split(",");
//StringBuffer多了一个synchronized 关键字,线程安全锁
StringBuffer res = new StringBuffer();
for (String key:arr){
res.append(key).append("*");
}
System.out.println("res = " + res);
}
Java003-String字符串的更多相关文章
- Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0
课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值 String str=& ...
- [CareerCup] 1.3 Permutation String 字符串的排列
1.3 Given two strings, write a method to decide if one is a permutation of the other. 这道题给定我们两个字符串,让 ...
- 03-Java String字符串详解
1.Java字符串String A.实例化String字符串:直接赋值(更合理一些,使用较多).使用关键字new. B.String内容的比较 // TODO Auto-generated metho ...
- C++学习38 string字符串的增删改查
C++ 提供的 string 类包含了若干实用的成员函数,大大方便了字符串的增加.删除.更改.查询等操作. 插入字符串 insert() 函数可以在 string 字符串中指定的位置插入另一个字符串, ...
- C++学习37 string字符串的访问和拼接
访问字符串中的字符 string 字符串也可以像字符串数组一样按照下标来访问其中的每一个字符.string 字符串的起始下标仍是从 0 开始.请看下面的代码: #include <iostrea ...
- java String字符串——进度1
String字符串 在JAVA中提供了多种创建字符串对象的方法,这里介绍最简单的两种, 第一种是直接赋值, 第二种是使用String类的构造方法: 如下所示: Strin ...
- 关于String字符串反转
这是网上看到的一篇java面试题中的问题: 问题是: 如何将一个String字符串反转. String str = "1234567"; int length = str.leng ...
- JavaScript的内置对象(Date日期+string字符串)基础语法总结
1.Date日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 1)定义一个时间对象 : var Udate=new Date(); //注意:使用关键字new,Date()的首 ...
- 【转】String字符串相加的问题
String字符串相加的问题 前几天同事跟我说我之前写的代码中在操作字符串时候,使用字符串相加的方式而不是使用StringBuffer或者StringBuilder导致内存开销很大.这个问题一直在困扰 ...
- 从零开始学习前端JAVASCRIPT — 3、JavaScript基础string字符串介绍
1:字符串 JS中的任何数据类型都可以当作对象来看.所以string既是基本数据类型,又是对象. 2:声明字符串 基本数据类型:var sStr = '字符串'; 对象的方法:var oStr = n ...
随机推荐
- Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
前话 Qt的图形视图框架,最核心的三个类为:QGraphicsScene.QGraphicsItem与QGraphicsView. 基于图形框架的高级白板软件Demo QGraphicsSce ...
- 微信架构 & 支付架构(下)
微信架构 & 支付架构(下) 3. 管理网络请求 首先看看原来 iOS 处理支付网络请求的缺陷: 原来支付的请求,都是通过一个单例网络中心去发起请求,然后收到回包后,通过抛通知,或者调用闭包的 ...
- GPU编程和流式多处理器(四)
GPU编程和流式多处理器(四) 3.2. 单精度(32位) 单精度浮点支持是GPU计算的主力军.GPU已经过优化,可以在此数据类型上原生提供高性能,不仅适用于核心标准IEEE操作(例如加法和乘法),还 ...
- Spring Cloud03: Eureka Client 服务提供者
一.创建一个子工程并引入配置如下: <dependency> <groupId>org.springframework.cloud</groupId> <ar ...
- Java Shutdown Hook 场景使用和源码分析
我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. 背景 ...
- 【dp】动归总结
原标题:[DP专辑]ACM动态规划总结 转载自 http://blog.csdn.net/cc_again?viewmode=list http://blog.csdn.net/cc_again/ar ...
- CMD批处理(4)——批处理循环语句结构
FOR函数,对一组文件批量执行命令,基本模式如下 1.文件搜索 for [/D] [/R [路径]] %%变量 in (集合) do (命令) 2.等差数列 for /L %%变量 in (开始,间隔 ...
- Message、Handler、Message Queue、Looper 之间的关系
单线程模型中Message.Handler.Message Queue.Looper之间的关系 1.Message Message即为消息,可以理解为线程间交流的信息.处理数据后台线程需要更新UI,你 ...
- 基于ABP落地领域驱动设计-05.实体创建和更新最佳实践
目录 系列文章 数据传输对象 输入DTO最佳实践 不要在输入DTO中定义不使用的属性 不要重用输入DTO 输入DTO中验证逻辑 输出DTO最佳实践 对象映射 学习帮助 系列文章 基于ABP落地领域驱动 ...
- excel VBA构造正则函数(单参数)
Function zhengze(Rng As Range) Set regx = CreateObject("vbscript.regexp")With regx .Gl ...