工具类-阿里云开发者社区

开发者社区> 一条coding> 正文

工具类

简介: 工具类
+关注继续查看

1 ?java.lang.String


面试题String对象的内存地址?


答:String对象不是一个基本类型,实例化方式有两种,第一种String s=”abc”; 在方法常量池中分配一个字符串常量”abc”, s变量存储地址引用,s存储在栈;第二种String s=new String(“abc”); 在堆内存分配空间存储”abc”,s存储地址引用,s s存储在栈;


String s1=”abc”;


String s2=”abc”;


System.out.println(s1==s2);//true



String s1=”abc”;


String s2=new ?String(”abc”);


System.out.println(s1==s2);//false



String s1=”abc”;


String s2=”ab”+”c”;


System.out.println(s1==s2);//true



String s1=”abc”;


String s2=”ab”;


s2+=”c”;//相当于new String(“abc”);


System.out.println(s1==s2);//false



2 String的API


? split方法支持正则表达式分割;


先了解正则;正则在java应用;



3 ?正则表达式


?作用匹配字符串,利用正则提供特殊符字符组成匹配字符串用于复杂字符串匹配;


?正则中字符的分类


?①普通字符


?②非打印字符


? ? \n ? \t


?③特殊字符,就是一些有特殊含义的字符


?


4 ?java中应用正则


4.1 利用java匹配模板、 比对对象验证正则表达式


import java.util.regex.Matcher;


import java.util.regex.Pattern;


public class Demo2 {

? ?public static void main(String[] args) {

? ? ? ?//java支持正则对象


? ? ? ?//通过javaPattern对象编译正则表达式,形成模板


? ? ? ?Pattern pa=Pattern.compile(".");


? ? ? ?//通过模板创建匹配对象


// ? ? ? ?pa.matcher("被匹配字符串");


? ? ? ?Matcher ma = pa.matcher("E");


? ? ? ?//通过匹配对象验证正则模板和abc字符串是否匹配


? ? ? ?boolean b = ma.matches();


? ? ? ?System.out.println(b);


? ?}


}


4.2 ?String对象中使用正则表达式的方法


String ? replaceAll(“正则表达式”,”替换的字符串”)


String[] ?split(“查找并按正则拆分的字符串”)


boolean matchs(“正则表达式”)



5 StringBuilder,StringBuffer


由于String对象实际存储字符串常量,每次对字符串的修改(+=, ?split, replace,replaceAll,substring) 都生成新字符串,为了修改字符串性能提高使用StringBuilder和StringBuffer;


例如StringBuffer的初始化


线程安全,可变的字符序列。 字符串缓冲区就像一个String ,但可以修改。


实例化:


StringBuffer ?buf=new ?StringBuffer();//在堆中实例化一个字符串缓冲区对象


//StringBuffer可以和String对象进行转换


String对象转换成StringBuffer


StringBuffer ?buf=new StringBuffer(“ok”);


StringBuffer对象转换成String


String ?k=buf.toString();



StringBuffer和StringBuilder提供直接在当前实例化内存对象上修改能力;


例如:


//实例化缓冲区对象


? ? ? ?StringBuffer buf=new StringBuffer();


? ? ? ?//1 添加数据


? ? ? ?StringBuffer s2 = buf.append(8);


? ? ? ?StringBuffer s3 = buf.append("abc");


? ? ? ?buf.append(new int[]{3,6,9});


? ? ? ?//将缓冲区对象转换成字符串


? ? ? ?String str = buf.toString();


? ? ? ?System.out.println(str);


? ? ? ?//2 删除


? ? ? ?buf.delete(2,buf.length());


? ? ? ?System.out.println(buf.toString());


? ? ? ?//3 插入


// ? ? ? ?buf.insert(整数型的插入索引,插入的对象)


? ? ? ?buf.insert(1,"你好");


? ? ? ?System.out.println(buf.toString());


? ? ? ?//4 修改


// ? ? ? ?buf.replace(起始索引,结束索引,替换字符串)


? ? ? ?buf.replace(1,3,"平方");



面试:


String、StringBuilder和StringBuffer的区别?


答:String存储字符串常量,每次修改生成新字符串常量;而StringBuilder和StringBuffer创建一个对象后,修改都是在原对象上修改,修改性能快;StringBuffer中方法都是线程安全的;StringBuilder对象中的方法都是非线程安全;




java包装类


1包装类基本概念:


针对java8中基本类型提供包装类java.lang, 提供对应基本类型和包装器类型的转换,包装类提供和String直接转换;


byte----------java.lang. Byte


short--------- java.lang.Short


int------------ java.lang.Integer


long--------- java.lang.Long


float-------- java.lang.Float


double----- java.lang.Double


char-------- java.lang.Character


Boolean--- java.lang.Boolean



2 用法:


2.1 包装对象初始化


?例 //将基本数据类型转换成包装对象


? ? ? ?int age=8;


? ? ? ?Integer it=new Integer(age);


? ? ? ?//jdk1.5 自动装箱


? ? ? ?Integer it2=88;//88是基本类型,自动调用new Integer


? ? ? ?//将字符串类型转换Integer类型


