资讯专栏INFORMATION COLUMN

Java基础知识学习笔记(1)

Leck1e / 2649人阅读

摘要:并没有对方法进行加同步锁,所以是非线程安全的。相同情况下使用相比使用仅能获得左右的性能提升,但却要冒多线程不安全的风险。水池异常表示程序可以处理的异常,可以捕获且可能恢复。

一、String, StringBuffer, StringBuilder

1、可变性

(1)String类型是使用一个final修饰的字符数组,因此它是不可变的。

private final char value[];   

那把String定义为不可变有什么好处呢?
安全性:当你在调用其他方法,比如调用一些系统级操作之前,可能会有一系列校验,如果是可变类的话,可能在你校验过后,其内部的值被改变了,可能引起严重的系统崩溃问题。
性能:进行哈希计算时,由于不可变性,可以只计算一次哈希值,如果设计为可变,那么就需要多次重新计算哈希值,性能上会有损耗。

(2)StringBuilder与StringBuffer都继承自AbstractStringBuilder类,也采用字符数组存储,但未用final修饰,因此可变

2、线程安全性
(1)String变量因不可变,可看作常量,因此是线程安全的。
(2)StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。 (3)StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。

3、性能
(1)每次改变String后都会生成一个新的对象,因此性能损耗较大。
(2)StringBuffer每次都会对StringBuffer对象本身进行操作,性能较String更优。
(3)相同情况下使用StirngBuilder 相比使用StringBuffer 仅能获得10%~15% 左右的性能提升,但却要冒多线程不安全的风险。

4、使用场景
(1)操作少量数据用String
(2)单线程下操作大量数据用StringBuilder
(3)多线程下操作大量数据用StringBuffer

5、其他
为何推荐使用StringBuilder而不是“+”做字符串连接?

在使用“+”做字符串拼接时,是会创建一个StringBuilder去完成拼接的,但是如果是在循环中进行操作,就会每次创建一个新的StringBuffer,性能上会有损耗,因此推荐直接使用StringBuffer。

二、Collection和Collections

1、java.util.Collection 是一个集合接口。很多类包括map,set等都实现了这个接口。

2、Collections是一个工具类,不能实例化,提供了有一些方法:sort等。

三、char和varchar

1、char属于固定长度字符,而varchar属于可变长度字符,都可以用来存储字符串。

2、使用char时,如果输入的数目小于指定的数目,会在后面补空格大于指定的数目时,会截取后面的部分
https://ask.qcloudimg.com/htt...

3、varchar使用时,输入长度+1即为实际长度,多出来的一个字节用于保存实际使用了多大的长度。

四、Object类有哪些方法

1、toString()方法: toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值

2、equals()方法: 判断这两个对象是否是相同的,如果不进行重写,只会判断对象的地址是否相同,即如果不是同一个对象,就会返回false。

3、hashCode()方法:将十六进制地址值通过哈希算法换算为整值。

4、getClass()方法:获取对象的字节码文件(该对象运行时的类)。

五、Java中的内存泄漏

Java中的内存泄漏指的是对象虽然不再被使用,但它们仍然被引用。

Vector v=new Vector(10);
for (int i=1;i<100; i++)
{
    Object o=new Object();
    v.add(o);
    o=null; 
}

比如在上述这个例子中,Object对象o被加入了Vector对象v中,虽然o修改为null,这种情况下,v依然引用对象,那么这个对象对于GC来说,就是不可回收的,即产生了内存泄漏

六、Error和Exception(继承自同一个类)

1、Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。(水池

2、Exception(异常)表示程序可以处理的异常,可以捕获且可能恢复。(
(1)CheckedException:(编译时异常) 需要用try——catch显示的捕获,对于可恢复的异常使用CheckedException。
  
(2)UnCheckedException(RuntimeException):(运行时异常)不需要捕获,对于程序错误(不可恢复)的异常使用RuntimeException。
比如:
  NullpointerException:空指针异常(我目前遇见的最多的)
  IndexOutOfBoundsException:索引超出边界异常

注:ClassNotFoundExceptionNoClassDefFoundError的区别:
(1)ClassNotFoundException是指在类加载器的加载阶段找不到类信息。如Class.forName(),ClassLoader.loadClass()等。

(2)NoClassDefFoundError是指在运行使用阶段时却出现了问题。如实例化依赖类找不到(删除了.class文件)或者类本身就初始化失败了等。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75409.html

相关文章

  • java&javaweb学习笔记(汇总)

    摘要:我的学习笔记汇总标签笔记分为两大部分和笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解基础语法,想进一步深入学习的人如果觉得不错,请给,这也是对我的鼓励,有什么意见欢迎留言反馈目录基础巩固笔记反射基础巩固笔记泛型基础巩 我的java&javaweb学习笔记(汇总) 标签: java [TOC] 笔记分为两大部分:javase和javaweb javase javawe...

    yagami 评论0 收藏0
  • Java入门请不要放弃,学习路线以及侧重点分析

    摘要:而面向搜索引擎,就是我们要及时的使用百度谷歌遇到问题无法解决,先别急着放弃,可以去网络寻找答案,你的坑大部分别人都已经走过了,大部分都可以找到合适的解决方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●众多的语言,到底哪一门才是适合我的?●我们为什么要学习Java语言呢...

    mochixuan 评论0 收藏0
  • ApacheCN 编程/大数据/数据科学/人工智能学习资源 2019.5

    摘要:请回复这个帖子并注明组织个人信息来申请加入。版笔记等到中文字幕翻译完毕后再整理。数量超过个,在所有组织中排名前。网站日超过,排名的峰值为。主页归档社区自媒体平台微博知乎专栏公众号博客园简书合作侵权,请联系请抄送一份到赞助我们 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1...

    zhonghanwen 评论0 收藏0
  • ApacheCN 编程/大数据/数据科学/人工智能学习资源 2019.6

    摘要:请回复这个帖子并注明组织个人信息来申请加入。权限分配灵活,能者居之。数量超过个,在所有组织中排名前。网站日超过,排名的峰值为。导航归档社区自媒体平台微博知乎专栏公众号博客园简书合作侵权,请联系请抄送一份到赞助我们 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...

    Bmob 评论0 收藏0
  • Java初学者最佳的学习方法以及会遇到的坑(内含学习资料)!

    摘要:最近系统整理了一套初学者最佳的学习方法以及会遇到的坑等,希望对你有所帮助。正常的智商其实,学习并不需要所谓的数学逻辑好,需要英语水平棒。大周期每天学习时间五个小时以上的,建议学习周期。三学习时会遇到的坑不知道学习的重点,下面学习路线会画。 最近系统整理了一套java初学者最佳的学习方法以及会遇到的坑等,希望对你有所帮助。 目录: 一、学习java的前提 二、学习java的方法 三、学习...

    Half 评论0 收藏0
  • ApacheCN 学习资源汇总 2019.3

    摘要:主页暂时下线社区暂时下线知识库自媒体平台微博知乎简书博客园合作侵权,请联系请抄送一份到特色项目中文文档和教程与机器学习实用指南人工智能机器学习数据科学比赛系列项目实战教程文档代码视频数据科学比赛收集平台,,剑指,经典算法实现系列课本课本描述 【主页】 apachecn.org 【Github】@ApacheCN 暂时下线: 社区 暂时下线: cwiki 知识库 自媒体平台 ...

    array_huang 评论0 收藏0

发表评论

0条评论

Leck1e

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<