java常用类_1

包装类

包装类是把八大基本数据类型封装到一个类中,并提供属性和方法。

是为了更方便的操作基本数据类型,而不是取代基本数据类型。

Number 类

Number数值类型是byte、double、float、int、long 和 short类的抽象父类,提供把包装类转化成基本数据类型的方法(xxxValue)。

Integer

Integer是int基本数据类型的包装类,在Integer内部封装了一个final int value 的属性

常用方法:

1.构造方法

Integer(int value)

构造一个新分配的Integer对象,它表示指定的int值。

Integer(String s)

构造一个新分配的Integer对象,它表示String参数所指示的int值。

2.int<->Integer<->string

            //int->Integer

         Integer  i1 = new Integer(10);

         Integer  i2= Integer.valueOf(20);


            // Integer->int

         int a = i1.intValue();


         // String->Integer

         Integer  i3 = new Integer("30");

         Integer  i4= Integer.valueOf("40");


         //Integer->String

         System.out.println(i3.toString());



             // String->int

         int b= Integer.parseInt("50");


             //int->String

         String  str= Integer.toString(10);

         //String str2 = Integer.toString(8, 2);

         //System.out.println(str2);

3.Comparable接口

Comparable 表示具有比较能力,对象可比较大小,此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。

        a.compareTo(b)

在数字上比较 如果该 Integer 等于 Integer 参数,则返回 0 值;

如果该 Integer 在数字上小于 Integer 参数,则返回小于 0 的值; 

如果 Integer 在数字上大于 Integer 参数,则返回大于 0 的值; 


自动装箱和自动拆箱

把基本数据类型自动转化成对象的包装类的过程称为自动装箱(auto-boxing)

如         Integer  i = 10;     //Integer i=new Integer(10);

把包装类自动转化成对于的基本数据类型的过程称为自动拆箱(auto-unboxing)

如          int  a = i;              //int  a =i.intValue();

使得代码较为简便,但不要过于频繁使用拆装箱操作。


String 

String 类代表字符串。Java 程序中的所有字符串字面值(如"abc" )都作为此类的对象。

字符串本质上是一个字符数组,它们的值在创建之后不能更改,所以字符串是常量;

可以把字符串看出是字符数组的包装类,内部声明一个private final char value[];

    String a="abc";

    String b="abc";

  System.out.print(a==b);

     结果:true

原因:编译时,这两个"abc"被认为是同一个对象保存到了常量池中;运行时JVM则认为这两个变量赋的是同一个对象,所以返回true。

 String 对象是不可变的,可以共享。

通过字面量创建的字符串分配在常量区。

字符串常用方法

1.构造方法

byte[] bytes1= {97,98,99};

String str= new String(bytes1);

------------------------------------

byte[] byte2 = {-42,-48};

        String str3 = null;

        try {

            // 使用指定的字符集对字节序列进行解码

            str3 = new String(byte2,"GBK");

        }catch (UnsupportedEncodingException e) {

            e.printStackTrace();

        }

------------------------------------

对一个utf-8的字节序列进行解码

        byte[] byte3 ={-28,-72,-83,-28,-72,-83};

        try {

            // String str4 = new String(byte3, "UTF-8");

            String str4 = new String(byte3,0,3, "UTF-8");

        }catch (UnsupportedEncodingException e) {

            e.printStackTrace();

        }

--------------------------------------

通过字符数组构建字符串

        char[] c1 = {'a','b','c','中','国'};

        // String str5 = new String(c1);

        Stringstr5 = new String(c1,0,3);


2.字符串的比较

public static void main(String[] args) {

         // 【3】字符串比较

         String str1 = "abc";

         String str2 = "Abc";


         System.out.println(str1.compareTo(str2));

         // 忽略大小写比较

         System.out.println(str1.compareToIgnoreCase(str2));


         // 需求:请输入验证码

         /*String validCode = "a4Df";

         System.out.println("请输入验证码:"+validCode);

         Scanner sc= new Scanner(System.in);

         String  inputStr = sc.next();


         if(inputStr.compareToIgnoreCase(validCode)  == 0) {

              System.out.println("验证码正确");

         }else  {

              System.out.println("验证码错误");

         }*/


         System.out.println(str1.contentEquals(str2));

         System.out.println(str1.equals(str2));

         System.out.println(str1.equalsIgnoreCase(str2));

     }

3.查找、搜索字符串

public static void main(String[] args) {

        // 查找、搜索字符串中是否包含其他子串

        String str1 = "hello world";


        // 是否包含子串

        System.out.println(str1.contains("world"));


        System.out.println(str1.startsWith("he"));

        System.out.println(str1.endsWith("world"));

        System.out.println(str1.startsWith("ll", 2));


        // 需求:判断一个文件是否是png图片

        String fileName = "logo.png";

        if(fileName.endsWith(".png")) {

            System.out.println(fileName+"是一张图片");

        }



        // 查找字符串

        String str2 = "hello world hello";

        // 从左向右查找字符'o'第一次出现的位置,找到返回索引,没找到返回-1

        System.out.println(str2.indexOf('t'));

        System.out.println(str2.indexOf('o',5));

        // 从左向右查找字符串“ll”第一次出现的位置,找到返回索引,没找到返回-1

        System.out.println(str2.indexOf("ll"));

        System.out.println(str2.indexOf("ll",5));


        // 从右向左查找字符'o'第一次出现的位置,找到返回索引,没找到返回-1

        System.out.println(str2.lastIndexOf('o'));

        // lastIndex(char,fromIndex)

        // lastIndex(string);

        // lastIndex(string,fromIndex);

    }


4.格式化字符串