? ? ? ?Integer it3=new Integer("66");



? ? ? ?//在jdk1.5前将包装对象转换基本数据类型


? ? ? ?int x1=it.intValue();


? ? ? ?long x2=it.longValue();


? ? ? ?//字符形式的数值,转换int


? ? ? ?int x4=Integer.parseInt("36");


? ? ? ?//在jdk1.5以后 能够将包装自动拆分为基本类型


? ? ? ?int x3=it3;//自动拆箱


? ? ? ?//自动拆箱


? ? ? ?int x5=new Integer("66");


? ? ?


? ? ? ?String s4=new StringBuilder(8).toString();//StringBuffer(初始化容器大小)


? ? ? ?System.out.println("s4:"+s4);//返回””



? 2.2 验证当前单个字符的分类


例如:统计字符串中大小字母和数字的个数


String str="afdaRTf2134asdf1324aFGf";


? ? ? int x,y,z;


? ? ? x=y=z=0;


? ? ? //按下标将字符串遍历


? ? ? ?for (int i = 0; i < str.length(); i++) {

? ? ? ? ? ?char ch=str.charAt(i);


? ? ? ? ? ?/*if(ch>='A'&&ch<='Z'){

? ? ? ? ? ? ? ?x++;


? ? ? ? ? ?}*/


? ? ? ? ? ?if(Character.isDigit(ch)){

? ? ? ? ? ? ? ?x++;


? ? ? ? ? ?}else if(Character.isUpperCase(ch)){

? ? ? ? ? ? ? ?y++;


? ? ? ? ? ?}


? ? ? ?}


===============================================================================


java工具类


1概念


java中工具类位于java.util包


java.util.Arrays 数组辅助类,提供静态方法用于数组操作,sort,toString,binarySearch


java.util.Random随机类


java.util.Date日期类型


例 格式化日期


import java.text.SimpleDateFormat;


import java.util.Date;


public class Demo2 {

? ?public static void main(String[] args) {

? ? ? ?Date da=new Date();


? ? ? ?//使用java.text日期格式对象


? ? ? ?SimpleDateFormat sim=new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒SSS");


? ? ? ?String sda=sim.format(da);


? ? ? ?System.out.println(sda);



//jdk1.8更新版本


? ? ? ?LocalDate ldate=LocalDate.now();


? ? ? ?System.out.println(ldate);


? ?}


}


例如 ?将字符串转换Date对象


?String str="2018年07月30日";


? ? ? ?SimpleDateFormat sim=new SimpleDateFormat("yyyy年MM月dd日");


? ? ? ?try {

? ? ? ? ? ?//从字符串转换成Date对象


? ? ? ? ? ?Date da=sim.parse(str);


? ? ? ? ? ?System.out.println(da);


? ? ? ?} catch (ParseException e) {

? ? ? ? ? ?e.printStackTrace();


? ? ? ?}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用注解开发| 学习笔记
快速学习 使用注解开发
16 0
Elasticsearch-doc基本操作
document是es中比较重要的一个概念,相当于数据库中的行数据,es可以对document进行操作,主要包括新增doc、删除doc、更新doc、更新doc的某个部分等。
12 0
案例_点菜| 学习笔记
快速学习案例_点菜
13 0
城市数据大脑介绍|学习笔记
快速学习 城市数据大脑介绍
8 0
为什么 MySQL 不推荐默认值为 null ?
通常能听到的答案是使用了NULL值的列将会使索引失效,但是如果实际测试过一下,你就知道IS NULL会使用索引,所以上述说法有漏洞。
7 0
这样统计代码执行耗时,才足够优雅!
代码耗时统计在日常开发中算是一个十分常见的需求,特别是在需要找出代码性能瓶颈时。 可能也是受限于 Java 的语言特性,总觉得代码写起来不够优雅,大量的耗时统计代码,干扰了业务逻辑。特别是开发功能的时候,有个感受就是刚刚开发完代码很清爽优雅,结果加了一大堆辅助代码后,整个代码就变得臃肿了,自己看着都挺难受。因此总想着能不能把这块写的更优雅一点,今天本文就尝试探讨下“代码耗时统计”这一块。
6 0
Google 开源的依赖注入库,比 Spring 更小更快!
Guice是Google开源的一个依赖注入类库,相比于Spring IoC来说更小更快。Elasticsearch大量使用了Guice,本文简单的介绍下Guice的基本概念和使用方式。
3 0
Slf4j 包老冲突,每次排查半天,是什么原因?怎么解决?
一、前言 在进行 Java 开发时,通常我们会选择 Slf4j 作为日志门面,但日志实现却不尽相同。如果系统运行中同时存在多个日志实现,就会出现类似下图的 Warning。
5 0
记录一次用 curl 测试账户登录服务接口
问题 后台开发服务接口时,经常会用到很多测试工具,比如 Postman、Apipost、Jmeter 等。这些都是带有图形用户界面的工具,有没有一些显得高大上的方法呢?嗯,是有的。 比如今天开发某个账户登陆服务接口时,就想到了先用命令行来测试一下服务接口是否好用。
10 0
+关注
121
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载
http://www.vxiaotou.com