String类、BigDecimal类初探
文章目录
- 一 String的自我简介
- 1.1 抛砖引玉
- 1.1.1 图解
- 1.2 字符串常用方法总结
- 1.2.1 栗子
- 1.3 可变字符串
- 1.3.1 栗子
- 1.3.2 StringBuilder与String执行速度的对比探究
- 1.4 综合案例
- 二 BigDecimal初探
- 2.1 BigDecimal体会案例
一 String的自我简介
- 字符串是常量,创建之后不可改变
- 字符串字面值存储在字符串池中,可以共享
1.1 抛砖引玉
package String类;import java.util.Arrays;/*** @author 缘友一世* date 2022/10/12-17:10*/
public class TestString {public static void main(String[] args) {String name="hello";//hello常量存储于字符串池中name="zhouDa";//这一步并没有修改数据,而是重新开辟一个字符串String name2="zhouDa";//常量池中存在该字符,就直接使用存在的System.out.println(name==name2);//true//字符串的另外一种创建形式 new String()String str=new String("java");String str2=new String("java");//真实的情况是,并不会在堆中再次创建字符串,而是在常量池中创建,堆中只是简单的引用地址//所以不推荐使用==的方法进行,字符串的判断,推荐使用equals的方法System.out.println(str==str2);//falseSystem.out.println(str.equals(str2));//true
1.1.1 图解

1.2 字符串常用方法总结
| 函数定义 | 解释 |
|---|---|
| public int length() | 返回字符串的长度 |
| public char charAt(int index) | 根据下标获取字符 |
| (String public boolean contains tr) | 判断当前字符串中是否包含str |
| public char[] toCharArray() | 将字符串转为数组 |
| public int indexOf(String str) | 查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1。 |
| public int lastIndexOf(String str) | 查找字符串在当前字符串中最后一次出现的下标索引。 |
| public String trim() | 去掉字符串前后的空格 |
| public String toUpperCase() | 把字母小写转成大写 |
| public String toLoWerCase() | 把大写转成小写 |
| public boolean endWith(String str) | 判断字符串是否以str结尾 |
| public boolean startWith(String str) | 判断字符串是否以str开始 |
| public String replace(char oldChar,char newChar) | 将旧字符串替换成新字符串 |
| public String split(String str) | 根据str做拆分 |
1.2.1 栗子
System.out.println("========");//string常用方法String str3="java code,java is best programing language";//public int length() :返回字符串的长度,注意空格也会进行计算System.out.println(str3.length());//42//public char charAt(int index) :根据当前元素的下标获取元素System.out.println(str3.charAt(str3.length()-1));//e//public boolean contains(String str):判断当前字符串中是否包含strSystem.out.println(str3.contains("java"));//true//public char[] toCharArray():将字符串转为数组System.out.println(str3.toCharArray());//java code,java is best programing languageSystem.out.println(Arrays.toString(str3.toCharArray()));//[j, a, v, a, , c, o, d, e, ,, j, a, v, a, , i, s, ,// b, e, s, t, , p, r, o, g, r, a, m, i, n, g, , l, a, n, g, u, a, g, e]//public int indexOf(String str):查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1。System.out.println(str3.indexOf("java"));//0System.out.println(str3.indexOf("java",4));//10 从某个下标开始寻找// public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。System.out.println(str3.lastIndexOf("java"));//10System.out.println("========");//public boolean endWith(String str):判断字符串是否以str结尾//public boolean startWith(String str):判断字符串是否以str开始//trim() :去掉字符串前后的空格//toUpperCase() :把小写转成大写;toLoWerCase():把大写转成小写String content2=" hello world";System.out.println(content2.trim());System.out.println(content2.toUpperCase());System.out.println(content2.toLowerCase());String fileName=" hello.java";System.out.println(fileName.endsWith(".java"));System.out.println(fileName.startsWith(" "));System.out.println("========");String content="java is the best programing language.my god";//public String replace(char oldChar,char newChar);将旧字符串替换成新字符串System.out.println(content.replace("java","php"));//public String split(String str); 根据str做拆分//+表示可以出现多个空格String[] arr=content.split("[ ,]+");//[]使用逗号或者空格进行分割System.out.println(arr.length);for(String string :arr) {System.out.println(string);}//补充的方法 equalsIgnoreCase compareToSystem.out.println("-----");String s1="hello";String s2="HELLO";System.out.println(s1.equalsIgnoreCase(s2));String s3="abc";//a的ASCII的值为97String s4="xyz";//x的ASCII的值为120//依次比较字母的ASCII的差值System.out.println(s3.compareTo(s4));//以下的情况比较的是字符串的长度差String s5="abc";String s6="abcxyz";System.out.println(s5.compareTo(s6));}
}
1.3 可变字符串
- StringBuffer:可变长字符串,JDK1.0提供,运行效率慢、线程安全。
- StringBuilder:可变长字符串,JDK5.0提供,运行效率快、线程不安全。
1.3.1 栗子
package String类;/*** @author 缘友一世* date 2022/10/12-20:53*/
/*
* StringBuffer和StringBuilder的使用
* 和String的区别
* 1.效率比String高
* 2.比String节省内存
* */
public class Demo02 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();//1 append();追加sb.append("java世界第一");System.out.println(sb.toString());sb.append("java真香");System.out.println(sb.toString());sb.append("java不错");System.out.println(sb.toString());//2 insert();sb.insert(0,"最前面");System.out.println(sb.toString());//3 replace();sb.replace(0,3,"hello");System.out.println(sb.toString());//4 deletesb.delete(0,5);System.out.println(sb.toString());//5 清空sb.delete(0,sb.length());System.out.println(sb.length());}
}

