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);
}