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

在这里插入图片描述

在这里插入图片描述

  • 坚持学习,终成大牛!


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部