一、构造器

  1. package com.string;
  2.  
  3. import java.io.UnsupportedEncodingException;
  4. import java.nio.charset.Charset;
  5.  
  6. public class StringTest {
  7.  
  8. public static void main(String[] args) {
  9.  
  10. /**
  11. * String(byte[] bytes)
  12. * 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
  13. */
  14. byte[] b1 = {'a','b','c','d'};
  15. System.out.println(new String(b1));//abcd
  16.  
  17. /**
  18. * String(byte[] bytes, Charset charset)
  19. * 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。
  20. */
  21. System.out.println(new String(b1, Charset.forName("UTF-8")));//Charset代表的是编码方式
  22.  
  23. /**
  24. * String(byte[] bytes, int offset, int length)
  25. * 通过使用平台的默认字符集解码指定的 byte子数组,构造一个新的 String。
  26. */
  27. System.out.println(new String(b1, 1, 2));//bc 从第2个字符开始依次取两个字符拼接成字符串
  28.  
  29. /**
  30. * String(byte[] bytes, int offset, int length, Charset charset)
  31. * 通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String。
  32. */
  33. System.out.println(new String(b1, 1, 3, Charset.forName("UTF-8")));//bcd
  34.  
  35. /**
  36. * String(byte[] bytes, int offset, int length, String charsetName)
  37. * 通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String。
  38. */
  39. try {
  40. System.out.println(new String(b1, 0, 2, "UTF-8"));//ab
  41. } catch (UnsupportedEncodingException e) {
  42. e.printStackTrace();
  43. }
  44.  
  45. /**
  46. * String(byte[] bytes, String charsetName)
  47. * 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。
  48. */
  49. try {
  50. System.out.println(new String(b1, "UTF-8"));//abcd
  51. } catch (UnsupportedEncodingException e) {
  52. e.printStackTrace();
  53. }
  54.  
  55. /**
  56. * String(char[] value)
  57. * 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
  58. */
  59. System.out.println(new String(b1));//abcd
  60.  
  61. /**
  62. * String(char[] value, int offset, int count)
  63. * 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
  64. */
  65. System.out.println(new String(b1, 2, 2));//cd
  66.  
  67. /**
  68. * String(int[] codePoints, int offset, int count)
  69. * 分配一个新的 String,它包含 Unicode 代码点数组参数一个子数组的字符。
  70. */
  71. int[] b2 = {65,66,67,68,97,97};
  72. System.out.println(new String(b2, 1, 3));//BCD 将Unicode码转为对应字符
  73.  
  74. /**
  75. * String(String original)
  76. * 初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。
  77. */
  78. System.out.println(new String("abcd"));//abcd 与new String()在内存分配上存在差异
  79.  
  80. /**
  81. * String(StringBuffer buffer)
  82. * 分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列
  83. */
  84. StringBuffer b3 = new StringBuffer("abcd");
  85. System.out.println(new String(b3));//abcd
  86.  
  87. /**
  88. * String(StringBuilder builder)
  89. * 分配一个新的字符串,它包含字符串生成器参数中当前包含的字符序列。
  90. */
  91. StringBuilder b4 = new StringBuilder("abcd");
  92. System.out.println(new String(b4));//abcd
  93. }
  94.  
  95. }

