常用类_封装类__string类

一·常用类概述

指jdk内部包含的很多已经定义好的java或接口,在开发的时候可以直接使用这些类,不完全统计,jdk中有上万个java类和接口,但是实际开发中常用的并不多

二·封装类

Java中的八大基本类型,大多数时候只能进行算术运算,比较,逻辑运算,无法像引用数据类型一样,通过面向对象的形式,调用方法和属性,以及不能在集合中作为泛型的属性,因此,Java提供了八种基本数据类型的包装类型(封装类),将原本的基本数据类型,使用引用数据类型的形式表达,让它们除了可以进行常规运算之外,可与调用属性和方法,达到面向对象的能力。

基本数据类型封装类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

Integer类

构造器

Integer(int value)

将基本类型int ,转化为包装类型Integer

Integer  (String value)

将字符串类型的数字,转换为包装类型Integer

常见方法

static int bitCount(int i)返回指定的int值的二进制补码二进制表示中的int数。

byte byteValue()         将数值转换为byte

。。。。。。

static int   parseInt(String s)        将指定的字符串数字转换为int型

int       intValue()        将包装类的数字转换为int型

拆箱与装箱

基本数据类型和它们的包装类型可以互相直接赋值,这个机制就是自动拆箱与装箱

自动装箱

将一个Integer类型的对象,直接转换为基本数据类型int

int a2 = new Integer(28);  //自动拆箱
//new Integer(28).intValue()     将一个包装类型的Integer对象作为int值输出

Integer类中的静态内部类 IntegerCache

Integer类加载时默认缓存了 -128~127之间的Integer对象,当需要获取该位置的封装对象的时候,出于效率考虑,系统直接返回该缓存区的缓存对象

	Integer a1 = 10;
        Integer a2 = 10;
        System.out.println(a1 == a2);  //true,直接去的数据缓存区的对象

        Integer b1 = -129;
        Integer b2 = -129;
        System.out.println(b1 == b2);  //flase,它倆都是新创建的对象

Character中的isDigit(判断是否为数字),isUpperCase(判断是否为大写字母),isLowerCase(是否为小写字母)

String 中 compareTo(按字典顺序比较两个字符串,前者比后者大就返回1,小就返回-1,等于就返回0)

三·String类

string的本质是一个字符序列(字符数组);string是一个不可变长度的字符串,如果需要进行字符串操作(查找,替换,判断,比较,截取),都需要使用string类提供的相关方法来解决这些问题。string也是一个常用类

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence 

创建方式(构造)

对于string的创建,通常使用字符串直接赋值,但是string类也提供了一些构造器来用于各种情况的string对象创建:

String(char[] c):  把字符数组包装为一个String对象

String(byte[] b):将字节数组解析为String对象

String(char[] c,int s,int len):从char数组中指定位置开始,取相应个数来构造String

String(byte[] c,int s,int len):从byte数组中指定位置开始,取相应个数来构造String

常见方法

判断比较操作

判断目标字符串中是否存在指定的字串:contains(CharSequence s)

比较两个字符的序列是否一致:contentEquals(CharSequence cs)

比较两个字符串对象是否完全一致(包含大小写):equals(Object o)

判断指定字符串是否以指定字符串结尾:endsWith(String suffix)

判断指定字符串是否以指定字符串开头:startsWith(String prefix)

忽略大小写来比较两个字符串对象:equalsIgnoreCase(String anotherString)

判断是否为空字符串:isEmpty()

判断指定的字符串是否匹配指定的正则表达式:matches(String regex)

获取操作

获得字符串中指定索引处的字符:charAt(int i)

获得字符串长度:length()

获得指定字符第一次出现在字符串中的索引:indexOf(char c)

获得指定的字符(串)第一次出现在字符串中的索引:indexOf(String s)

获得指定字符最后一次出现在字符串中的索引:lastIndexOf(char c)

获得指定的字符串最后一次出现在字符串中的索引:lastIndexOf(String s)

截取分割操作

使用正则表达式分割字符串,返回字符串数组对象:split(String s)

从给定的索引开始截取,截取到字符串末尾:subString(int index)

从指定位置开始截取,到指定位置结束:subString(int start ,int end)

去除字符串首尾空格:trim()

转换操作

转大写:toUpperCase()

转小写:toLowerCase()

替换字符串中的指定字符:replace(char oldc ,char newc)

替换字符串中的 指定字符c串:replace(String oldc,String newc)

替换字符串中的匹配到的第一个指定子字符串:replaceFirst(String oldc,String newc)

替换匹配给定的正则表达式中的字符:replaceAll(String regex,String s)

将任何数据类型转换为String对象:valueOf(Object o)

将字符串对象转换为字符数组:toCharArray()

