包装类,String,StringBuilder

包装类

  1. double -----> Double

    基本数据类型----->引用数据类型--->继承关系

    byte Byte Number ----->Object

    short Short

    int Integer

    long Long

    float Float

    double Double Number ----->Object

    char Character Object

    boolean Boolean

2.为什么要引入包装类

  • 面向对象----操纵类,将基本数据类型封装成为对应的包装类,就是为了获取某些属性,方法。

  • 集合,特点:只能存放引用数据类型

3.是不是有了包装类,就不用基本数据类型?不是的,各有应用场合

  • 基本数据类型:形参,局部变量。优势,节省内存

4.Integer类

  • 使用Integer不需要导包 因为它是属于java.lang下的 父类为Number---->Object

  • 已实现的接口:Serializable,Comparable<Integer>

  • Integer底层就是一个int类型数据,就是对这个数据进行的封装 private final int value;

  public class 包装类 {
   public static void main(String[] args) {
       System.out.println(Integer.MAX_VALUE);
       System.out.println(Integer.MIN_VALUE);
       System.out.println(Integer.MAX_VALUE+1);//-2147483648
       System.out.println(Integer.MIN_VALUE-1);//2147483648
       //必须用有参构造创建,参数为int或者String
       Integer i1 = new Integer(12);
       Integer i2 = new Integer("12");//如果是"abc",会抛出数字格式异常
       //自动装箱:int--->Integer
       Integer i3 = 12;//反编译可得   Integer i3 =Integer.valueOf(12);
       //自动拆箱:Integer--->int
       int i4 = i1;
?
       //各种方法
       System.out.println(i1.compareTo(i2)); // return (x<y)? -1:((x==y)?0:1);   小于-1,等于0,大于1
       System.out.println(i1.equals(i2));//true
       System.out.println(i1 == i2);//flase
       Integer i5=12;
       Integer i6=12;
       Integer i7=129;
       Integer i8=129;
       System.out.println(i5 == i6);//true
       System.out.println(i7 == i8);//false
       //JDK1.5之后,对自动装箱来说,要是在-128,127中,直接返回给你数(从内部类中的一个缓存数组中获取)
       //如果没在-128,127中,要开辟空间
       int i9 = i1.intValue();//Integer--->int
       int i10 = Integer.parseInt("13");//String--->int
  }
}

String

  • String是常量,不可变 public final class String

  • String中通过char数组储存字符串 private final char value[];

  
public class String123 {
   public static void main(String[] args) {
       String s1 = "你好,世界!";//s1.value[你,好,,,世,界,!]
       System.out.println(s1);
       String s2 = new String("abc");
       String s3 = new String(new char[]{‘a‘,‘c‘,‘b‘});
       System.out.println(s1.length());//6
       System.out.println(s1.isEmpty());// return value.length == 0;
       System.out.println(s1.charAt(1));//好
       
       String s4 = new String("abcdefg");
       int num = s4.indexOf(‘f‘);//5
       
       String s5 = s4.substring(2);
       System.out.println(s5);//cdefg
       System.out.println(s4.substring(2,5));//[2,5)--cde
       
       String s6 = s2.concat(s4);
       System.out.println(s6);//abcabcdefg
?
       String s7 = s6.replace(‘a‘, ‘k‘);
       System.out.println(s7);//kbckbcdefg
       
       String s8 ="     a b     c ";
       System.out.println(s8.trim());//去掉首尾空格符
  }
}

StringBuilder

  • char[] value; int count;//value存储字符串,count 记录字符使用的数量

  
public class StringBuilder123 {
   public static void main(String[] args) {
       String str = "abc";//不可变字符串
       StringBuilder sb1 = new StringBuilder();//可变字符串 默认为长度为16的数组
       StringBuilder sb2 = new StringBuilder(23);
       StringBuilder sb3 = new StringBuilder("abc");//创建一个3+16长度的数组,将参数数组copy进该对象数组中,count+=3
       sb3.append("kkkkk");//abckkkk   数组长度为19 count+=5
       sb3.append("tttttttttttttttttttttt");//超出原有长度,创建新数组,并将数据拷贝入新数组,长度为所需x*2+2.value指向新数组 count=x
       
       //增删改查
       StringBuilder s1 = new StringBuilder("nihaoyashijie");
       s1.append("你好");//增 nihaoyashijie你好
       s1.delete(3,6);//删除在[3,6)上的字符   nihashijie你好
       s1.deleteCharAt(10);//删除位置在10的字符 nihashijie好
       StringBuilder s2 = new StringBuilder("123456789");
       s2.insert(3,"K");
       System.out.println(s2);//改 插入 123K456789
       s2.replace(3,5,"你好呀");
       System.out.println(s2);//改 替换   123你好呀56789
       s2.setCharAt(3,‘!‘);
       System.out.println(s2);//改   替换   123!好呀56789
?
       for (int i = 0; i < s2.length(); i++) {
           System.out.print(s2.charAt(i)+" ");//查
      }
       System.out.println();
       String s3 = s2.substring(2,4);//截取[2,4)返回的是一个新的String,对StringBuilder没有影响
       System.out.println(s3);
       System.out.println(s2);
  }
}

StringBuilder与StringBuffer区别联系

  • StringBuilder JDK 1.5 效率高 线程不安全

  • StringBuffer JDK 1.0 效率低 线程安全

包装类,String,StringBuilder

上一篇:centos7部署goland环境


下一篇:前后端分离入门(5) 数据对接