1.3.2 StringBuilder与String执行速度的对比探究
package String类;/*** @author 缘友一世* date 2022/10/12-21:12*/
//StringBuffer和StringBuilder
public class Demo03 {public static void main(String[] args) {//开始时间long start = System.currentTimeMillis();String str="";for(int i=0;i<50000;i++) {str+=i;}long end = System.currentTimeMillis();System.out.println("String用时:"+(end-start)/1000.0);start= System.currentTimeMillis();StringBuilder sb = new StringBuilder();for(int i=0;i<50000;i++) {sb.append(i);}end=System.currentTimeMillis();System.out.println("StringBuilder用时:"+(end-start)/1000.0);}
}

1.4 综合案例
已知String str=‘this is a text”:
1.将str中的单词单独获取出来
2.将str中的text替换为practice
3.在text前面插入一个easy
4.将每个单词的首字母改为大写
package String类;
/*** @author 缘友一世* date 2022/10/12-20:01*/
public class DemoString {public static void main(String[] args) {/** 需求:已知String str=‘this is a text”:1.将str中的单词单独获取出来2.将str中的text替换为practice3.在text前面插入一个easy4.将每个单词的首字母改为大写* */String str="this is a text";String[] str2=str.split(" ");System.out.println("将str中的单词单独获取出来");for(String x:str2) {System.out.println(x);}String str3=str.replace("text","practice");System.out.println("将str中的text替换为practice");System.out.println(str3);String str4=str.replace("text","easy text");System.out.println("在text前面插入一个easy");System.out.println(str4);String str5="";for(int i=0;i<str2.length;i++) {char first=str2[i].charAt(0);//把第一个字符转成大写char upperFirst=Character.toUpperCase(first);String news =upperFirst+str2[i].substring(1);//System.out.println(news);str5+=news=" ";}System.out.println("将每个单词的首字母改为大写");System.out.println(str5);}
}

二 BigDecimal初探
- 引子:float和double都是近似的小数,并不是准确的小数。
- 大的浮点数精确计算。
2.1 BigDecimal体会案例
package String类;import java.math.BigDecimal;/*** @author 缘友一世* date 2022/10/12-21:24*/
//BigDecimal的使用
public class Demo04 {public static void main(String[] args) {//double 近似存储double s1=1.0-0.9;System.out.println(s1);//0.09999999999999998double result=(1.4-0.5)/0.9;//0.9999999999999999System.out.println(result);//BigDecimal 大的浮点数精确计算BigDecimal bd1 = new BigDecimal("1.0");BigDecimal bd2 = new BigDecimal("0.9");BigDecimal res;//加法res=bd1.add(bd2);System.out.println(res);//减法res=bd1.subtract(bd2);System.out.println(res);//乘法res=bd1.multiply(bd2);System.out.println(res);//除法res=new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));System.out.println(res);res=new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);System.out.println(res);}
}


- 坚持学习,终成大牛!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
