好程序员Java学习路线分享Java基础之string

好程序员Java培训

先来讲一下字符串

字串符分类:

不可变字符串:----String.字符串本身不能发生改变,与指向字符串的引用无关.

String s1 = "1000phone";

可变字符串:----StringBuilder/StringBuffer.字符串本身可以发生变化,与指向可变字符串的引用无关

StringBuffer sBuffer = new StringBuffer("1000phone");

不可变字符串本身是一个常量,保存在常量区,是存储在了堆区中一块儿特殊的区域里。

**字符串常量的特点:**同一个字符串常量在常量区只允许存储一个。

String s = "1000phone";//不可变字符串

* 当执行s的时候,会到常量区找叫1000phone的字符串,如果有直接让s保存他的地址,如果没有,会在常量区开辟一块儿空间存1000phone.

String s3 = new String("1000phone");

* 执行s3时,由于进行了new,一定会现在堆中开辟一块儿空间,而1000phone是作为参数传给了对象.保存在了对象的一个String

**使用equals进行String的比较**

**2.转换:**

将字符数组转换成字符串

char[] arr = {'p','h','o','n','e'};

String string1 = new String(arr); //string1 = phone

将字符串转换成字符数组

char[] arr1 = string.toCharArray();

System.out.println(arr1);

将字节数组转成字符串

//String(byte[] bytes)

//String(byte[] bytes, int offset, int length)

//String(byte[] bytes, String charsetName)//使用指定的编码将字节数组转换成字符成

byte[] bytes = {97,98,99,100};

String string3 = new String(bytes);

System.out.println(string3); //abcd

将字符串转成字节数组

//byte[] getBytes()

byte[] bytes1 = string3.getBytes();

将基本数据类型转换成字符串

//String.valueOf()

String string4 = String.valueOf(true);

System.out.println(string4);//true

子串:

//包含起始位置,不包含结束位置,到结束位置的前一位

String substring(int beginIndex, int endIndex);

大小写转换

String toLowerCase(); // 转成小写

String toUpperCase(); // 转成大写

按字典顺序比较两个字符串

* 字典顺序:按照ASCII表比较当前的两个字符,ASCII码大的认为是大的字符

* 规则:从左边第一个字符开始比较

* 如果当前的字符不相同,直接认为ASCII大的字符串是大字符串,后面的字符停止比较

* 当前字符比较的具体规则:使用前面的字符-后面的字符,返回差值.如果是负数,说明前面的字符串小于后面的.反之前面的大.

* 如果当前的字符相同,再去比较第二个字符,依次往后推,如果比到最后都相同,则认为两个字符串相等,差值返回0.

"1000PHone".compareTo("1000PHone");//0

"1000AHone".compareTo("1000BHone");//-1

"100000".compareTo("100");//-3

**可变字符串:**

* 字符串缓冲区.StringBuffer/StringBuilder

* 区别:

* StringBuffer:出现在jdk1.0,是线程安全的,考虑了线程安全问题

* StringBuilder:出现在jdk1.5,是线程不安全的,没有考虑线程安全问题

*

* 注意:在不考虑线程安全问题时,尽量使用StringBuilder,因为速度快,效率高

使用:

StringBuffer sBuffer = new StringBuffer();

//1.存储:

//StringBuffer append(boolean b) 从最后插入

sBuffer.append("abcd"); //abcd

//StringBuffer insert(int offset, boolean b) 从指定位置插入

sBuffer.insert(4, 123);

System.out.println(sBuffer);//abcd123

//2.删除:

//StringBuffer delete(int start, int end) 删除一部分字符串

//StringBuffer deleteCharAt(int index) 删除一个字符

System.out.println(sBuffer.deleteCharAt(4));//abcd23

System.out.println(sBuffer.delete(2,4)); //ab23

//3.修改:

//StringBuffer replace(int start, int end, String str) 替换指定的子字符串

//void setCharAt(int index, char ch) 修改一个字符

sBuffer.replace(1, 3, "ab") ; //aab3

//4.获取:

//char charAt(int index)

System.out.println(sBuffer.charAt(0)); //a

//返回指定子字符串的下标 从左到右

//int indexOf(String str)

System.out.println(sBuffer.indexOf("ab"));//1

//返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

