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的执行效率低而产生的,但线程不安全。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,376评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,126评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,966评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,432评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,519评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,792评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,933评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,701评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,143评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,488评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,626评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,292评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,896评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,494评论 2 348

推荐阅读更多精彩内容

  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 3,310评论 0 9
  • 从网上复制的,看别人的比较全面,自己搬过来,方便以后查找。原链接:https://www.cnblogs.com/...
    lxtyp阅读 1,345评论 0 9
  • 在编写程序的过程中,不了避免的要用到字符串,所以String类的常用方法的用法是必须掌握的。学习一个类的使用方法最...
    Geg_Wuz阅读 1,249评论 0 4
  • 50道经典Java编程练习题,将数学思维运用到编程中来。抱歉哈找不到文章的原贴了,有冒犯的麻烦知会声哈~ 1.指数...
    OSET我要编程阅读 6,950评论 0 9
  • 所有的基本类型,都有对应的类类型 byte类型封装类Byte,short类型封装类Short,int类型封装类In...
    从小白到全栈阅读 230评论 0 0