【Java笔记-引用数据类型(对象类型)】

需要通过构造来实例化(new),实际存储的是对象的引用(指针)

字符串String

一、 定义

  • 定义格式:new(一般省略不写) String 变量名=“内容”
String str1 = "Hello";
//
String str2;
str2 = "Hello";
//
String str3 = new String("Hello");
String str4 = new String(str3);
//
char[] charArray = {'H','e','l','l','o'};
String str5 = new String(charArray);
  • 字符串的内容是不能改变的,它的值在创建后不能被更改。字符串存储与串池内。
  • 当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在,若不存在则创建新的字符串;若存在则复用。所以直接赋值可以节省内存(串池包含于堆内存,但串池和堆内存的地址要分开看)
  • new出来的不会复用,而是开辟新的空间。

二、 方法

String str = "12345";
str.charAt(pos);//返回str的第pos个元素
str.substring("123");
str.replace("123","abc");//将123替换为abc
str.toCharArray();//转换为char数组
str.startwith('a');//判断是否以a开头
str.toLowerCase();//把字符串中的大写字母转换为小写

StringBulider

  • 链式编程:在调用一个方法时,不需要用变量接收方法的结果,可以继续调用其他方法。

一、 构造
StringBuilder 变量名=new 构造函数;
构造函数
StringBuilder() value内容为空,并设置容量为16个字节;
StringBuilder(CharSequece seq) 使用seq初始化,容量在此基础上加16;
StringBuilder(int capacity) 设置特定容量;
StringBuilder(String str) 使用str初始化,容量str大小的基础上加16;
二、 方法

StringBulider sb = new StringBuilder();
sb.append("aaa").append("bbb").append("ccc");//在结尾添加字符串,链式编程
sb.length();//长度
sb.reverse();//反转
sb.toString();//转为字符串
sb.charAt(pos);//返回位置pos的元素
sb.delete(start,end);//删除从start到end的元素,包头不包尾
sb.deleteCharAt(pos);//删除第pos个元素


  • 底层原理

    • 字符串拼接时,如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串;若有变量参与,则会创建新的字符串,浪费内存
    • StringBuilder可提高效率,因为String拼接是将所有要拼接的内容都往StringBuilder中放,而直接用StringBuilder不会创建很多无用的空间,节省内存
    • ==号,比较基本数据类型时,比较的是数据值;比较引用数据类型时,比较的是地址值。
    • StringBuilder的长度:默认长度为16字节,若添加的内容长度小于16,直接存;添加的内容长度大于16会扩容(原来的容量*2+2);若扩容之后还不够,以实际长度为准。

StringBuffer

方法和StringBuilder一样,但更安全(多线程)

StringJoiner

如下所示,new StringJoiner()中的三个参数分别表示间隔、开始、结束符号,add进去的元素最终会以开始符号开头,元素之间为间隔符号,以结束符号结尾。

StringJoiner sj = new StringJoiner(",","{","}");
sj.add(str1);
sj.add(str2);
sj.add(str3);
System.out.println(sj);
//输出{str1,str2,str3}            

Integer

Integer类是基本类型int所对应的包装类,该类提供了多个方法,能在int类型和String类型之间相互转换,还提供了处理int类型时非常有用的其他一些常量和方法
一、 构造

Integer i1 = 123;
Integer i2 = new Integer("123");

二、 方法

  • String到int的转换
    String str = "-100";
    int num = Integer.parseInt(str);
    //或
    Integer i = new Integer(str);
    int num1 = i.intValue(); 
    
  • 转换为不同进制
int num = 6;
System.out.println("num的二进制:" + Integer.toBinaryString(num));
System.out.println("num的二进制:" + Integer.toString(num, 2));
System.out.println("num的八进制:" + Integer.toOctalString(num));
System.out.println("num的八进制:" + Integer.toString(num, 8));
System.out.println("num的十六进制:" + Integer.toHexString(num));
System.out.println("num的十六进制:" + Integer.toString(num, 16));
  • int转String
Integer.toString(int i);//效率更高
String.valueOf(int i);

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值