JAVA包装类和内部类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA包装类和内部类相关的知识,希望对你有一定的参考价值。

一:基本数据类型的包装类
Java语言针对所有的基本数据类型都提供了对应的包装类
基本数据类型 包装类
byte(字节) java.lang.Byte
char(字符) java.lang.Character
short(短整型) java.lang.Short
int(整型) java.lang.Integer
long(长整型) java.lang.Long
float(浮点型) java.lang.Float
double(双精度) java.lang.Double
boolean(布尔) java.lang.Boolean![]

包装类和基本类型
基本数据类型转换为包装类:Integer intValue = new Integer(21);
包装类转换成基本类型:Integer integerId=new Integer(25); int intId=integerId.intValue();
二:字符串相关类

  1. String类
    (1) String代表字符串类型,字符串的内容本身不可改变,字符串存储于“字符串常量池”中。
    (2)String的两种实例化方式
    a:直接赋值法:
    eg: String str=“Hello World”;
    b:通过new操作符实例化:
    eg: String str=new String(“Hello World”);
    (3)一个字符串就是一个String类的匿名对象。
    所谓匿名对象,就是在堆内存中开辟了空间,但在栈内存中并没有引用指向的对象。
    (4)字符串常用方法:
    String类的常用方法:
    1.public String(byte[] bytes)
    使用平台的默认字符集解码,将字节数组转换为字符串
    2.public String(byte[] bytes,Charset charset)
    使用指定字符集解码,将字节数组转换为字符串
    3.public char charAt(int index)
    根据索引位置获取字符串中的某个字符
    4.public boolean contains(CharSequence s)
    判断当前对象代表的字符串是否包含参数字符串内容
    5.public boolean equals(Object anObject)
    判断字符串内容是否相同
    6.public byte[] getBytes()
    将字符串转换为字节数组
    7.public int indexOf(String str)
    返回参数字符串在当前字符串中的索引位置
    9.public int lastIndexOf(String str)
    从后往前找参数字符串,返回参数字符串在当前字符串中的索引位置
    10.public int length()
    返回当前字符串的长度
    11.public String toLowerCase()
    将字符串转换为小写
    12.public String toUpperCase()
    将字符串转换为大写

  2. StringBuffer类:
    (1)StringBuffer代表可变的字符序列。
    StringBuffer称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。
    (2)StringBuffer是可变对象,这个是与String最大的不同(如果连续操作String对象,则会产生大量的“垃圾”,而且“断开-连接”很频繁。)

3.StringBuilder类
StringBuilder和StringBuffer功能几乎是一样的,只是 StringBuilder是线程不安全的
三:内部类
1.在类的内部定义另一个类。如果在类Outer的内部再定义一个类Inner,此时Inner就称为内部类,而Outer则称为外部类。
2.内部类的定义格式
public class 外部类{
外部类成员
public class 内部类{
内部类成员
}
}
3.内部类在编译完成后也会产生.class文件,而文件名称则是”外部类名称$内部类名称.class”
使用内部类的原因:
比如:心脏属于人类的某个部分:但心脏不能简单用属性或者方法表示一个心脏,因为心脏也有自己的属性和行为,所以需要写在人类的内部
好处:
1 可以方便地访问外部类的私有属性
2 减少了类文件编译后的产生的字节码文件的大小

缺点:使程序结构不清楚
1.成员内部类
成员内部类中不能定义static变量
成员内部类持有外部类的引用
在文件管理方面,成员内部类在编译完成后也会产生.class文件,而文件名称则是”外部类名称$内部类名称.class”
外部实例化成员内部类的格式:
外部类.内部类 内部类对象=外部类实例.new 内部类();
2.静态内部类
如果一个内部类使用static声明,则此内部类就称为静态内部类,其实也相当于外部类。可以通过外部类.内部类来访问。
静态内部类不会持有外部类的引用,创建时可以不用创建外部类对象
静态内部类可以访问外部的静态变量,如果访问外部类的非static成员变量必须通过外部类的实例访问
外部实例化静态内部类对象的格式:
外部类.内部类 内部类对象= new 外部类.内部类();
3.局域内部类
局域内部类是定义在一个方法中的内嵌类,所以类的作用范围仅限于该方法中,而类生成的对象也只能在该方法中使用。
局域内部类不能包含静态成员。
特别注意:
局域内部类要想访问包含其的方法中的参数,则方法中的参数前必须加上final关键字(JDK<=1.7)。
4.匿名内部类
如果一个内部类在整个操作中只使用一次的话,就可以定义为匿名内部类。
没有名字的内部类,这是java为了方便我们编写程序而设计的一个机制,因为有时候有的内部类只需要创建一个它的对象就可以了,以后再不会用到这个类,这时候使用匿名内部类就比较合适。

以上是关于JAVA包装类和内部类的主要内容,如果未能解决你的问题,请参考以下文章

大数据必学Java基础(四十八):包装类和日期类的讲解

Java_包装类和缓冲区

java包装类和自动拆装箱

JAVA基础--JAVA API常见对象(包装类和正则)12

初识Java集合及包装类和泛型的基本使用

何时使用包装类和原始类型