通过指定占位符(%开始)格式化字符串

                    %d                格式化整形

                    %f                 格式化浮点型

                    %.nf              格式化浮点型四舍五入保留n为小数

                    %c                格式化字符

                    %s                格式化字符串


         // 格式化字符串

         float price = 998.126f;

         int a  = 10;

         int b = 2;

         // 10 / 2 = 5


         String str1= String.format("%d / %d = %d", a,b,(a/b));

         System.out.println(str1);

         // 四舍五入保留两位小数

         String str2  =String.format("$%.2f", price);

         System.out.println(str2);

     }

5.把字符串按指定编码集编码成对于的字节序列

        //String str3 = "abc";

        String str3 = "中国";       

        // 使用默认的字符集(GBK)

        byte[] byte1 = str3.getBytes();

        System.out.println(Arrays.toString(byte1));


        //String str4 = "abc";

        String str4 = "中国";   

        // 使用utf8编码

        byte[] bytes2 = str4.getBytes("UTF-8");

        System.out.println(Arrays.toString(bytes2));

6.替换字符串

public static void main(String[] args)  {

         String str1 = "hello,world";

         String newStr1 = str1.replace('o', '8');

         System.out.println(newStr1);


         String newStr2 = str1.replace("ll", "");

         System.out.println(newStr2);


         // 需求:186-1234-2234

         String str3 = "186-1234-2234";

         System.out.println(str3.replace("-", ""));


         // 正则表达式专门用于验证字符串是否符合特定的格式。

         String str4 = "6764";

         // 验证str4是否输入的是一串数字

         boolean r = str4.matches("\\d+");

         System.out.println(r);


         // 需求:abc123te23daf去掉数字

         String str5 = "abc123te23daf";

        //String newStr5 = str5.replaceAll("\\d+","");

         String newStr5 = str5.replaceFirst("\\d+", "");

         System.out.println(newStr5);

}

7.拆分字符串

public static void main(String[] args)  {


         // 根据指定字符串拆分字符串

         String str1 = "abc-123";

         String[] arr = str1.split("-");

         System.out.println(Arrays.toString(arr));


         // 需求:请快速构建一个26个小写英文字母的数组

         String str2= "abcdefghijklmnopqrstuvwxyz";

         String[] arr2 = str2.split("");     

         System.out.println(Arrays.toString(arr2));


         // 根据正则拆分字符串

         String str3 = "abc123ta12asd";

         String[] arr3 = str3.split("\\d+");

         System.out.println(Arrays.toString(arr3));


         // 需求:请获取一个文件的文件名

         String fileName = "logo.png";

         String[]arr4 = fileName.split("\\.");

         System.out.println(Arrays.toString(arr4));

     }

8.求子串、大小写转换

public static void main(String[] args)  {

        //求子串

        String str1 = "abc123";

        // fromIndex:开始位置,endInde 结束的位置

        // 含头不含尾

        String sub1 = str1.substring(0, 3);

        System.out.println(sub1);


        String sub2 = str1.substring(3);

        System.out.println(sub2);



        // 大小写转换

        String str3 = "Abc";

        System.out.println(str3.toUpperCase());

        System.out.println(str3.toLowerCase());

    }

9.其他方法

public static void main(String[] args)  {

        // 去掉前导空格和后导空格

        String str1 = "  abc    ";

        String newStr1 = str1.trim();

        System.out.println(str1.length());


        // 获取字符串的字符数组

        char[] arr = str1.toCharArray();

        System.out.println(Arrays.toString(arr));


        // 把其他数据类型转化为字符串

        String str2= String.valueOf(10);

        System.out.println(str2);

    }

StringBuffer和StringBuilder


StringBuffer

StringBuffer是字符的可变容器。可以在程序运行过程中向容器中添加、删除、修改字符。

StringBuffer 本质上是一个字符数组的包装类,并提供了很多方法向这个字符数组中添加、删除、修改字符。

StringBuffer 是线程安全的

StringBuffer工作原理

StringBuffer 内部维护了一个字符数组,默认字符数组的长度是16.当开发者向这个字符数组中添加元素时,如果有额外空间,直接添加到数组中,如果没有额外空间,StringBuffer内部自动拓容。

拓容规则:当前容量*2+2,根据拓容的新空间,复制当前的数组内容到新数组中。

public static void main(String[] args) {

         String Buffersb = new StringBuffer();

         sb.append("a");

         sb.append("b");

         System.out.println(sb.capacity());


         sb.append("1234567890ABCD");

         sb.append('x');

         System.out.println(sb);

         System.out.println(sb.capacity());


         // 未来如果确定不再向sb中添加字符,

         // 优化内部的数组到指定的长度

         sb.trimToSize();

         System.out.println(sb.capacity());

     }


常用方法

public class Test01 {

     public static void  main(String[] args) {

         StringBuffer sb1 = new StringBuffer();

         // 【1】添加

         sb1.append("hello");

         sb1.append('d');


         // 返回字符串的长度

         System.out.println(sb1.length());

         // 返回容器的大小

         System.out.println(sb1.capacity());


         // 【2】删除

         //System.out.println(sb1);

         //sb1.delete(0, 5);

         //System.out.println(sb1);


         // 【3】insert(index,t) 在指定位置index添加t

         sb1.insert(0, "123");

         System.out.println(sb1);


         // 【4】修改

         sb1.setCharAt(0,  'A');

         System.out.println(sb1);


         // 【5】setLength

         sb1.setLength(0);

      // 清空容器内容

         sb1.append("中国");

         System.out.println(sb1);

     }

}

StringBuilder


StringBuiler就是为了缓解StringBuffer的执行效率低而产生的,但线程不安全。

两者工作原理与使用方法相似

你可能感兴趣的:(java常用类_1)