java常用类,包装类,String类的理解和创建对象以及StringBuilder和StringBuffer之间的区别联系
一、包装类的分类:
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

java常用类,包装类,String类的理解和创建对象以及StringBuilder和StringBuffer之间的区别联系的更多相关文章
- Java基础 -- String,StringBuilder,StringBuffer三者的区别
结论 1-String,StringBuilder,StringBuffer 之间的区别主要是在两个方面,即运行速度和线程安全这两方面: 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:St ...
- Java常用类:包装类,String,日期类,Math,File,枚举类
Java常用类:包装类,String,日期类,Math,File,枚举类
- Java的常用类——Object类、String类
Java的JDK中提供给我们很多封装好的类就是Java API,可以直接调用. Java 的API(API: Application(应用) Programming(程序) Interface(接口) ...
- Java Object类 和 String类 常见问答 6k字+总结
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- java学习笔记之String类
String类总结 String类概述: java.lang.String 类是字符串操作类 String类的常用构造方法: //1.直接赋值 String str= "hellojava& ...
- Java常用的加密解密类(对称加密类)
Java常用的加密解密类 原文转载至:http://blog.csdn.net/wyc_cs/article/details/8793198 原创 2013年04月12日 14:33:35 1704 ...
- java问题解读,String类为什么是final的
一.理解final 望文生义,final意为“最终的,最后的”,我理解为“不能被改变的”,它可以修饰类.变量和方法. 所以我是否可以理解为被它所修饰的类.变量和方法都不能被改变呢?答案是”是“,因为有 ...
- 7.算法竞赛中的常用JAVA API :String 、StringBuilder、StringBuffer常用方法和区别(转载)
7.算法竞赛中的常用JAVA API :String .StringBuilder.StringBuffer常用方法和区别 摘要 本文将介绍String.StringBuilder类的常用方法. 在j ...
- C#中 StringBuilder类 与 String类的区别---(转)
在找工作的时候,去了些公司,避免不了要面试和笔试.不过一般最起初的是笔试.我印象中有这样有一道题目:StringBuilder类与 String类的区别?那时候我不太清楚这两个类的区别,今天在看代 ...
随机推荐
- python + web自动化,点击不生效,提示“selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (117, 674)”
前言: 在做web自动化时,遇到一个缩放了浏览器比例的操作,从100%缩小到80%,再进行点击的时候,弹出报错信息,无法点击 selenium.common.exceptions.ElementCli ...
- postgresql使用pg_dump工具进行数据库迁移
一.使用管理员身份打开cmd,切换到postgresqlp安装目录下的bin目录 必须要以管理员身份打开cmd,否则报拒绝访问 二.把生成的文件上传到服务器上,同样cd 到postgresql的安装b ...
- Zabbix忘记用户名和密码的解决方法
问题描述: 最近刚搭建了zabbix服务器,然后新增加了一个用户,并且把默认的Admin禁用了.然后这个监控页面一直没关,保持了10多天,今天不小心把浏览器关闭了,重新打开后,突然忘记了用户名,这下麻 ...
- vue2.0点击其他任何地方隐藏dom
methods: { handleBodyClick(){ if (绿色区域出来了,要判断点击其他地方就要关闭,这样可以避免绿色区域已经关闭还在操作) { let _con = $(目标区域) if ...
- warmup(HCTF 2018)
为啥想写这道题的wp呢,因为这道题就是照着phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)复现出来的 题目 查看源码很容易找到source.php,直接访问 分析 题 ...
- 我的2021年度总结-回忆录|附旅行Vlog
今天是农历腊月初十,还有20天就是2022年了.这一年,些许遗憾,些许期盼.时间久了,很多事已经慢慢模糊了,只记得,这最后几个月的闲碎小事. 不止多久,很久没有码字了.有些事,记不清,忆不得.时至今年 ...
- springboot打包第三方jar包是失败
在项目开发时有时我们需要引入一些在maven仓库中不存在的包 一.配置maven环境变量 在path环境变量中添加 %maven_home%\bin (window10环境下) cmd界面输入 mvn ...
- Idea操作Maven详细使用:
Idea操作Maven详细使用: Maven简介 什么是 Maven Maven 的正确发音是[ˈmevən] "卖v",而不是"马瘟"以及其他什么瘟. Mav ...
- Java包装类和处理对象
Java中基本类型变量和字符串之间的转换 public class Primitive2String { public static void main(String args[]) { String ...
- Tomcat部署启动时发生错误
Tomcat启动后项目地址显示404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示. 严重: ContainerBase.addChild: start: org.apache. ...