当前位置: 代码迷 >> 综合 >> StringBuffer And StringBuilder线程安全与不安全And八大基本封装类型
  详细解决方案

StringBuffer And StringBuilder线程安全与不安全And八大基本封装类型

热度:96   发布时间:2023-12-06 02:32:44.0

1.StringBuffer和StringBuilder

(1)类,而且与String一样,都是可以用来定义字符串的。
            (2)区别:String定义的字符串是固定的,而这2个类是可变字符串
           (3)StringBuffer和StringBuilder定义时只能通过构造函数定义不能直接定义
           (4)StringBuffer和StringBuilder的区别
                   StringBuffer:线程安全
                  StringBuilder:线程不安全
         (5)三者之间都会存在共有的方法

1.String 与StringBuffer 互转

StringBuffer和StringBuilder的定义方式!!

StringBuffer sb = new StringBuffer("我是谁");System.out.println(sb);

StringBuffer sb = new StringBuffer("我是谁");

sb的类型:StringBuffer类型

需求:StringBuffer类型转换为String类型

String str = sb.toString();//永远不要记等于符号左边的代码 ctrl+1System.out.println(str);

需求:String类型--->StringBuffer类型

String name = "dengyankang";//通过构造函数直接可以转换StringBuffer sb2 = new StringBuffer(name);

2.与String不同的方法有下这几个

1.append末尾追加类容!!

StringBuffer sb = new StringBuffer("dengyankang");sb.append("liuxiangyang");追加的类容System.out.println(sb);

2.insert在指定的索引位置处添加指定类容!

StringBuffer sb = new StringBuffer("dengyankang");
sb.insert(2, "dfffd");在指定的下标2位置开始加入后面的值 dfffdSystem.out.println(sb);

3.delete 删除指定位置到指定位置的数据

StringBuffer sb = new StringBuffer("dengyankang");
sb.delete(2, 5);指定从下标2开始删除到下标5System.out.println(sb);

4.区间替换 replace

StringBuffer sb = new StringBuffer("dengyankang");
sb.replace(0, 4, "tang");0-4替换成tang  输出结果 tangyankangSystem.out.println(sb);

5.反转 倒过来输出 reverse

StringBuffer sb = new StringBuffer("dengyankang");
sb.reverse();System.out.println(sb);

StringBuilder用法一模一样 区别就一个线程安全一个线程不安全!!

!定义方法

	StringBuilder sb2 = new StringBuilder();

2.基本类型的封装类 !

    8大基本数据类型作用:仅仅只用来定义变量规则类型,
         *             每一个基本类型在Java中提供了一个管理类来管理这些类型的使用。
         *         基本类型                封装类
         *         byte                        Byte
         *         short                       Short
         *         int                            Integer --------
         *         long                         Long
         *         float                         Float
         *         double                      Double
         *         char                          Character--------
         *         boolean                     Boolean

描述连个 integer 与 character

1.封装类的优质 

1.可以直接查看 存储的最大范围与最小范围还

System.out.println(Byte.MIN_VALUE);最小存储System.out.println(Byte.MAX_VALUE);最大存储

1.2直接求最大最小值

System.out.println(Integer.min(12, 1));最小值
System.out.println(Integer.min(12,1);最大值

1.3封装类也可以用来定义变量

Integer i = 10;int a = 10;System.out.println(i == a);//trueInteger b = new Integer(10);System.out.println(i == b);//false因为b integer是新建出来的比的是内存位置所以不相等Integer c = new Integer(10);System.out.println(b == c);//falseInteger d = 10;System.out.println(i == d);//true

2.Integer封装类的常用方法

参数:int    将int--->Integer

Integer valueOf = Integer.valueOf(10); 10 int类型

参数:String   将String--->Integer   数字型的字符串变量

Integer valueOf2 = Integer.valueOf("123");注意不能有中文与英文 

通过进制的方法来实现将字符串(数字型)转成int

int parseInt = Integer.parseInt("123"); String --int

2.1玩一下进制
       进制:二进制   八进制   十进制   十六进制(10以上的数字使用a描述依次类推abcdef)
       二进制:电脑
       十进制:生活中的一切数据

        10的二进制String binaryString = Integer.toBinaryString(10);System.out.println(binaryString);10的八进制String octalString = Integer.toOctalString(10);System.out.println(octalString);10的十六进制System.out.println(Integer.toHexString(10));1010int parseInt = Integer.parseInt("1010", 2);十二进制System.out.println(parseInt);System.out.println(Integer.parseInt("12", 8));12的8进制System.out.println(Integer.parseInt("a",16));a的16进制System.out.println(Integer.parseInt("12"));//12注意事项:如果parseInt第二个参数没有,默认将参数1当做成10进制数据自动转换

3.Character:代表的是char的封装类

判断的方法

        System.out.println(Character.isUpperCase('A'));//判断大写System.out.println(Character.isLowerCase('a'));//判断小写System.out.println(Character.isDigit('9'));//判断是否数字System.out.println(Character.isTitleCase("mynameiszz".charAt(0)));System.out.println(Character.isLetter('7'));//判断是否是字母

要求:统计一个字符串中包含多少数字,多少符号,多少大写字母,多少小写字母(提示:包装类)

public static void work5() {System.out.println("请你输入一个字符串:");String ii=sc.next().trim();int ch=0;//数字int dx=0;//大写int xx=0;//小写int zf=0;//符号System.out.println(ii);for (int i = 0; i < ii.trim().length(); i++) {char uu=ii.charAt(i);if(Character.isDigit(uu)) {ch++;}if(Character.isUpperCase(uu)) {dx++;}if(Character.isLowerCase(uu)) {xx++;}if(!Character.isDigit(uu)) {if(!Character.isLetter(uu)) {zf++;}}
//			if(Character.isSpace(uu)) {
//				zf++;
//			}}System.out.println("数字有:"+ch+"个\n"+"大写有:"+dx+"个\n"+"小写有:"+xx+"个\n"+"符号有"+zf);}

数字类使用Math

System.out.println(Math.PI);  圆周率3.141592653589793System.out.println(Math.abs(-12));  绝对值System.out.println(Math.round(12.89));  四舍五入System.out.println(Math.random());  随机数,随机数生成的数字智能介于0-1之间//0-9double sj = Math.random() * 10;System.out.println(Math.floor(sj));  向下取整

系统 功能打开计算机某应用    Runtime类 运行时   构造函数私有化了

实例化对象

Runtime rt = Runtime.getRuntime();

使用方法

try {rt.exec("calc");打开计算机 rt.exec("D:\\software\\application\\CloudMusic\\CloudMusic\\cloudmusic.exe");打开网易云 地址 根据自己电脑来rt.exec("shutdown -s -t 100000");关机 后面是秒数rt.exec("shutdown -a");取消关机} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}

  相关解决方案