public static void main(String[] args) {
        char[] c = {'今','天','天','气','真','好'};

        String s1=new String(c);
        System.out.println(s1);

        byte[] b ={1,6,8,4,7,5};
        String s2 = new String(b);
        System.out.println(s2);

        String s3 = new String(c,2,3);
        System.out.println(s3);

        String s4 = new String(b,2,3);
        System.out.println(s4);

        String s5 = "How old are you";
        String s6 = "how old are you";
        System.out.println(s5.contains("are"));//判断字符串中是否存在指定子串

        System.out.println(s5.contentEquals("How"));//比较两个字符的序列是否一致

        System.out.println(s5.equals(s6));//判断两个对象是否完全一致

        System.out.println(s5.endsWith("you"));//判断是否以指定字符串结尾

        System.out.println(s5.startsWith("How"));//判断是否以指定字符串开头

        System.out.println(s5.equalsIgnoreCase(s6));//忽略大小写比较字符串是否相等

        System.out.println(s5.isEmpty());//判断字符串是否为空

        String phone = "15527678756";
        String regex = "^1(3|4|5|7|8)\\d{9}$";
        System.out.println(phone.matches(regex));

        String s = "Hello world";
        System.out.println(s.charAt(4)); //获得指定索引处的字符

        System.out.println(s.length());  //获得字符串的长度
        //111为o的ASCII码
        System.out.println(s.indexOf(111)); //搜索指定字符第一次出现在字符串的位置

        System.out.println(s.indexOf("lo"));//搜索指定字符串第一次在字符串中出现的位置

        System.out.println(s.lastIndexOf(111));//搜索指定字符串最后一次出现在字符串的位置

        System.out.println(s.lastIndexOf("l"));//搜索指定字符串最后一次出现在字符串的位置

        
        String s0 ="张三/男/23/湖北省/程序员";
        String[] s01 = s0.split("/");   //给定一个正则表达式分割目标字符串,返回一个数组
        System.out.println(Arrays.toString(s01));

        System.out.println(s0.substring(8));  //从指定索引处截取,到末尾结束
        System.out.println(s0.substring(8,11));//从指定索引处开始截取,到指定位置结束(不包括结束位置)

        String s7 = "    张三     ";
        System.out.println(s7.trim());      //去除字符串首尾的空格

        System.out.println("---------------------------------");
        String hello = "hello world";
        String hello2 = "HELLO WORLD";
        System.out.println(hello.toUpperCase());
        System.out.println(hello2.toLowerCase());


        System.out.println( hello.replace("l","a"));  //替换字符串中的指定字符
        System.out.println(hello.replace("lo","ac"));

        String number ="\\d";
        String s8 = "dposajfoifjdsofk201u4nfpo43u9rh";
        //使用正则匹配替换字符串
        System.out.println(s8.replaceAll(number,"a"));

        //将字符串转为字符数组
        System.out.println(Arrays.toString(hello2.toCharArray()));


        String mu = "姓名:吴亦凡,性别:不详,电话:13452348952";

         String s11=mu.replace("吴亦凡","***");
         String s12=s11.replaceAll("\\d","*");
        System.out.println(s12);
        String s21 ="qw";
        String s22 = "er";

        System.out.println(s21+s22);
    }

动态参数列表

有时不确定传递多少个参数,这时可以使用jdk1.5后提供的动态数组参数列表

public void m1(String... s){
        for(String s1:s){
            System.out.println(s1);
        }

    }

    public void m2(double d,int... s){
        for(int s1:s){
            System.out.println(s1);
        }

    }

注意:若有其它类型的参数,必须写在前面

四·StringBuffer&StringBuilder

String虽然很有用,但是有个弊端,它是一个不可变长度的串,如果在进行大量的字符串拼接操作的时候,string效率特别低,因此为了解决String不可改变长度的问题,提供了两个可变长度的字符串实现:

StringBuffer

StringBuilder

这两个可变长度的字符串都是基于charSequence实现,并且共享API

StringBuffer

它是jdk1.0中出现的可变长度的字符串实现,内部自带字符缓冲区,对于大量的字符串串拼接有较高效率,线程安全;具备多线程并发时同时访问能力,但是效率会受影响

StringBulider

它是jdk1.5中出现的可变长度的字符串实现,和是StringBuffer具有相同的构造和普通方法,适用于大量的字符串拼接操作,但是它是线程不安全的实现,在多线程并发访问的时候,可能会出现值不一致的情况,但是效率要高于StringBuffer。

常用方法

 StringBuffer  append()   将对应参数的字符串表示附加到序列中

StringBuffer   delete(int start , int end) 删除此序列的子字符串中的字符

StringBuffer    reverse()  将该序列反转

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值