今天做了几道String常见操作。先来几个代码实例:

例一:此方法,仅把字符串前后出现的空格去掉了,中间部分不会。

 class TestTrim {
public static void main(String[] args) {
String str = " 这是一 个要 去 两端 空格 的字符串 "; str = trim(str);
System.out.println("去完空格以后:" + str);
} static String trim(String str) { int beginIndex = 0;
int endIndex = str.length() - 1; while (beginIndex <= endIndex) {
// 从前往后算空格
if (str.charAt(beginIndex) == ' ') {
beginIndex++;
} else {
break;
}
} while (beginIndex <= endIndex) {
// 从后往前算空格
if (str.charAt(endIndex) == ' ') {
endIndex--;
} else {
break;
}
} str = str.substring(beginIndex, endIndex + 1);
return str;
}
}

例二:

 //字符串翻转
public class TestTrim2 {
public static void main(String[] args) {
String str = "请 把我 翻转 过来 "; char[] list = str.toCharArray(); for (int i = 0; i < list.length / 2; i++) {
char temp = ' '; temp = list[i];
list[i] = list[list.length - 1 - i];
list[list.length - 1 - i] = temp;
}
str = new String(list);
System.out.println(str);
}
}

例三:

 //String 常见操作——获取
public class TestTrim3 {
public static void main(String[] args) {
String[] fileList = { "我是中国人", "我热爱我的祖国", "我在自学编程", "我将文件存为.java的形式了",
"我喜欢.java", "java读起来就很好听", "你喜欢java吗?", "和我一起学习.java",
"我通常将文件保存在E盘", "文件的名称为XXXX.java", "字节码文件为XXX.class" }; for (int i = 0; i < fileList.length; i++) {
if (fileList[i].startsWith("我") && fileList[i].endsWith(".java")
&& fileList[i].contains("中国"))
;
System.out.println("发现:" + fileList[i]);
}
} }

例四:

 public class TestTrim4 {
public static void main(String[] args) {
StringBuffer buff = new StringBuffer();
buff.append("第一句话"); StringBuffer buff2 = buff;
buff2.append("这是第二句话"); System.out.println(buff);
System.out.println(buff2);
}
}

例五&例六:

 //探讨StringBuffer的效率问题
public class TestTrim5 {
public static void main(String[] args) {
// 设置一个得到当前时间,来进行效率测试,以毫秒为单位。
long begin = System.currentTimeMillis(); String str = "";//下面沒有打印,有個小小的報錯,但不影響的
for (int i = 0; i < 50000; i++) {
str += i;
}
long end = System.currentTimeMillis(); System.out.println("程序运行了" + (end - begin) + "毫秒");
//System.out.println(str);為了測試,這個地方就不打印了,等全部打印出來就太慢了
}
}

 //用StringBuffer测试效率
public class TestTrim6 {
public static void main(String[] args) { long begin = System.currentTimeMillis(); StringBuffer buff = new StringBuffer();
for (int i = 0; i < 50000; i++) {
buff.append(i);
} long end = System.currentTimeMillis(); System.out.println("程序一共执行了" + (end - begin) + "毫秒");
}
}

在例五和例六中,可以从打印方式去思考,为什么例六要不例五速度快那么多。

例五的执行方式就好比:

1
12
123
1234
12345
123456
1234567
12345678
.........
..........
...........

例六的执行方式就不一样了:

它是执行一次之后,下一次会再上一次保留的状态下继续往上堆。

1,2,3,4,5,6,7,8,9........(中间没有逗号哈,就是不停的往上加,直到循环结束。)

String转换类操作

==字符数组转成字符串

--String(char[]) 构造函数

--String(char[] value, int offset, int count)

char [] data={'a','b','c'};

String str=new String (data);

== String类的静态方法

--static String copyValueOf(char[] data)

--static String copyValueOf(char[] data, int offset, int count)

char[] cArray=new char[]{'广','阔','天','地'};

String str=String.copyValueOf(cArray,2,2); //从第过引为2的开始,拷贝2个

--static String valueOf(char[]);    // 返回 char 数组参数的字符串表示形式。

char[] c=new char[]{'a','b','c','d'};

String str=String.valueOf(c);  // abcd

== 将字符串,转换成数组(字符数组,字节数组)

char [] array=str.toCharArray();

byte[] b=str.getBytes()//注意,这个有点不太一样,照API讲

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

String.valueOf(89);   =   89+"" //Api中,共重载了9种

切割替换类操作

-- String replace(CharSequence target,  CharSequence replacement) //

String str="中国人民,人民,人民";

