java之String
一、构造器
- package com.string;
- import java.io.UnsupportedEncodingException;
- import java.nio.charset.Charset;
- public class StringTest {
- public static void main(String[] args) {
- /**
- * String(byte[] bytes)
- * 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。
- */
- byte[] b1 = {'a','b','c','d'};
- System.out.println(new String(b1));//abcd
- /**
- * String(byte[] bytes, Charset charset)
- * 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。
- */
- System.out.println(new String(b1, Charset.forName("UTF-8")));//Charset代表的是编码方式
- /**
- * String(byte[] bytes, int offset, int length)
- * 通过使用平台的默认字符集解码指定的 byte子数组,构造一个新的 String。
- */
- System.out.println(new String(b1, 1, 2));//bc 从第2个字符开始依次取两个字符拼接成字符串
- /**
- * String(byte[] bytes, int offset, int length, Charset charset)
- * 通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String。
- */
- System.out.println(new String(b1, 1, 3, Charset.forName("UTF-8")));//bcd
- /**
- * String(byte[] bytes, int offset, int length, String charsetName)
- * 通过使用指定的字符集解码指定的 byte 子数组,构造一个新的 String。
- */
- try {
- System.out.println(new String(b1, 0, 2, "UTF-8"));//ab
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- /**
- * String(byte[] bytes, String charsetName)
- * 通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。
- */
- try {
- System.out.println(new String(b1, "UTF-8"));//abcd
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- /**
- * String(char[] value)
- * 分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。
- */
- System.out.println(new String(b1));//abcd
- /**
- * String(char[] value, int offset, int count)
- * 分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
- */
- System.out.println(new String(b1, 2, 2));//cd
- /**
- * String(int[] codePoints, int offset, int count)
- * 分配一个新的 String,它包含 Unicode 代码点数组参数一个子数组的字符。
- */
- int[] b2 = {65,66,67,68,97,97};
- System.out.println(new String(b2, 1, 3));//BCD 将Unicode码转为对应字符
- /**
- * String(String original)
- * 初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。
- */
- System.out.println(new String("abcd"));//abcd 与new String()在内存分配上存在差异
- /**
- * String(StringBuffer buffer)
- * 分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列
- */
- StringBuffer b3 = new StringBuffer("abcd");
- System.out.println(new String(b3));//abcd
- /**
- * String(StringBuilder builder)
- * 分配一个新的字符串,它包含字符串生成器参数中当前包含的字符序列。
- */
- StringBuilder b4 = new StringBuilder("abcd");
- System.out.println(new String(b4));//abcd
- }
- }
二、方法
- package com.string;
- import java.nio.charset.Charset;
- import java.util.Locale;
- public class StringMethodTest {
- public static void main(String[] args) {
- String s = "ebcd";
- /**
- * charAt(int index)
- * 返回指定索引处的 char 值。
- */
- System.out.println(s.charAt(0));//e
- /**
- * codePointAt(int index)
- * 返回指定索引处的字符(Unicode 代码点)。
- */
- System.out.println(s.codePointAt(1));//
- /**
- * codePointBefore(int index)
- * 返回指定索引之前的字符(Unicode 代码点)。
- */
- System.out.println(s.codePointBefore(1));//
- /**
- * codePointCount(int beginIndex, int endIndex)
- * 返回此 String 的指定文本范围中的 Unicode 代码点数。
- *
- * 码点,我译为“码位值”。每个码位值实际上代表一个真正unicode字符。即unicode字符集上的码位值。
- *为什么要这些码位相关的方法?源自1个java的char字符并不完全等于一个unicode的字符。
- *char采用UCS-2编码是一种淘汰的UTF-16编码,最多65536种形态,也远少于当今unicode拥有11万字符的需求。
- *java只好对后来新增的unicode字符用2个char拼出1个unicode字符。导致String中char的数量不等于unicode字符的数量
- */
- System.out.println(s.codePointCount(0, 2));//
- /**
- * compareTo(String anotherString)
- * 按字典顺序比较两个字符串。
- */
- String s1 = "abcd";
- System.out.println(s.compareTo(s1));//
- /**
- * compareToIgnoreCase(String str)
- * 按字典顺序比较两个字符串,不考虑大小写。
- */
- System.out.println(s.compareToIgnoreCase(s1));//
- /**
- * concat(String str)
- * 将指定字符串连接到此字符串的结尾。
- */
- System.out.println(s.concat(s1));//ebcdabcd
- /**
- * contains(CharSequence s)
- * 当且仅当此字符串包含指定的 char 值序列时,返回 true。
- */
- System.out.println(s.contains("b"));//true
- /**
- * contentEquals(CharSequence cs)
- * 将此字符串与指定的 CharSequence 比较。
- *
- * CharSequence类型
- *这是一个接口,代表的是一个有序字符集合,这个接口包含的方法有:charAt(int index),
- *toString(),length(),subSequence(int start,int end).
- */
- System.out.println(s.contentEquals("ebcd"));
- /**
- * contentEquals(StringBuffer sb)
- *将此字符串与指定的 StringBuffer 比较。
- */
- System.out.println(s.contentEquals(new StringBuffer("ebcd")));//true
- /**
- * copyValueOf(char[] data)
- *返回指定数组中表示该字符序列的 String。
- */
- char[] c = {'a','b','c','d'};
- System.out.println(String.copyValueOf(c));//abcd
- /**
- * copyValueOf(char[] data, int offset, int count)
- *返回指定数组中表示该字符序列的 String。
- */
- System.out.println(String.copyValueOf(c, 1, 2));//bc
- /**
- * endsWith(String suffix)
- *测试此字符串是否以指定的后缀结束。
- */
- System.out.println(s.endsWith("d"));//true
- /**
- * equals(Object anObject)
- *将此字符串与指定的对象比较。
- */
- System.out.println(s.equals(s1));//false
- /**
- * equalsIgnoreCase(String anotherString)
- *将此 String 与另一个 String 比较,不考虑大小写。
- */
- System.out.println(s.equalsIgnoreCase("Ebcd"));//true
- /**
- * format(Locale l, String format, Object... args)
- *使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
- */
- System.out.format(Locale.CHINA, "%10.2f", Math.PI);//3.14
- /**
- * format(String format, Object... args)
- * 使用指定的格式字符串和参数返回一个格式化字符串。
- */
- System.out.format("%10.2f", Math.PI);//3.14
- /**
- * getBytes()
- *使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
- */
- byte[] by = s.getBytes();
- /**
- * getBytes()
- * 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
- */
- byte[] by1 = "abcd".getBytes(Charset.forName("UTF-8"));//97 98 99 100
- for(int i = 0; i < by1.length; i++){
- System.out.println(by1[i]);
- }
- /**
- * indexOf(int ch)
- *返回指定字符在此字符串中第一次出现处的索引。
- */
- System.out.println(s.indexOf(98));//1 不存在返回-1
- /**
- * indexOf(int ch, int fromIndex)
- *返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
- */
- System.out.println(s.indexOf(98, 0));//1 不存在返回-1
- /**
- * indexOf(String str)
- * 返回指定子字符串在此字符串中第一次出现处的索引。
- */
- System.out.println(s.indexOf("bc"));//1 不存在返回-1
- /**
- * intern()
- * 返回字符串对象的规范化表示形式。
- */
- System.out.println(s.intern());//ebcd
- System.out.println(s.isEmpty());//false 空字符串返回true
- /**
- * lastIndexOf(int ch)
- *返回指定字符在此字符串中最后一次出现处的索引。
- */
- System.out.println(s.lastIndexOf(98));//
- /**
- * lastIndexOf(String str)
- * 返回指定子字符串在此字符串中最右边出现处的索引。
- */
- System.out.println(s.lastIndexOf("cd"));//
- System.out.println(s.length());
- /**
- * trim()
- *返回字符串的副本,忽略前导空白和尾部空白。
- */
- System.out.println(" ab cd ".trim());//ab cd
- /**
- * toCharArray()
- * 将此字符串转换为一个新的字符数组。
- */
- System.out.println(s.toCharArray());//ebcd
- /**
- * startsWith(String prefix)
- *测试此字符串是否以指定的前缀开始。
- */
- System.out.println(s.startsWith("e"));//true
- /**
- * startsWith(String prefix, int toffset)
- *测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
- */
- /**
- * matches(String regex)
- *告知此字符串是否匹配给定的正则表达式。
- */
- /**
- * replace(char oldChar, char newChar)
- *返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的
- */
- System.out.println(s.replace('b', 'f'));//efcd
- /**
- * replaceAll(String regex, String replacement)
- * 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
- */
- }
- }
java之String的更多相关文章
- java.lang.String.getBytes(String charsetName)方法实例
java.lang.String.getBytes(String charsetName) 方法编码将此String使用指定的字符集的字节序列,并将结果存储到一个新的字节数组. 声明 以下是java. ...
- OC与c混编实现Java的String的hashcode()函数
首先,我不愿意大家需要用到这篇文章里的代码,因为基本上你就是被坑了. 起因:我被Java后台人员坑了一把,他们要对请求的参数增加一个额外的字段,字段的用途是来校验其余的参数是否再传递过程中被篡改或因为 ...
- java 创建string对象机制 字符串缓冲池 字符串拼接机制
对于创建String对象的机制,在这一过程中涉及的东西还是值得探究一番的. 首先看通过new String对象和直接赋值的方式有什么区别,看如下代码: public static void main( ...
- 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 ...
- 前台传参数时间类型不匹配:type 'java.lang.String' to required type 'java.util.Date' for property 'createDate'
springMVC action接收参数: org.springframework.validation.BindException: org.springframework.validation.B ...
- 记录maven java.lang.String cannot be cast to XX error
在项目开发中自定义了一个maven plugin,在本地能够很好的工作,但是在ci server上却无法正常工作报错为: --------------------------------------- ...
- java中string内存的相关知识点
(一):区别java内存中堆和栈: 1.栈:数据可以共享,存放基本数据类型和对象的引用,其中对象存放在堆中,对象的引用存放在栈中: 当在一段代码块定义一个变量时,就在栈中 为这个变量分配内存空间,当该 ...
- java中String的相等比较
首先贴出测试用例: package test; import org.junit.Test; /** * Created by Administrator on 2015/9/16. * */ pub ...
- 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 ...
- Android java传递string类型数据给C
本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...
随机推荐
- 屠蛟之路_重登数据库大山_SecondDay
重登数据库大山 屠蛟少年们痛定思痛,(2.0正式改名,咳咳),整顿之后,开启新的屠蛟之路. 然而现实摆在他们面前的是,如果想要往东追击beta怪蛟,就要重新攀登上绵亘数千里.有万丈高的数据库大山脉.不 ...
- runtime笔记一
一.iOS中_cmd The _cmd variable is a hidden argument passed to every method that is the current selecto ...
- js003-基本概念
js003-基本概念 3.1 语法 3.1.1 区分大小写 ECMAScript中的一切(变量.函数名和操作符)都是区分大小写的,并且不能用关键字作为函数名:如 typeof. 3.1.2 标识符 所 ...
- javascript之查找数组中最小/最大的数
实现原理:和数组的顺序查找很类似,都是逐个数据的比对. 废话不多说~ 代码如下: /* * 参数说明: * array:传入数组 ,例如:var arr = [5,7,66,78,99,103,126 ...
- 10月14日下午MySQL数据库基础
数据库基础 类型: 1.varchar:字符串,用于姓名班级,地址等,地址一般长50,姓名长20 2.int:整数,用于成绩,序号等 3.float:小数 4.bit:布尔型,用于性别等 5.时间也用 ...
- 9月22日上午JavaScript----window对象
window对象 window属性: opener:打开当前窗口的源窗口,如果这个窗口是由别的网页点击链接跳转过来的,或者是从另外一个页面点击打开窗口打开的,opener就是找到源页面的.如果当前窗口 ...
- (转)Rest介绍
参考文献:Rest简介 REST是一种组织Web服务的架构,其只在架构方面提出了一系列约束. 关于Restful的无状态 所以在stackoverflow中,我们常常会看到有人问:我现在使用了这样一种 ...
- -- c语言数据类型总结 --
C语言中的数据类型总结
- Robot Framework--05 案例设计之流程与数据分离
转自:http://blog.csdn.net/tulituqi/article/details/7651049 这一讲主要说一下案例设计了.还记得我们前面做的case么?先打开浏览器访问百度,输入关 ...
- ApiHelper
public static class ApiHelper { public static ReslultInfo<K> Try<K>(Action<ReslultInf ...