二、方法

  1. package com.string;
  2.  
  3. import java.nio.charset.Charset;
  4. import java.util.Locale;
  5.  
  6. public class StringMethodTest {
  7.  
  8. public static void main(String[] args) {
  9. String s = "ebcd";
  10.  
  11. /**
  12. * charAt(int index)
  13. * 返回指定索引处的 char 值。
  14. */
  15. System.out.println(s.charAt(0));//e
  16.  
  17. /**
  18. * codePointAt(int index)
  19. * 返回指定索引处的字符(Unicode 代码点)。
  20. */
  21. System.out.println(s.codePointAt(1));//
  22.  
  23. /**
  24. * codePointBefore(int index)
  25. * 返回指定索引之前的字符(Unicode 代码点)。
  26. */
  27. System.out.println(s.codePointBefore(1));//
  28.  
  29. /**
  30. * codePointCount(int beginIndex, int endIndex)
  31. * 返回此 String 的指定文本范围中的 Unicode 代码点数。
  32. *
  33. * 码点,我译为“码位值”。每个码位值实际上代表一个真正unicode字符。即unicode字符集上的码位值。
  34. *为什么要这些码位相关的方法?源自1个java的char字符并不完全等于一个unicode的字符。
  35. *char采用UCS-2编码是一种淘汰的UTF-16编码,最多65536种形态,也远少于当今unicode拥有11万字符的需求。
  36. *java只好对后来新增的unicode字符用2个char拼出1个unicode字符。导致String中char的数量不等于unicode字符的数量
  37. */
  38. System.out.println(s.codePointCount(0, 2));//
  39.  
  40. /**
  41. * compareTo(String anotherString)
  42. * 按字典顺序比较两个字符串。
  43. */
  44. String s1 = "abcd";
  45. System.out.println(s.compareTo(s1));//
  46.  
  47. /**
  48. * compareToIgnoreCase(String str)
  49. * 按字典顺序比较两个字符串,不考虑大小写。
  50. */
  51. System.out.println(s.compareToIgnoreCase(s1));//
  52.  
  53. /**
  54. * concat(String str)
  55. * 将指定字符串连接到此字符串的结尾。
  56. */
  57. System.out.println(s.concat(s1));//ebcdabcd
  58.  
  59. /**
  60. * contains(CharSequence s)
  61. * 当且仅当此字符串包含指定的 char 值序列时,返回 true。
  62. */
  63. System.out.println(s.contains("b"));//true
  64.  
  65. /**
  66. * contentEquals(CharSequence cs)
  67. * 将此字符串与指定的 CharSequence 比较。
  68. *
  69. * CharSequence类型
  70. *这是一个接口,代表的是一个有序字符集合,这个接口包含的方法有:charAt(int index),
  71. *toString(),length(),subSequence(int start,int end).
  72. */
  73. System.out.println(s.contentEquals("ebcd"));
  74.  
  75. /**
  76. * contentEquals(StringBuffer sb)
  77. *将此字符串与指定的 StringBuffer 比较。
  78. */
  79. System.out.println(s.contentEquals(new StringBuffer("ebcd")));//true
  80.  
  81. /**
  82. * copyValueOf(char[] data)
  83. *返回指定数组中表示该字符序列的 String。
  84. */
  85. char[] c = {'a','b','c','d'};
  86. System.out.println(String.copyValueOf(c));//abcd
  87.  
  88. /**
  89. * copyValueOf(char[] data, int offset, int count)
  90. *返回指定数组中表示该字符序列的 String。
  91. */
  92. System.out.println(String.copyValueOf(c, 1, 2));//bc
  93.  
  94. /**
  95. * endsWith(String suffix)
  96. *测试此字符串是否以指定的后缀结束。
  97. */
  98. System.out.println(s.endsWith("d"));//true
  99.  
  100. /**
  101. * equals(Object anObject)
  102. *将此字符串与指定的对象比较。
  103. */
  104. System.out.println(s.equals(s1));//false
  105.  
  106. /**
  107. * equalsIgnoreCase(String anotherString)
  108. *将此 String 与另一个 String 比较,不考虑大小写。
  109. */
  110. System.out.println(s.equalsIgnoreCase("Ebcd"));//true
  111.  
  112. /**
  113. * format(Locale l, String format, Object... args)
  114. *使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
  115. */
  116. System.out.format(Locale.CHINA, "%10.2f", Math.PI);//3.14
  117.  
  118. /**
  119. * format(String format, Object... args)
  120. * 使用指定的格式字符串和参数返回一个格式化字符串。
  121. */
  122. System.out.format("%10.2f", Math.PI);//3.14
  123.  
  124. /**
  125. * getBytes()
  126. *使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
  127. */
  128. byte[] by = s.getBytes();
  129.  
  130. /**
  131. * getBytes()
  132. * 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
  133. */
  134. byte[] by1 = "abcd".getBytes(Charset.forName("UTF-8"));//97 98 99 100
  135. for(int i = 0; i < by1.length; i++){
  136. System.out.println(by1[i]);
  137. }
  138.  
  139. /**
  140. * indexOf(int ch)
  141. *返回指定字符在此字符串中第一次出现处的索引。
  142. */
  143. System.out.println(s.indexOf(98));//1 不存在返回-1
  144.  
  145. /**
  146. * indexOf(int ch, int fromIndex)
  147. *返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
  148. */
  149. System.out.println(s.indexOf(98, 0));//1 不存在返回-1
  150.  
  151. /**
  152. * indexOf(String str)
  153. * 返回指定子字符串在此字符串中第一次出现处的索引。
  154. */
  155. System.out.println(s.indexOf("bc"));//1 不存在返回-1
  156.  
  157. /**
  158. * intern()
  159. * 返回字符串对象的规范化表示形式。
  160. */
  161. System.out.println(s.intern());//ebcd
  162.  
  163. System.out.println(s.isEmpty());//false 空字符串返回true
  164.  
  165. /**
  166. * lastIndexOf(int ch)
  167. *返回指定字符在此字符串中最后一次出现处的索引。
  168. */
  169. System.out.println(s.lastIndexOf(98));//
  170.  
  171. /**
  172. * lastIndexOf(String str)
  173. * 返回指定子字符串在此字符串中最右边出现处的索引。
  174. */
  175. System.out.println(s.lastIndexOf("cd"));//
  176.  
  177. System.out.println(s.length());
  178.  
  179. /**
  180. * trim()
  181. *返回字符串的副本,忽略前导空白和尾部空白。
  182. */
  183. System.out.println(" ab cd ".trim());//ab cd
  184.  
  185. /**
  186. * toCharArray()
  187. * 将此字符串转换为一个新的字符数组。
  188. */
  189. System.out.println(s.toCharArray());//ebcd
  190.  
  191. /**
  192. * startsWith(String prefix)
  193. *测试此字符串是否以指定的前缀开始。
  194. */
  195. System.out.println(s.startsWith("e"));//true
  196.  
  197. /**
  198. * startsWith(String prefix, int toffset)
  199. *测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
  200. */
  201.  
  202. /**
  203. * matches(String regex)
  204. *告知此字符串是否匹配给定的正则表达式。
  205. */
  206.  
  207. /**
  208. * replace(char oldChar, char newChar)
  209. *返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的
  210. */
  211. System.out.println(s.replace('b', 'f'));//efcd
  212.  
  213. /**
  214. * replaceAll(String regex, String replacement)
  215. * 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
  216. */
  217.  
  218. }
  219.  
  220. }

