import java.math.BigDecimal;
public class test
{
public static void main(String []args)
{
//char型数组可以作为String的形参
//实现char向string的耦合
char ch[]={'a','b','c','d','e'};
String s=new String(ch);
System.out.println("char型数组为"+s);
System.out.println("长度为:"+s.length());
//截取
//截取一个字符--charAt为一个字符,形参为索引
char cha=s.charAt(1);
System.out.println("截取一个字符为:"+cha);
//截取多个--getChars(),参数1是要复制的第一个位置,参数二是要复制的结束位置-1,第三个参数是char[]类型
char buf[]=new char [20];
s.getChars(2,3,buf,0);
String s1=new String(buf);
System.out.println("截取多个字符"+s1);
//耦合
//实现string向char的耦合,toCharArray返回的是char的指针
//char arr[]=s.toCharArray();
System.out.println(s.toCharArray());
//比较--1 equal和==的使用区别
//==是比较对象指针是不是指向同一块内存
String s2,s3;
s2=new String("123");
s3=new String("123");
System.out.println("==:"+s1==s2);//结果为false,两个变量的内存地址不一样,也就是说它们指向的对象不?一样.
System.out.println("equal:"+s2.equals(s3));//结果为true,因为内容一致.
//比较--2的注意事项
StringBuffer s4=new StringBuffer("1");
StringBuffer s5=new StringBuffer("1");
System.out.println("StringBuffer:"+s4.equals(s5));//结果为false
//因为StringBuffer里没有定义这个方法,因此来自Object类
//而Object类中equals这个方法是比较地址的,所以返回flase
//比较--3equalsignorecase
s2=new String("ABC");
s3=new String("abc");
System.out.println("equalsignorecase:"+s2.equalsIgnoreCase(s3));
//regionMatches(int 1,int 2,int 3,int 4)
s="膜大佬 dalao";
s2="dalao";
s3="DALAO";
//public boolean regionMatches(int toffset,String other,int ooffset,int len)
//or public boolean regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len)
//toffset?--?该分区域在此字符串中的起始偏移量。
//other?-- 字符串参数。
//ooffset?-- 该次区域中的字符串参数的起始偏移量。
//len?-- 比较的字符的数目。
//ignoreCase?-- 如果为true,比较字符时忽略大小写。
System.out.println("s.regionMatches(4,s2,0,5):"+s.regionMatches(4,s2,0,5));
System.out.println("s.regionMatches(4,s3,0,5,1):"+s.regionMatches(true,4,s3,0,5));
//匹配
//首尾字符串匹配
System.out.println("首尾匹配字符串方法");
s2=new String("kalao,I am kalao");
s3=new String("kalao");
System.out.println("startsWith:"+s2.startsWith(s3));
System.out.println("endsWith :"+s2.endsWith(s3));
//匹配字符返回下标索引
//int indexOf(int ch,int fromIndex)函数 ,从fromIndex(包括fromIndex)往后寻找第一个和ch匹配的字符,并且返回下标
System.out.println("indexOf :"+s2.indexOf('a',1));
System.out.println("indexof :"+s2.indexOf('a'));
//lastIndexOf函数返回也是下标索引
//public int lastIndexOf(int ch)
System.out.println("lastIndexOf:"+s2.lastIndexOf('a'));
//public String substring(int beginIndex)
//public String substring(int beginIndex, int endIndex)
//beginIndex?-- 开始的索引(包含)
//endIndex?-- 结束的索引(不包含)
System.out.println("substring:"+s2.substring(0));
System.out.println("substring:"+s2.substring(0,5));
//连接
//public String concat(String s)
//s?-- 这个字符串是串连到结尾的那个字符串。
s2=s2.concat(" is not dalao");
System.out.println("contact :"+s2);
//替换
//public String replace(char oldChar, char newChar)
//把所有字符串里面的oldChar用newChar替换
//oldChar?-- old 字符.newChar?-- new 字符.
System.out.println("replace :"+s2.replace('l','d'));
s2=new String(" kalao is zhazha ");
//去掉空格
//public String trim()
System.out.println("trim()函数:"+s2.trim());
//格式转换为String类型
//boolean ,char ,char[]data ,double ,float ,int ,long ,Object
//char[]data ,int offset,int count
/*
String.valueOf() 方法的使用
1. 由 基本数据型态转换成 String
String 类别中已经提供了将基本数据型态转换成 String 的 static 方法
也就是 String.valueOf() 这个参数多载的方法
有下列几种
String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串
String.valueOf(char c) : 将 char 变量 c 转换成字符串
String.valueOf(char[] data) : 将 char 数组 data 转换成字符串
String.valueOf(char[] data, int offset, int count) :
将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串
String.valueOf(double d) : 将 double 变量 d 转换成字符串
String.valueOf(float f) : 将 float 变量 f 转换成字符串
String.valueOf(int i) : 将 int 变量 i 转换成字符串
String.valueOf(long l) : 将 long 变量 l 转换成字符串
String.valueOf(Object obj) : 将 obj 对象转换成 字符串, 等于 obj.toString()
用法如:
int i = 10;
String str = String.valueOf(i);
这时候 str 就会是 "10"
*/
double d = 102939939.93925562525;
System.out.println("Return Value : " + String.valueOf(d) );
/*
2. 由 String 转换成 数字的基本数据型态
要将 String 转换成基本数据型态转
大多需要使用基本数据型态的包装类别
比如说 String 转换成 byte
可以使用 Byte.parseByte(String s)
这一类的方法如果无法将 s 分析 则会丢出 NumberFormatException
byte :
Byte.parseByte(String s) : 将 s 转换成 byte
Byte.parseByte(String s, int radix) : 以 radix 为基底 将 s 转换为 byte
比如说 Byte.parseByte("11", 16) 会得到 17
double :
Double.parseDouble(String s) : 将 s 转换成 double
float :
Double.parseFloat(String s) : 将 s 转换成 float
int :
Integer.parseInt(String s) : 将 s 转换成 int
long :
Long.parseLong(String s)
*/
System.out.println("Float.parseFloat"+Float.parseFloat(String.valueOf(d)));
//这里结果为1.02939936E8这里精度只到小数点后7位
System.out.println("Float.parseDouble"+Double.parseDouble(String.valueOf(d)));
//这里结果精确到小数点后16位
BigDecimal b1=new BigDecimal("102939939.93925562525");
//大数
System.out.println("BigDecimal b1:"+b1);
BigDecimal b2=BigDecimal.valueOf(123232.0002);
System.out.println("BigDecimal b2:"+b2);
//大数相加
//public?BigDecimal?add(BigDecimal?augend),返回BigDecimal
System.out.println("Add b1+b2:"+b1.add(b2));
System.out.println("Add b1+b2:"+b1.add(b2).doubleValue());
//大数相减
//public?BigDecimal?subtract(BigDecimal?subtrahend)
System.out.println("subtract b1-b2:"+b1.subtract(b2));
System.out.println("subtract b1-b2:"+b1.subtract(b2).doubleValue());
//大数相乘
//public?BigDecimal?multiply(BigDecimal?multiplicand)
System.out.println("b1*b2:"+b1.multiply(b2));
System.out.println("b1*b2:"+b1.multiply(b2).doubleValue());
//大数相除
//public?BigDecimal?divide(BigDecimal?divisor)
b1=new BigDecimal(100);
b2=new BigDecimal(5);
System.out.println("b1/b2:"+b1.divide(b2));
System.out.println("b1/b2:"+b2.divide(b1).doubleValue());
/*
public static double div(double value1,double value2,int scale) throws IllegalAccessException{
//如果精确范围小于0,抛出异常信息
if(scale<0){
throw new IllegalAccessException("精确度不能小于0");
}
BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
return b1.divide(b2, scale).doubleValue();
}
*/
//大数取余
//public?BigDecimal?remainder(BigDecimal?divisor)
System.out.println("b1%b2:"+b1.remainder(b2));
}
}
String类的基本操作
最新推荐文章于 2023-11-20 21:45:19 发布