System.out.println(sBuffer.indexOf("ab

bytes数组转string指定编码_好程序员Java学习路线分享Java基础之string相关推荐

  1. system.img解包打包工具_好程序员云计算学习路线分享文件打包及压缩

    好程序员云计算学习路线分享文件打包及压缩 好程序员 建议针对目录 Demo: 复制未打包的文件到远程主机 [root@yangs ~]# du -sh /etc 39M /etc [root@yang ...

  2. mount: 未知的文件系统类型“vboxsf”_好程序员云计算学习路线教程大纲课件:Mount 挂载详解...

    好程序员云计算学习路线教程大纲课件:Mount 挂载详解: ====================================================================== ...

  3. yii2数组转为对象_好程序员Java学习路线分享java为什么不支持泛型数组

    本篇文章好程序员为大家一下java为什么不支持泛型数组,希望对大家有所帮助. public class Pair { public void info( ) { System.out.println( ...

  4. java 中文乱码_好程序员Java学习路线分享如何处理中文参数

    好程序员Java学习路线分享如何处理中文参数,为什么表单中会产生中文乱码. 好程序员Java培训 产生乱码,就是因为服务器和客户端沟通的编码不一致造成的,因此解决的办法是:在客户端和服务器之间设置一个 ...

  5. 正则至少一个数字_好程序员web前端培训分享JavaScript学习笔记之正则

    好程序员web前端培训分享JavaScript学习笔记之正则,正则表达式,又名 "规则表达式" 由我们自己来书写 "规则",专门用来检测 字符串 是否符合 &q ...

  6. java喷泉编码_好程序员Java教程分享使用JS实现简单喷泉效果

    原标题:好程序员Java教程分享使用JS实现简单喷泉效果 好程序员Java教程分享使用JS实现简单喷泉效果,最近,在教学生使用JS的基本操作,为了练习JS的基本作用,特地写了一个喷泉效果,代码如下: ...

  7. tomcat如何部署.net程序_.NET 程序员如何学习Vue

    之所以取这个标题,是因为本文来自内部培训的整理,培训的对象是公司的 .NET 程序员,.NET 程序员学习 Vue 是为了在项目中做二次开发时能够更好地跟产品对接. Vue 是现在比较流行的前端框架, ...

  8. bytes数组转string指定编码_一篇文章弄懂Python中所有数组数据类型

    前言 数组类型是各种编程语言中基本的数组结构了,本文来盘点下Python中各种"数组"类型的实现. list tuple array.array str bytes bytearr ...

  9. java 二维数组内存溢出_程序员:学习心得,Java内存区域,内存溢出异常

    Java 内存区域 Heap 线程公有 存放实例对象 是GC主要管理区域,因此可以更细致的划分为:新生代.老年代 再细致一点划分:Eden区.From Survivor区.To Survivor区 内 ...

最新文章

  1. 在MasterPage下FindControl的使用方法
  2. python中可以用中文作为变量-python里能不能用中文
  3. JCO连接SAP例子
  4. 在div中显示html_HTML基础知识之DIV
  5. mysql主从数据库验证_数据库主从一致性验证
  6. 2017电大c语言考试时间,2017年电大 《c语言程序设计》a课程考核说明.doc
  7. 好的飞鸽传书2007未必是“语言律师”
  8. STL : List使用时应注意的问题
  9. python-Python教程
  10. .NET日志工具介绍
  11. loadrunner ftp linux,loadrunner ftp协议使用详细步骤
  12. 关于美颜滤镜您了解多少?
  13. java实现类的封装(物体实现椭圆运动)
  14. Linux 命令(2)—— C++filt 命令
  15. Ax=b解,向量空间的基、维度(Part IV)
  16. QPSK数字调制系统在AWGN信道下的BER仿真
  17. c语言统计大小写字母 空格 和数字个数,C++统计中英文大小写字母、数字、空格及其他字符个数的方法...
  18. 听精品教学展示课后感
  19. 理解inux 下 intel处理器睿频
  20. C# 终本案件、综合执行人、裁判文书爬虫

热门文章

  1. 【Java】hashCode和identityHashCode的区别
  2. 【Kafka】Kafka The valid options based on currently configured listeners are PLAINTEXT,SSL
  3. Docker : Error response from daemon: Get https://docker.elastic.co/v2/: net/http: TLS handshake time
  4. 【Kafka】[Group Metadata Manager on Broker xx]: Removed 0 expired offsets in kafka.coordinator.GroupMe
  5. 20-190-090-安装-Flink集群安装 flink-1.9.0
  6. maven如何直接手动下载jar包
  7. 递归算法的总结与应用
  8. 推荐一个 Java 接口快速开发框架,超级nice!
  9. Spring AOP中的前置通知和后置通知详解
  10. 博弈论(2)DP/记忆化搜索