首页 > 其他分享 >动力节点—day06

动力节点—day06

时间:2022-10-31 17:12:38浏览次数:53  
标签:动力 java String int System day06 字符串 Integer 节点

常用类

  • String
    • String表示字符串类型,属于引用数据类型,不属于基本数据类型
    • 在Java中随便使用双引号括起来的都是String对象,例如“abc”、“def”,“hello world!”,这是三个String对象
    • Java中规定,双引号括起来的字符串,是不可变的,也就是说“abc”,从出生到最终死亡,都是可不变的
    • 在JDK中双引号括起来的字符串,”abc“、”def“都是存储在字符串常量池中,因为字符串在实际的开发中使用太频繁了,放在常量池中,可以提高效率

       s1创建了1个对象,s2创建了2个对象,s3创建了1个对象

    • 比较字符串时,用==不保险,应该用equals ,因为String已经重写了equal

       

    • 关于String类的几个常用构造方法
      • 第一个:String s=new String(" ");
      • 第二个:String s=" ";最常用
      • 第三个:String s=new String(char数组);
      • 第四个:String s=new String(char数组,起始下标,长度);
      • 第五个:String s=new String(byte数组);
      • 第六个:String s=new String(byte数组,起始下标,长度);
    • String类的charAt方法
      • charAt(int index) 返回指定索引处的字符
    • String类的compareTo方法
      • 字符串大小的比较不能使用>、<,必须使用compareTo方法
    • String类的contains方法
      • 用于判断字符串是否包含了某个子字符串
    • String类的endsWith方法
      • 判断当前字符串是否以某个字符串结尾
    • String类的startsWith方法
      • 判断当前字符串是否以某个字符串开始
    • String类的equals方法
      • 用于判断两个字符串是否相等,不能使用双等号
    • String类的equalsIgnoreCase方法
      • 判断两个字符串是否相等,忽略大小写
    • String类的getBytes方法
      • 将字符串转换成byte数组
    • String类的indexOf方法
      • 判断指定子字符串在当前字符串中第一次出现处的索引
    • String类的isEmpty方法
      • 判断字符串是否为空:”“.isEmpty();—— true        " ".isEmpty();—— false 
      • 判断数组长度是length属性,判断字符串长度是length()方法
    • String类的lastIndexOf方法
      • 判断指定字符串在当前字符串最后一次出现的索引
    • String 类的replace(char oldChar,char newChar)
      • 通过新字符,替换旧的字符
    • String 类的replace(CharSequence target,CharSequence replacement)
      • 通过新字符串,替换旧的字符串
    • String类的split方法
      • 用于切割字符串,返回字符串数组类型
    • String类的substring方法
      • 截取字符串
      • “”.subString(7);  substring(7,10)7包含,但10不包含
    • char[]    toCharArray()
      • 将字符串转换成char数组
    • String类的toLowerCase(toUpperCase)方法
      • 将字符串数组转化成小写(大写)
    • String类的trim方法
      • 去除字符串前后空白
    • String类只有一个方法是静态的,不需要new对象,这个方法叫valueOf
      • 将非字符串,转换成字符串
      • printIn方法会将值通过valueOf方法转换为字符串类型的,然后调用字符串重写的toString方法进行输出
  • StringBuffer
    • 因为java的字符串是不可变的,每一次拼接都会产生新的字符串,这样会占用大量的 方法区内存,造成内存空间的浪费,“abc”,“bc”,“abcbc”就创建了3个字符串对象
    • 所以以后需要进行大量的字符串拼接操作,建议使用JDK自带的
      • java.lang.StringBuffer
      • java.lang.StringBuilder
      • StringBuffer中的方法都有:synchronized关键字修饰,表示StringBuffer在多线程环境下运行时时安全的
      • StringBuilder中的方法没有:synchronized关键字修饰,表示StringBuilder在多线程环境下运行时时不安全的
    • String是不可变的,StringBuffer和StringBuilder是可变的,因为虽然底层都是一个byte类型的数组,但是String用final关键字修饰了,所以指向一个数组之后就不能再指向别的数组了,并且StringBuffer/StringBuilder的初始化容量是16,当存满之后会自动扩容,底层调用了数组拷贝的方法,适合字符串的频繁拼接操作
  • 基础类型对应的8个包装类
    • 可能有这种需求,调用一个方法需要传递一个数字进去,但是参数是Object类型,但数字属于基本数据类型,这时候就可以传一个包装类进去
    • Java中为8种基本数据类型又准备了8种包装类型,8种包装类属于引用数据类型,父类是Object
    • 基本数据类型:byte、short、int、long、float、double、char
    • 包装类型:java.lang.Byte(父类Number)、java.lang.Short(父类Number)、java.lang.Interger(父类Number)、java.lang.Long(父类Number)、java.lang.Float(父类Number)、java.lang.Double(父类Number)、java.lang.Boolean(父类Object)、java.lang.Character(父类Object)
    • 八种包装类中,其中有六个都是数字对应的包装类,他们的父类都是Number,Number是一个抽象类,无法实例化对象
    • 装箱:将基本数据类型转化成引用数据类型     拆箱:将引用数据类型转化成基本数据类型
    • Number类中有这样的方法:
      • byte byteValue()
      • 作为一个 byte返回指定数字的值,这可能涉及舍入或截断。  
      • abstract double doubleValue()
      • 作为一个 double返回指定数字的值,这可能涉及舍入。
      • abstract  float     floatValue()
      • 作为一个 float返回指定数字的值,这可能涉及舍入。 
      • abstract   int        intValue()
      • 作为一个 int返回指定数字的值,这可能涉及舍入或截断。 
      • abstract    long    longValue()
      • 作为一个 long返回指定数字的值,这可能涉及舍入或截断。  
      • short     shortValue()
      • 作为一个 short返回指定数字的值,这可能涉及舍入或截断。  
      • Integer类型的包装类的构造方法有两个
        • Interger(int)
        • Interger(String)
        • 其余六种数字类型的包装类都类似
    • 通过访问包装类来获取最大值和最小值(除了Boolean类型)
      • Integer.MAX_VALUE——获取int的最大值
      • Integer.MIN_VALUE——获取int类型的最小值
    • JDK1.5之后支持自动装箱和自动拆箱
    • Integer x=100;//自动装箱(Integer x=new Integer(100);)
    • int y=x;//自动拆箱int y=x.IntValue(x);
      Integer z=1000;
      System.out.println(z+1);//发送了自动拆箱
      结果1001

      自动拆箱的好处就是,方便编程

    • Integer integer=1000;
      Integer integer2=1000;
      System.out.println(integer==integer2);
      结果false

      integer和integer2还是引用数据类型,只有发生+-*/等运算时才会发生自动拆箱

    • java中为了提高程序的执行效率,将[-128,127]之间的所有包装对象提前创建好,放到了一个方法区的“整数型常量池”当中了,目的是只要用这个区间 的数据不需要再new了,直接从整数型常量池当中取出,双等号对于引用数据类型永远比较的都是地址,其实常量池就是方法区开辟的一片缓存,优点是:效率高,缺点是:耗费内存
      Integer s1=128;
      Integer s2=128;
      System.out.println(s1==s2);//false
      Integer s3=127;
      Integer s4=127;
      System.out.println(s3==s4);//true

      缓存机制要重视,大型项目中的重要优化手段就是:catch缓存机制

    • Integer类静态方法parseInt(String)
      • int retValue=Integer.parseInt("123");将字符串转换成int类型的变量
      • 传入的字符串必须是数字类型的,否则发生NumberFormatException运行时异常
      • 除了Character类型都有该方法
  • 日期相关类
    • java.util.Data
    • Date nowTime=new Date();//获取系统当前时间,精确到毫秒,直接调用无参构造方法就行,toString方法被重写
    • simpleDateFormat类是java.text包下的,专门负责日期格式化的
      • yyyy 年(年是四位)
      • MM月  (月是两位)
      • dd 日
      • HH时
      • mm分
      • ss秒
      • SSS 毫秒(毫秒3位,最高999,1000毫秒代表1秒)
    • Date date=new Date();
      //日期进行格式化
      //simpleDateFormat类是java.text包下的,专门负责日期格式化的
      SimpleDateFormat simpleDateFormat=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss SSS");
      String string=simpleDateFormat.format(date);
      System.out.println(string);

      2022-10-28 19:29:35 922

      String time="2022-10-28 17:43:31 696";
      Date date2=simpleDateFormat.parse(time);
      System.out.println(time);

      2022-10-28 17:43:31 696

      注意:字符串的日期格式要和SimpleDateFormat指定的日期格式要一样,不然会出现异常java.text.ParseException

    • System.currentTimeMillis() 返回的是自1970年1月1日,到系统当前时间的总毫秒数
  • 总结目前所学习的System类的方法、
    • System.out out是System的成员变量,返回一个PrintStream类型的变量,然后调用该类的println方法
    • System.exit(int)  终止Java虚拟机的运行
    • System.currentTimeMillis(),返回的是自1970年1月1日,到系统当前时间的总毫秒数
    • System.arrayCopy(),System.arraycopy(src, srcPos, dest, destPos, length);进行数组的赋值
    • System.gc(),用来对堆中的垃圾进行回收
  • 数字格式化
    • java.text.DecimalFormat专门负责数字格式化的
    • 数字的格式:#代表任意数字   ,代表千分位,.代表小数点,0代表不够时补零
  • 处理高精度
    • java.math.BigDecimal精度极高,专门用在财务软件中,double的精度还是不够
  • Random
Random random=new Random();
int num=random.nextInt();
System.out.println(num);
    • random.nextInt(101),表示可以取到0-101之间的随机正整数,但不包括101
  • Enum
    • 枚举:一枚一枚可以列举出来的,才建议使用枚举类型
    • 枚举编译之后也是生成class文件
    • 枚举也是一种引用数据类型
    • 枚举中的值可以看作是常量
    • 结果只有两种情况,建议使用boolean类型,结果超过两种并且还是一枚一枚可以列举出来的,建议使用枚举
    • public enum enum2 {
      SPRING,SUMMER,AUTUMN,WINTER
      }
      switch (enum2.WINTER) {
          case SPRING:
              System.out.println("春天");
              break;
          case SUMMER:
              System.out.println("春天");
              break;
          case AUTUMN:
              System.out.println("春天");
              break;
          case WINTER:
              System.out.println("春天");
              break;
          }

      String支持String、int,也支持枚举,低版本的JDK只支持String、int,高版本的JDK还支持枚举,byte、short、char也可以,因为支持自动类型转换

 

 

 

标签:动力,java,String,int,System,day06,字符串,Integer,节点
From: https://www.cnblogs.com/wei-xin-yuan/p/16833048.html

相关文章