String&stringBuffer&stringBuilder

**

String

序:

和八种基本数据类型不同,java内部没有这个内置的字符串类型,而是在java类库中提供了一个预定义的类String类,成为引用类型。

String&stringBuffer&stringBuilder

  1. String:

共享性,不可变性。string类中没有提供修改字符串的方法,定义的该方法也是用finall修饰的类,也决定了其值不可变。但是可以让字符串对象去指向另一个字符串,如同改变了字符串值一样,其实内部在字符串池中又开辟了一个新的空间来存放新的字符串,之前的字符串不再被引用占用内存也不会被JVM回收,造成内存泄漏。字符串不可变的目的是为了实现字符串的共享。方便之后在字符串池中直接指向相同的字符串直接量。

  1. StringBuilderr:

通过.append的内部方法对字符串进行修改,保存在字符串缓冲区中,依旧占用原来的内存空间,但是在并发的情况下会不安全。

  1. StringBuffer:

与stringBuilder相比,读了一个线程锁,所以在并发情况下是安全的,但是效率比较低。

宏替换

采用final 定义的所有变量并指定了初始值,那么在编译期就会将引用到的所有该变量的对象直接替换成相应的值。该变量就是宏变量,编译器能对宏变量进行宏替换,目的是较少内存的占用以及效率。
Eg: String str1 = “Hello World”;
final String s = "Hello ";
String str2 = s + “World”;
System.out.println(str1 == str2);
// true
String str1 = “Hello World”;
String s = "Hello ";
String str2 = s + “World”;
System.out.println(str1 == str2);
// false

String API

1.equals 比较两个对象的内容 & ==比较两个对象的地址
2.+ & concat 字符串的拼接 &&和||存在短路运算
3.length 获取字符串长度
4.trim 截取字符串两边的空格
5.chatAt(0) 截取指定位置的(第一位)字符串,截取首字母
6.substring(起始位置(包括),终止位置(不包括)) 截取字符串段落
7.toUpperCase() & toLowerCase() 大小写
8.indexof("@")从前往后查询某个字串所在位置
lastIndexOf 从后往前询某个字串所在位置
9.startsWith & endsWith 可用来查找文件格式或者文件名称
10.replaceAll( “\.”, “,”) 替换所有点为逗号
replace( “.”, “,”) 将点替换为逗号
String s =“adc\123”;
system.out.println(s);//adc\123
11.split("") 根据字符进行分离,并存在一个数组里
String str = “as,dd,fgf”;
String[] a = str.split("\.");正则表达式
12.方法区,static在方法区,字符串也在方法区内,叫做方法池,jdk1.8开始放在堆中,叫做常量池
13.计时器,long start =system.currentTimeMillis();
long end = System.currentTimeMillis();

	System.out.println("执行时间"+(end-start));

14.StringBuffer和StringBuilder StringBuffer sb = new StringBuffer sb.append(i);
15.sb.capacity();容量
16.static声明的工具类可以直接
17.String.valveOf(100);整型转换成字符串
18.Integer.parseInt(“100”);字符串转换成整型
19.String s =String.format(“型号:%s,价格:%s,”, car.getName(),car.getPrice());
System.out.println(“型号:”+car.getName());System.ou
20.BigDecimal b = new BigDecimal(2/2.2/”2”); 将整型/浮点型/字符串转换成可以计算的数据类型BigDecimal。
21.转义字符
\n 换行(LF) ,将当前位置移到下一行开头
\t 水平制表(HT) (跳到下一个TAB位置)
\ 代表一个反斜线字符’’’
’ 代表一个单引号(撇号)字符
" 代表一个双引号字符
22.正则表达式:用来判断用户输入数据是否符合格式要求。
String s = “61011319780908211x”;
String regex = “\d{15}|\d{17}[\dxX]”;
//判断字符串s能否匹配指定的正则表达式
if (s.matches(regex)) {
System.out.println(“格式正确”);
}else { … }
23.面向对象的for循环:
For(int 1=1;i<10;I++){} 数组遍历模式
For(string s : arr){} 对象遍历模式
24. instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型。
25. 日期类型转换
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日”);
System.out.println(sdf.format(now));
sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
System.out.println(sdf.format(now));
String strDate = “2005-04-22”;
SimpleDateFormat f = new SimpleDateFormat(“yyyy-MM-dd”);
Date d = f.parse(strDate);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值