String、StringBuilder、StringBuffer的学习

1、stringBuilder 单线程 安全

package stringstudy;

import java.util.Arrays;

public class StringLearn {


    public static void main(String[] args) {

        //实现字符串的逆序
        String orginal="how are you!";
        //转换字符串orginal到stringBuilder 单线程安全
        StringBuilder stringBuilder=new StringBuilder(orginal);//可变字符序列
        //将一个StringBuilder对象中的字符序列反转,然后将反转后的结果转换为字符串并赋值给变量s。 
        //reverse()方法:序列原地反转
        String s= stringBuilder.reverse().toString();
        // 输出  s = !uoy era woh
        System.out.println("s = " + s);
}

2、StringBuffer 多线程

public static void main(String[] args) {        
         //使用 new StringBuffer(original) 构造函数,
         //将传入的 original 字符串转换为 StringBuffer 类型
        StringBuffer stringBuffer=new StringBuffer(orginal);//可变字符序列
        //将 StringBuffer 对象中的字符序列反转,然后将反转后的结果转换为字符串并赋值给变量 s1
        String s1 = stringBuffer.reverse().toString();
        System.out.println("s1 = " + s1);
}

3、字符串的反转

   public static void main(String[] args) {
        //字符串反转
        myRevers("hello are you ok!");}
     /**
     *字符串反转
     * @param str
     */
    public static void myRevers(String str){
        char [] charArray=str.toCharArray();//字符串转成字符数组
        int star=0,end=charArray.length-1;
        while (star<end){
            char c=charArray[star];
            charArray[star]=charArray[end];
            charArray[end]=c;
            star++;
            end--;
        }
        String s = new String(charArray);//字符数组转成字符串
        System.out.println("s = " + s);
    }

4、回文串的判断

    public static void main(String[] args) {
        System.out.println("回文串的判断");
        String res = isHuiWen("abcba")? "回文" : "不是回文";
        System.out.println("res = " + res);
}
    /**
     *回文串的判断
     * @param str
     * @return
     */
    public static Boolean isHuiWen(String str){
        //1.初始化开始结束值
        int left=0;
        int right=str.length()-1;
        //2.头尾判断
        while (left<right){
            if (str.charAt(left)!=str.charAt(right)){
                return false;
            }
            left++;
            right--;
        }
        return true;
    }

5、Arrays常见类的使用

    public static void main(String[] args) {
        System.out.println("---Arrays常见类的使用---");
        int [] arr={3,5,1,7,6,9,4};
        String s2= Arrays.toString(arr);//将数组转换为字符串
        System.out.println("s2 = " + s2);

        Arrays.sort(arr);//对数组进行原地排序

        String s3=Arrays.toString(arr);//将数组转换为其字符串表示形式,并赋值给变量 s3
        System.out.println("s3 = " + s3);

        //Arrays.binarySearch方法:在数组中查找值为5的元素,并将结果存储在变量i中
        int i=Arrays.binarySearch(arr,5);
        System.out.println("i = " + i);
}

6、Math类的数学计算

    public static void main(String[] args) {
        System.out.println("---数学类练习---");
        double pow =Math.pow(2,3);//计算一个数的幂
        System.out.println("pow = " + pow);
        double sqrt=Math.sqrt(5);//计算一个数的平方根
        System.out.println("sqrt = " + sqrt);
        double floor=Math.floor(5.3);//对一个小数进行向下取整
        System.out.println("floor = " + floor);
    }

7、练习:输入商品名称和商品价格,要求打印效果示例,使用前面学习的方法完成:
商品名 商品价格
手机 123,564.59//比如价格3,456,789.88
要求:价格的小数点前面每三位用逗号隔开,在输出。

    public static void main(String[] args) {
                Scanner scanner = new Scanner(System.in);
                System.out.println("请输入商品名称");
                String name = scanner.next();

                System.out.println("请输入商品价格");
                String price = scanner.next();

                System.out.println("商品的名称是:");
                System.out.println("name = " + name);

                System.out.println("商品的价格是:");
                //实现小数点左边每隔三位加一个小数点
                //使用new StringBuilder(price)构造函数
                StringBuilder stringBuilderPrice = new StringBuilder(price);
                //stringBuilderPrice.lastIndexOf(".")方法:从后向前搜索StringBuilder中的 
                //内容,返回最后一个小数点(.)的索引位置
                int i = stringBuilderPrice.lastIndexOf(".");
//  方法1
//  System.out.println("i = " + i);
//  StringBuilder insert = stringBuilderPrice.insert(i - 3, ",");//在指定索引位置插入逗号
//  System.out.println("insert = " + insert);//insert()方法:返回当前StringBuilder对象的引用

        //方法2
        //在字符串 price 的整数部分中插入千位分隔符
                //j = i-3:从小数点位置向前 3 位开始
                //j=j-3:每次循环后向前移动 3 位,继续插入逗号
                for (int j = i-3; j >0 ; j=j-3) {
                    //在索引j处插入逗号 ,,并返回修改后的StringBuilder对象
                    stringBuilderPrice=stringBuilderPrice.insert(j,",");
                }
                System.out.println("stringBuilderPrice = " + stringBuilderPrice);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值