首页 技术 正文
技术 2022年11月14日
0 收藏 804 点赞 5,085 浏览 2981 个字

一、包装类的分类:

1、黄色部分的父类为Number

继承关系:

Boolean

Character

其他六个基本数据类型

2、装箱和拆箱

理解:一个例子,其他的都相同

装箱:Integer integer=New.valueof(1)     :将值封装成一个Integer类

拆箱:int i = Integer.intValue();

面试题:

在底层中

Integer i = 127;

Integer i = 128;

两个的生成方法不同,首先从-128–》127都是在调用类时自动生成的,不会重新创建对象;反之,不在这个范围内,那就会重新New一个对象。

二、String类的理解和创建对象

1、大概描述:

1) String对象用于保存字符串,也就是一组字符序列
2)字符串常量对象是用双引号括起的字符序列。例如:
“你好””、”12.97″、 “boy”等
3)字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节。

4) String类较常用构造器(其它看手册):
  String s1 = new String(); /
  String s2 = new String(String original);
  String s3 = new String(char[] a);
  String s4 = new String(char[] a,int startIndex,int count);

String s5 = new String(byte[] b);

5)String 类实现了接口Serializable [String 可以串行化:可以在网络传输]
接口ComparabLe [String 对象可以比较大小]
6)String是final类,不能被其他的类继承
7)String 有属性private final char value[]; 用于存放字符串内容
8)一定要注意: vaLue 是个final类型, 不可以修改 (这里的不可以修改是值对象的地址)

即value不能指向新的地址

2、创建String类

两种方式的区别:

方式-:直接赋值Strings= “hello”;

方式二:调用构造器String s2 =new String(“hello”);

区别:

1.方式一:先从常量池查看是否有”hello”数据空间,如果有,直接指向;如果没有则重新创建,然后指向。s最终指向的是常量池的空间地址

2.方式二:先在堆中创建空间,里面维护了value属性,指向常量池的hello空间。
如果常量池没有”hello”,重新创建,如果有,直接通过value指向。最终指向
的是堆中的空间地址。

字符串特性:

创建对象时,首先看常量池中有不有这个字符串,有就直接指向这个常量地址

没有的话就增加一个常量,然后再指向这个常量地址

对于拼接的请求

字符串变量相加,生成对象

三、stringBuffer

1、StringBuffer的特性:

1).StringBuffer的直接父类是 AbstractStringBuilder
2).StringBuffer实现了Serializable,即StringBuffer的对象可以串行化

3)在父类中 AbstractStringBuilder有属性 char[] value,不是final

该value数组存放字符串内容,引出存放在堆中的

4).StringBuffer是一个final类,不能被继承

5).因为StringBuffer字符数组是存在 char[] value,所有在变化(增加/删除
不用每次都更换地址(即不是每次创建新对象),所以效率高于Stringl

2、比较:String VS StringBuffer
1) String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低//private final char value[l;
2) StringBuffer保存的是字符串变量,里面的值可以更改,每次
StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高/char[] value;/这个放在堆.

3、构造器

4、String和StringBuffer互相转换

5、StringBuffer的常用方法

StringBuffer s = new StringBuffer();

(1)、增加:在字符串后面添加字符:s.append();

(2)、删除:   表示删除索引为>=start  &&  <end 处字符

如–》s.delete(11,14); 删除11~14的字符  [11,14)

(3)、修改:替换指定的字符区间段字符,字符长度可以不相同

如:s.replace(3,6,hello);将[3,6)区间的字段替换为hello。

(4)、查找:查找字段在字符串中第一次出现的位置

比如:int indexof = s.indexof(“hello”);存在就返回位置,不存在就返回-1

(5)、插入:在索引位置插入字符串,原来的内容向后移动

比如:s.insert(5,”text”); 在字符串中索引为5处开始插入字符串(索引从0开始)

(6)、返回字符串长度:int length = s.length();

四、StringBuilder

简介:

1、一个可变的字符序列。此类提供一个与 StringBuffer兼容的API,但不保证同步(stringBuilder不是线程安全)。该类被设计用作 StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。
2、在 StringBuilder上的主要操作是append和 insert 方法,可重载这些方法,
以接受任意类型的数据。

基本特性:

1.StringBuilder继承 AbstractStringBuilder 类
2,实现了Serializable ,说明StringBuilder对象是可以串行化(对象可以网络传输,可以保存到文件)3. StringBuilder是final类,不能被继承
4,StringBuilder对象字符序列仍然是存放在其父类 AbstractStringBuilder的 char[] value;
因此,字符序列是堆中
5.StringBuilder 的方法,没有做互斥的处理,即没有synchronized关键字,因此在单线程的情况下使用,stringBuilder

比较:String、StringBuffer、StringBuilder

三个效率的比较:

StringBuilder>Stringbuffer>String

1) StringBuilder和StringBuffer非常类似,均代表可变的字符序列,而且方法
也一样
2) String:不可变字符序列,效率低,但是复用率高。
3) StringBuffer:可变字符序列、效率较高(增删)、线程安全
4) StringBuilder:可变字符序列、效率最高、线程不安全
5) String使用注意说明:
string s=”a”; //创建了一个字符串
s += “b”; //实际上原来的”a”字符串对象已经丢弃了,现在又产生了一个字符
串s+ “b” (也就是”ab”)。如果多次执行这些改变串内容的操作,会导致大量副
本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大
影响程序的性能=>结论:如果我们对String做大量修改,不要使用String

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,556
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,405
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898