类型转换
String —>Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
Date date = sdf.parse(dateString);
Date —>String
Date ddate = new Date();
String sdate=(new SimpleDateFormat("yyyy-MM-dd")).format(ddate);
int —> String
int i=12345;
String s="";
//第一种方法
s=i+"";
//第二种方法
s=String.valueOf(i);
String —> int
String s="12345";
int i;
//第一种方法
i=Integer.parseInt(s);
//第二种方法
i=Integer.valueOf(s).intValue();
String <—> byte
String s = "fs123fdsa";//String变量
byte b[] = s.getBytes();//String转换为byte[]
String t = new String(b);//bytep[]转换为String
String 转成Double二维数组
1.先将花括号替换成中括号,
2.使用JSON的转化,先转成String的二维数组
3.然后才是把数组中的值转成Double的
使用的JSON包是fastjson的
String str = "{{10.14, 11.24, 44.55, 41.01},{12.10, 14.21, 52.14, 50.44},{14.44, 16.12, 45.42, 47.55}}";
str = str.replace("{", "[").replace("}", "]");
String[][] arr = JSON.parseObject(str, String[][].class);
Double[][] ds = new Double[arr.length][arr[0].length];
for(int j=0;j<arr.length;j++){
for(int i=0;i<arr[0].length;i++){
ds[j][i] = Double.valueOf(arr[j][i]);
}
}
String切割并返回list(工具 Guava)
import com.alibaba.fastjson.JSON;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.google.common.base.Splitter;
List<String> list = Lists.newArrayList("a","b","c"," ");
String s = Joiner.on(",").join(list); // 以逗号分割
Splitter split = Splitter.on(',').trimResults().omitEmptyStrings(); // 去前后空格&&去空string
List<String> list1 = split.splitToList(s);
其他类型转换String
1、toString()
先看API 中关于 toString()的描述:
返回该对象的字符串表示。通常,
toString
方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object
类的toString
方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@
”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:getClass().getName() + '@' + Integer.toHexString(hashCode())
toString()方法返回的是这个对象的字符串表示,就像是这个对象的名字一样,任何对象都可以有自己的名字,你可以重写其toString()方法,给其赋予任意的名字。
但是调用toString()方法的对象不能为 null,否则会抛出异常:java.lang.NullPointerException。
2、String.valueOf()
源码:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
调用 toString() 之前判断一下这个对象是不是null,如果不是null,则正常调用其toString()方法,如果是null 的话,则返回字符串形式的null。
String.valueOf() 比起直接用 toString() 来说虽然可能会减少报错的机会,但是如果在对比对象值的时候可要小心,要注意如果用if(String.valueOf(object)==null) 就肯定不行的了。
3、强制转换 (String)data
这个是初学者最容易出错的,其实每个对象的类型在对象创建的时候已经确定并且不能更改,所谓强制转换也只是使其表面上换成了另一种类型,可以使用其方法对这个对象进行处理。那么可想而知,把物品A 当成物品B 来使用,当A 能能够被当成 B的时候大家都相安无事,你走你的路,我过我的桥,一旦A 不能被当成B ,它不会去自动调用 toString()方法,而是马上就会报错。
例一:
Integer obj1 = new Integer(100);
String strVal = (String)obj1; //Cannot cast from Integer to String
因为obj1 在创建的时候就是 Integer 类型,不能转换成 String 类型,所以在编译期间就会报错Cannot cast from Integer to String。
例二:
Object obj2 = new Integer(100);
String strVal = (String)obj2;
obj2 虽然本质上是 Integer 类型,但其表面上确是 Object 类型,所以在编译的时候没有报错,但因为 obj2 在创建的时候已经确定了其在本质上 Integer 类型,所以这两行代码在运行时依然会报错,因为 Integer 型不能转换成 String 类型。
当然,如果要把 Integer 型转换成 String,可以调用其 toString()方法:Integer.toString(obj1) 或者 String.valueOf(obj1); 对应于其他自定义类型,则调用自己重写的 toString() 方法。
此外,因null值可以被强制转换为任何类型,所以(String)null也是合法的。
参考资料:https://www.cnblogs.com/yuxiaoqi/p/3562161.html
String对象初始化
创建并初始化最常见的方式有两种:
a、String str=new String("XXX"); 前者是java中标准的对象创建方式,其创建的对象将直接放置到堆中,每调用一次就会创建一个新的对象;
b、String str="XXX"; 后者则会在栈中创建一个对象引用变量str,然后 查看字符串池中是否存在"XXX",如果没有,则将"XXX"存放字符串池,并令引用变量str指向它;如果已经有"XXX",则直接令str指向它。
字符串是否相等且不区分大小写-equalsIgnoreCase
字符串拼接
StringBuilder(效率高,非线程安全)StringBuffer(线程安全)
字符串补零
public static void main(String[] args) {
int youNumber = 1;
// 0 代表前面补充0
// 4 代表长度为4
// d 代表参数为正数型
String str = String.format("%04d", youNumber);
System.out.println(str); // 0001
}
字符串基本操作
常用api
参考:https://blog.csdn.net/crazy_kid_hnf/article/details/55102861
String字符串中包含某个字段
参考:https://blog.csdn.net/c_staunch/article/details/82706017
正则表达式
参考:Java String 方法 matches的使用及正则表达式_java string matches-CSDN博客
Java —— 正则表达式 Regex_java 正则表达式regexp-CSDN博客
Java正则表达式_matcher.groupcount(),matcher.start(),matcher.end()-CSDN博客
StringUtils里isEmpty方法和isBlank方法
isEmpty:判断某字符串是否为空或长度为0。
isBlank:判断某字符串是否为空或长度为0或由空白符(空白符包含:空格、tab键、换行符。) 构成。
StringBuffer、StringBuilder 判断是否为空
if(stringBuilder.length()>0
&& !"null".equals(stringBuilder.toString())
&&!"".equals(stringBuilder.toString())) {
//stringBuilder不为空,StringBuffer同理
}
注意:“StringBuffer和StringBuilder”在使用append()方法时,append(null)会自动把null转换成字符串的"null"