JAVASE基础-八大常用类

包装类WrapperType.java

针对八种基本数据类型相应的引用类型

boolean-Boolean

char-Character-Object

继承Object

byte-Byte-Number-Object

int-Integer

float-Float

short-Short

long-Long

继承Number继承Object

        //手动装箱
        int n1 = 100;
        Integer integer = new Integer(n1);
        Integer integer1 = Integer.valueOf(n1);
        //手动拆箱
        int i = integer.intValue();
 //After jdk5 use 自动装箱
        int n2 = 200;
        Integer integer2 = n2;//Integer.valueOf
        int n3 = integer2;//Integer.valueOf

三元运算符是一个整体

Integer

new出来的是两个对象,两个对象一定不相等。

 

自动装箱用Integer.valueOf()数据范围在-128~127。装箱后如果在范围中证明是一个对象,因此他们相等。

valueOf底层是从数组中找的,而正常new对象取得是不同的对象。

只要有基本数据类型,判断的就是值是否相等。

如果是new,底层采用的并不是valueOf(),不需要数据在从范围中。

String

String继承Object类

实现三个接口

1.Serialable

String类实现这个接口,说明String可以串行化(可以在网络中传输)

2.Comparable

说明String对象可以相互比较

3.CharSequence(字符序列)

主要是前两个接口比较重要

底层采用Unioncode编码,一个字符占两个字节

String是final类,即不能被其他类所继承

String本质还是一个char数组,有属性private final char value[];用于存放字符串内容

注意:value是一个final类型,不可修改(不是字符,而是value的地址)。

比如value指向过一个数据"tom"它就不可以再指向另一个对象,但是对象中的字符是可以继续更改的。

 

当我们把final去掉,就可以更改,但是不可以去掉

String对象的两种创建方式

1.直接赋值

String s = "daniel";

先在方法区中的常量池中创建,然后创建出一个地址,在栈中的主方法中指向常量池中的地址

2.调用构造器

String s = new String("daniel");

 先在堆里面开辟一个空间,value,然后在方法区里面找,找不到就创建,找到了堆直接指向常量池,创建之后在main方法中指向堆中地址,再指向常量池中创建的。

String中的equals被重写过,比较的是value数组,如果有一个不同,就不等。

public class String01 {
    public static void main(String[] args) {
        String a = "dal";
        String b = "dal";
        System.out.println(a.equals(b));
        //第二次创建b时直接指向a创建的对象,因此对比数组时相等
        System.out.println(a==b);
        //都是从栈指向常量池中的同一个地址

    }
    

==比较的是地址,equals比较的是指向的value数组

其中第一个直接赋值,第二个new对象的情况下,第二个在堆中开辟value,找到后堆中地址指向常量池。因此两个地址不同。即不是同一个对象。

 intern,当调用intern方法,会返回常量池中的地址

 如果在栈中有一个引用变量s1(对象)被创建,它首先指向常量池中先创建的字符串,这里是第一个对象,但是String是final类,不可改变其地址和内容,一旦想要改变其内容,需要在常量池中搜索是否包含该字符串,符合的化直接指向,不符合的话重新在常量池创建,指向后即创建了一个新的对象。

string常用方法

equals 判断数组中是否相同

equalsIgnorcase忽略大小写

lenth判断长度

indexOf获取字符字符串中第一次出现的位置,从0开始找不到-1,可以是字符或者字符串

lastIndexOf选取最后一个出现的字符,从·0开始,找不到-1

substring截取制定范围的字串,两个数字是范围

toUpperCase转换成大写

toLowCase转换成小写

concat拼接

replace替换,可以写两个内容在方法括号里,可以把前面的内容替换成后面的内容

split 在字符串中以split后的字符为标准,将字符串分割

StringBuffer

不用每次增删改查都更换地址,效率较高,因为有char[] value。而不是final类

capasity容量

构造器:

String和StringBuffer相互转化

方法:

增:append(追加)

删:delete

改:replace

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值