String类

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();

        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值