str=str.replace("人民", "百姓");

如何把字符串中的所有的空格去掉 str=str.replace(" ","");

-- String[] split

String str="中国,美国,法国,小日本";

String [] list= str.split(",");

String str="中国|美国|法国|小日本";

String [] list=str.split("\\|");  //注意,要对|进行转义 (.也要转义)

-- String substring(int beginIndex)

String str="abcdefg";

str= str.substring(2); //从索引为2的位置(含) 开始截取

System.out.println(str); //cdefg

-- String substring(int beginIndex,  int endIndex) beginIndex - 起始索引(包括)  endIndex - 结束索引(不包括)。 顾头不顾尾

-- String toUpperCase(); //转换大小写

-- String toLowerCase();

-- String trim(); //去空格(去两端空格)

StringBuffer 的其他操作

删除

StringBuffer delete(int start,  int end)  //清空缓冲区 buff.delete(0,buff.length())

StringBuffer deleteCharAt(int index)

获取

char charAt(int index)

int indexOf(String str)

int lastIndexOf(String str)

String subString(int index,int end)

从哪索引开始    到哪个索引   从数组的哪开始存

void getChars(int srcBegin,  int srcEnd,  char[] dst,   int dstBegin); 将缓冲区的数据存到指定的字符数组里 //buff.getChars(2, 3, c, 3);

修改

StringBuffer replace(start,end,String)

void setCharAt(int index,char ch);

StringBuffer reverse();

//例子:

StringBuffer buff=new StringBuffer(str);

buff.reverse();

==== StringBuilder jdk1.5 以后出现的,它的功能和 StringBuffer相同

StringBuffer 是线程安全的,没有StringBuilder速度快

StringBuilder 是线程不安全的,速度快

包装类

基本数据类型的包装类

8种基本数据类型 (原生类)

byte      Byte

short     Short

int       Integer

long      Long

char      Character

boolean   Boolean

float     Float

double    Double

主要用于基本数据类型和字符串之间进行转换等操作

//求int型的最大数**

System.out.println(Integer.MAX_VALUE);

//把一个字符转大写

char x='a';

System.out.println(Character.toUpperCase(x)); //A

//例子,将 数字转成字符串

90 +"" ;

Integer.toString(90);

//例子,将字符串转成基本数据类型

计算 "44" + "55"  =99

int result=    Integer.parseInt("44")+Integer.parseInt("55");  //parseInt是静态方法

int a =new Integer("22").intValue();  //也可以

附:如果要转的字符串不符数字规则,则抛出 NumberFormatException

// 进制转换

System.out.println(Integer.toBinaryString(x));  //0b1011010

System.out.println(Integer.toHexString(x));  //0x5a

System.out.println(Integer.toOctalString(x));  //0123

关于拆箱和装箱

装箱:把基本数据类型,转成对象类型

拆箱:把对象类型,转成基本数类型

Integer x=new Integer("100");    //可以

Integer y=new Integer(100);      //可以

System.out.println(x==y);  //false

System.out.println(x.equals(y));  //true

从 jdk1.5 以后

Integer x=5;   //可以,自动装箱 (基本数据类型,转成对象类型,叫装箱)

x=x+2;   //可以,自动拆箱,做完加法以后,又自动 装箱

Integer x=null; //可以

Integer a=100;

Integer b=100;

System.out.println(a==b);  true  但当 值大于128时,它为false

BigDecimal类的应用

BigDecimal a=new BigDecimal("89149801457809234985932404572309");

BigDecimal b=new BigDecimal("89140345823459735");

System.out.println( a.multiply(b));

它是java.math包下的

Bigdecimal 的构造函数

BigDecimal(int)       创建一个具有参数所指定整数值的对象。

BigDecimal(double) 创建一个具有参数所指定双精度值的对象。

BigDecimal(long)    创建一个具有参数所指定长整数值的对象。

BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象。

常用方法

add(BigDecimal)        BigDecimal对象中的值相加,然后返回这个对象。

subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。

multiply(BigDecimal)  BigDecimal对象中的值相乘,然后返回这个对象。

divide(BigDecimal)     BigDecimal对象中的值相除,然后返回这个对象。

toString()                将BigDecimal对象的数值转换成字符串。

doubleValue()          将BigDecimal对象中的值以双精度数返回。

floatValue()             将BigDecimal对象中的值以单精度数返回。

longValue()             将BigDecimal对象中的值以长整数返回。

intValue()               将BigDecimal对象中的值以整数返回。 咒

格式化及例子

由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,

可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。

以利用BigDecimal对货币和百分比格式化为例。