java之String的更多相关文章

  1. java.lang.String.getBytes(String charsetName)方法实例

    java.lang.String.getBytes(String charsetName) 方法编码将此String使用指定的字符集的字节序列,并将结果存储到一个新的字节数组. 声明 以下是java. ...

  2. OC与c混编实现Java的String的hashcode()函数

    首先,我不愿意大家需要用到这篇文章里的代码,因为基本上你就是被坑了. 起因:我被Java后台人员坑了一把,他们要对请求的参数增加一个额外的字段,字段的用途是来校验其余的参数是否再传递过程中被篡改或因为 ...

  3. java 创建string对象机制 字符串缓冲池 字符串拼接机制

    对于创建String对象的机制,在这一过程中涉及的东西还是值得探究一番的. 首先看通过new String对象和直接赋值的方式有什么区别,看如下代码: public static void main( ...

  4. hibernate报错Unknown integral data type for ids : java.lang.String

    package com.model; // Generated 2016-10-27 14:02:17 by Hibernate Tools 4.3.1.Final /** * CmDept gene ...

  5. 前台传参数时间类型不匹配:type 'java.lang.String' to required type 'java.util.Date' for property 'createDate'

    springMVC action接收参数: org.springframework.validation.BindException: org.springframework.validation.B ...

  6. 记录maven java.lang.String cannot be cast to XX error

    在项目开发中自定义了一个maven plugin,在本地能够很好的工作,但是在ci server上却无法正常工作报错为: --------------------------------------- ...

  7. java中string内存的相关知识点

    (一):区别java内存中堆和栈: 1.栈:数据可以共享,存放基本数据类型和对象的引用,其中对象存放在堆中,对象的引用存放在栈中: 当在一段代码块定义一个变量时,就在栈中 为这个变量分配内存空间,当该 ...

  8. java中String的相等比较

    首先贴出测试用例: package test; import org.junit.Test; /** * Created by Administrator on 2015/9/16. * */ pub ...

  9. javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String

    javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String javax.el.Bean ...

  10. Android java传递string类型数据给C

    本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...

随机推荐

  1. 屠蛟之路_重登数据库大山_SecondDay

    重登数据库大山 屠蛟少年们痛定思痛,(2.0正式改名,咳咳),整顿之后,开启新的屠蛟之路. 然而现实摆在他们面前的是,如果想要往东追击beta怪蛟,就要重新攀登上绵亘数千里.有万丈高的数据库大山脉.不 ...

  2. runtime笔记一

    一.iOS中_cmd The _cmd variable is a hidden argument passed to every method that is the current selecto ...

  3. js003-基本概念

    js003-基本概念 3.1 语法 3.1.1 区分大小写 ECMAScript中的一切(变量.函数名和操作符)都是区分大小写的,并且不能用关键字作为函数名:如 typeof. 3.1.2 标识符 所 ...

  4. javascript之查找数组中最小/最大的数

    实现原理:和数组的顺序查找很类似,都是逐个数据的比对. 废话不多说~ 代码如下: /* * 参数说明: * array:传入数组 ,例如:var arr = [5,7,66,78,99,103,126 ...

  5. 10月14日下午MySQL数据库基础

    数据库基础 类型: 1.varchar:字符串,用于姓名班级,地址等,地址一般长50,姓名长20 2.int:整数,用于成绩,序号等 3.float:小数 4.bit:布尔型,用于性别等 5.时间也用 ...

  6. 9月22日上午JavaScript----window对象

    window对象 window属性: opener:打开当前窗口的源窗口,如果这个窗口是由别的网页点击链接跳转过来的,或者是从另外一个页面点击打开窗口打开的,opener就是找到源页面的.如果当前窗口 ...

  7. (转)Rest介绍

    参考文献:Rest简介 REST是一种组织Web服务的架构,其只在架构方面提出了一系列约束. 关于Restful的无状态 所以在stackoverflow中,我们常常会看到有人问:我现在使用了这样一种 ...

  8. -- c语言数据类型总结 --

    C语言中的数据类型总结

  9. Robot Framework--05 案例设计之流程与数据分离

    转自:http://blog.csdn.net/tulituqi/article/details/7651049 这一讲主要说一下案例设计了.还记得我们前面做的case么?先打开浏览器访问百度,输入关 ...

  10. ApiHelper

    public static class ApiHelper { public static ReslultInfo<K> Try<K>(Action<ReslultInf ...