栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java常用类----包装类、String类(含常用方法){String对象创建方法和内存布局、字符串特性}、StringBuffer类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java常用类----包装类、String类(含常用方法){String对象创建方法和内存布局、字符串特性}、StringBuffer类

目录
  • 包装类
    • 包装类和基本数据的转换
    • 包装类和String 类型的基本转换
    • Integer类和Character类的常用方法
    • 经典面试题
  • String类
    • String对象的创建方法和String的内存布局
      • intern()函数
    • 字符串特性及练习题
      • String a="abc"+"hello"常量相加和String a=b+c变量相加(四部怎么走?)的区别
      • 结合传参机制,考虑创建String的内存布局
    • String常用方法
  • StringBuffer
    • StringBuffer的构造方法
    • String与StringBuffer的相互转换
      • String—>StringBuffer
      • StringBuffer->String
    • StringBuffer类常用方法
    • 练习题

包装类

从Byte开始到Double所以黑字的父类都是Number

包装类和基本数据的转换

演示包装类和基本数据类型的相互转换,这里以int和 Integer演示。

  1. jdk5前的手动装箱和拆箱方式,装箱:基本类型->包装类型,反之,拆箱
  2. jdk5以后(含jdk5)的自动装箱和拆箱方式
    3)自动装箱底层调用的是valueOf方法,比如Integer.valueOf(0
    以Integer和int 的相互转换举例
public class Test {
    public static void main(String[] args) {
        //JDK5.0以前采用手动装箱拆箱
        int n1=100;
        //手动装箱
        Integer integer=new Integer(n1);
        Integer integer1= Integer.valueOf(n1);
        //手动拆箱
        int n2=integer.intValue();
        //JDK5.0含5.0以后使用自动装拆箱
        Integer integer2=n1;
        //自动拆箱
        int n3=integer2;

    }
}

包装类和String 类型的基本转换

以Integer和String 相互转换举例:

public class Test {
    public static void main(String[] args) {
        //包装类和String 的互相转换
        Integer i=100;
        //包装类--->String 方法一:
        String string =i+"";
        //方法二:
        String string1 =i.toString();
        //方法三:
        String string2= String.valueOf(i);//valueOf()括号里面放 Object object
        //String ----->包装类
        String string3="1234";
        Integer integer1=Integer.parseInt(string3);//parseInt()得到int ,再自动装箱为包装类
        Integer integer2=new Integer(string3);//构造器
    }
}
Integer类和Character类的常用方法

经典面试题


源码解读:
只要是 new Integer()出来的一定是不同对象
只要有基本数据类型判断值是否相等

String类



特别注意value[ ]是一个final类型,不可修改(这句话很容易搞混),不是说你字符数组value[ ]中的内容不能变化,
而是value不能指向新的地址,比如下面的value=v2就指向新地址

String对象的创建方法和String的内存布局

法一:String s=“hsp”;
法二:String s=new String (“hsp”);

intern()函数

最终返回的是常量池中对象的地址
调用intern()函数,假如常量池中已经有了等于String对象的字符串则返回池中的字符串
否则就创建一个String对象添加到池中,并返回该对象的引用

字符串特性及练习题

String a=“abc”+"hello"常量相加和String a=b+c变量相加(四部怎么走?)的区别

创建了两个对象

只创建了一个对象

创建了三个对象
String a=“abc”+“hello”;常量相加:看得是池
String a=b+c;变量相加看得是堆


注意创建String c的四部曲是怎么走的,注意变量相加和常量相加的区别

public class String_Test {
    public static void main(String[] args) {
        String a="hello";
        String b="abc";
        //debug得出步骤
        //1、创建一个 StringBuilder sb=new StringBuilder();
        //2、sb.append("hello");
        //3、sb.append("abc");
        //4、String c=sb.toString();
        最后其实是c指向堆中的对象(String) value[] ->池中"helloabc"
        String c=a+b;
        String d="helloabc";
        System.out.println((c==d));
        String e="hello"+"abc";
        System.out.println(d==e);//e指向常量池

    }
}

结合传参机制,考虑创建String的内存布局


!!!重点这题做错了
考到了前面的基本数据类型和引用类型传参机制(可以看Java面向对象编程(基础)篇内容)

String常用方法

equals //区分大小写,判断内容是否相等
equalslgnoreCase//忽略大小写的判断内容是否相等
length//获取字符的个数,字符串的长度
indexOf//获取字符在字符串中第1次出现的索引,索引从0开始,如果找不到,返回-1
lastIndexOf//获取字符在字符串中最后1次出现的索引,索引从0开始,如找不到,返回-1
substring() //截取指定范围的子串
substring(int index)//从index开始截取字符串剩余所有字符
substring(int start,int end)//注意左闭右开
trim//去前后空格
charAt:获取某索引处的字符,注意不能使用Str[index]这种方式.
toUpperCase//转化为大写
toLowerCase
concat//拼接
replace替换字符串中的字符
split 返回一个数组,分割字符串,对于某些分割字符,我们需要转义比如| 等
案例: String poem =“锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦”;和文件路径.
compareTo //比较两个字符串的大小

toCharArray l/转换成字符数组
format //格式字符串,%s字符串%c字符%d整型%.2f 浮点型案例,将一个人的信息格式化输出.

StringBuffer

==注意StringBuffer存放字符串的数组char [ ]value 不再是final属性的了,所以存放在堆中
String 存放字符串的数组final char [ ] value 是final属性的,所以存放在常量池里 ==

StringBuffer的构造方法

1、StringBuffer stringBuffer = new StringBuffer();//默认创建一个大小为16的 char[],用于存放字符内容
2、通过构造器指定 char[]大小
StringBuffer stringBuffer1 = new StringBuffer(100);
3、源码规定:通过给一个String创建StringBuffer,char[ ]大小就是 str.length() + 16
StringBuffer hello = new StringBuffer(“hello”);

String与StringBuffer的相互转换 String—>StringBuffer

String s = “hello”;
方式1:
StringBuffer b1 = new StringBuffer(s);
方式2:
StringBuffer b2 = new StringBuffer();
b2.append(s);

StringBuffer->String

方式1:
String s2 = b1.toString();//b1 [StringBuffer]
方式2:
String s3 = new String(b1);

StringBuffer类常用方法

1)增append
2)删delete(start,end)
3)改replace(start,end,string)
//将start----end间的内容替换掉,不含end
4)查indexOf //查找子串在字符串第1次出现的索引,如果找不到返回-1
5)插insert(int index)//在索引为index位置插入字符串,并且索引所在位置的字符需要自动往后移
6)获取长度length

练习题

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/294656.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号