-- 首先,创建BigDecimal对象,进行BigDecimal的算术运算后,分别建立对货币和百分比格式化的引用,

-- 最后利用BigDecimal对象作为format()方法的参数,输出其格式化的货币值和百分比

符串工具类

import java.io.UnsupportedEncodingException;

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.math.BigDecimal;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.*;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

Java基础——String类(二)的更多相关文章

  1. Java基础String类

    String是一个对象 String不属于8种基本数据类型(byte, char, short, int, float, long, double, boolean),String是对象,所以其默认值 ...

  2. Java基础—String类小结

    一.String类是什么 public final class String implements java.io.Serializable, Comparable<String>, Ch ...

  3. Java基础——String类(一)

    一.String 类代表字符串 Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 字符串是常量:它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串 ...

  4. Java基础---String类和基本数据类型包装类

    第一讲     String类 一.概述         String是字符串的类类型,用于描述字符串事物.字符串是一个特殊的对象.特殊之处就在于: Stings= new String();和Str ...

  5. Java基础:String类详解,案例用户登录实现,案例手机号截取实现,案例敏感词替换实现;StringBuilder类详解,StringBuilder和String相互转换,附练习案例.

    1.API 1.1 API概述-帮助文档的使用 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK ...

  6. [Java基础]——String类

    此篇博客主要整理Java中的String类的使用. 一.String    1.1  String 的定义 上图是jdk中对String类的定义,得到的信息有: ①.String类声明为final的, ...

  7. java基础解析系列(二)---Integer

    java基础解析系列(二)---Integer 前言:本系列的主题是平时容易疏忽的知识点,只有基础扎实,在编码的时候才能更注重规范和性能,在出现bug的时候,才能处理更加从容. 目录 java基础解析 ...

  8. java基础-BigDecimal类常用方法介绍

    java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...

  9. java基础-BigInteger类常用方法介绍

    java基础-BigInteger类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigInteger类概述 Java中long型为最大整数类型,对于超过long ...

随机推荐

  1. 轻量级Config文件AppSettings节点编辑帮助类

    using System.Configuration; using System.Windows.Forms; namespace Allyn.Common { public class XmlHep ...

  2. .net core 与ELK(3)安装Kibana

    1.去产品官网下载https://www.elastic.co/downloads/kibana 对应的tar.gz的压缩包,放到/usr/local/src目录 2.解压 -linux-x86_64 ...

  3. C# WPF 中WebBrowser拖动来移动窗口,改变窗口位置

    前言 wpf中的WebBrowser相比之前的winform阉割了不少东西,也增加了不少东西,但是msdn对wpf也没有较好的文档 WebBrowser可以说是一个.NET控件,相对于WPF中的控件, ...

  4. 全球第一开源ERP Odoo操作手册 数据库简介

    1.3 数据库简介 每一个独立核算的企业都有一套相互关联的账簿体系, 把这一套完整的账簿体系建立在计算机系统中就称为一个数据库. 一般一个企业只用一个数据库. 如果企业有几个下属的独立核算的实体,也可 ...

  5. ADB 命令介绍

    Android adb shell am 命令介绍 am这个指令是 activity manager的缩写.这个命令可以启动Activity.打开或关闭进程.发送广播等操作. am命令格式如下 adb ...

  6. 深入理解String类

    1.String str = "eee" 和String str = new String("eee")的区别 先看一小段代码, public static v ...

  7. 【小程序开放激励视频】--wepy小程序添加激励视频

    小程序开放激励视频是对小程序开发者一个福音,小程序开发者可以完成一些变现,以增加收入! 本文章针对已经有开发经验或者正在进行小程序开发的同学~ 官方文档:激励视频广告 定义页面变量,用于创建视频实例 ...

  8. 并发上下文控制包Context

    Context,是golang用来控制并发流程的库,它能方便的将主控程序的停止信号传递到goroutinue中,从而实现一键中止关联goroutinue的执行,除此之外,它还能将外部变量通过Value ...

  9. Linux后台进程管理以及ctrl+z(挂起)、ctrl+c(中断)、ctrl+\(退出)和ctrl+d(EOF)的区别(转)

    一.后台进程管理命令 fg.bg.jobs.&.ctrl + z.ctrl + c.ctrl + \.ctrl + d1. &加在一个命令的最后,可以把这个命令放到后台执行 ,如fir ...

  10. Java总结:字符串详解

    更新时间:2018-1-6 21:20:39 更多请查看在线文集:http://android.52fhy.com/java/index.html String 字符串创建 String str1=& ...