Java基础
Java基础和一些需要注意的概念。
nZk丶
这个作者很懒,什么都没留下…
展开
-
StringBuffer和StringBuilder的区别
类结构和继承关系他们都继承了一个抽象的字符串父类:AbstractStringBuilder区别1:线程安全StringBuffer:线程安全StringBuilder:线程不安全。因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 StringBuilder 修饰。StringBuffer:@Overridepublic synchronized StringBuffer append(Strin原创 2020-07-22 12:41:55 · 84 阅读 · 0 评论 -
Java8特性-Stream
目录Stream介绍Stream操作步骤数据准备创建StreamStream操作数据终止StreamJava8中有两个非常有名的改进,一个是Lambda表达式,一个是Stream。如果我们了解过函数式编程的话,都知道Stream真正把函数式编程的风格引入到了java中。这篇文章由简入繁逐步介绍StreamStream介绍Stream是一个流,在Java.util.Stream包路径下,他的主要作用就是对集合数据进行查找过滤等操作。通俗解释就是一种高效且易用的数据处理方式。原创 2020-07-08 11:36:19 · 127 阅读 · 0 评论 -
Java单例模式的7种实现方式
目录一.饿汉式二.懒汉式三.全局锁式四.静态代码块式五.双重校验锁式六.静态内部类式七.枚举方式一.饿汉式 单例实现-饿汉式: 1为什么方法是静态的: 不能new对象却想调用类中方法,方法必然是静态的, 静态方法只能调用静态成员,所以对象也是静态的。 2.为什么对象的访问修饰符是private,不能是public 吗? 不能,如果访问修饰符是Public,则Single.s也可以得到该类对象, 这样就造成了不可控。 .原创 2020-06-30 21:48:27 · 371 阅读 · 2 评论 -
内聚和耦合的具体概念
内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。 耦合(Coupling)是模块之间依赖程度的度量。内聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其它模块之间存在弱耦合。模块设计追求强内聚,弱耦合。一、内聚强度内聚按强度从低到高有以下几种类型:(1) 偶然内聚。如果一个模块的各成分之间毫无关系,则称为偶然内聚。(2) 逻辑内聚。几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比原创 2020-06-11 18:39:12 · 7198 阅读 · 0 评论 -
InputStream和OutputStream到底什么时候用?
读文件BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("infilename")));不管你从磁盘读,从网络读,或者从键盘读,读到内存,就是InputStream。写文件BufferedWriterout= new BufferedWriter(new OutputStreamWriter(new FileOutputStream("outfilename")));不管你写到..原创 2020-05-31 10:22:58 · 411 阅读 · 0 评论 -
concurrentHashmap和hashmap的底层实现以及两者的区别
HashMap底层数组+链表实现,可以存储null键和null值(null可以作为键,这样的键只有一个,但可以有一个或多个键所对应的值为null),线程不安全 初始size为16,扩容:newsize = oldsize*2,size一定为2的n次幂 扩容针对整个Map,每次扩容时,原来数组中的元素依次重新计算存放位置,并重新插入 插入元素后才判断该不该扩容,有可能无效扩容(插入后如果扩...原创 2020-03-03 17:27:53 · 833 阅读 · 0 评论 -
如果重写equals()方法,必须重写hashcode()方法的必要性
首先,这样做是为了提高equals()方法的比较效率。 字符串对象的哈希码根据以下公式计算:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] 重写hashcode方法,先进行hashcode比较,如果不同,那么就没必要在进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很...原创 2020-03-04 11:46:42 · 147 阅读 · 0 评论 -
Java中的二叉搜索树用法
首先要import一下Arrays包:import java.util.Arrays;方法的写法: int index = Arrays.binarySearch(Object[] a, Object key);a[ ]: 要查询的数组key: 要搜索的值index根据以下规则返回值:[1] key是数组a[ ]中的元素,从0开始计数,返回搜索值的索引值(ind...原创 2020-02-06 16:59:51 · 141 阅读 · 0 评论 -
Java中List.add()方法需要注意的一个点
void add(int index,E element)index:用于指定在其中插入指定元素处的索引。element:用于指定要插入的元素。用于在列表的指定位置插入指定元素,并将当前处于该位置的元素及其后续元素的索引加 1也就是说如果一直在index=0的位置插入数据的话,也是可以的,因为底层会自动为你后移之前存在的元素;这个函数在做一些倒置输出之类的题可以用...原创 2020-01-30 15:10:59 · 1202 阅读 · 0 评论 -
Java多态小结
就面向对象的三大特性:封装,继承,多态来说,多态是一个重要的概念,是一个重要的知识点,要了解并使用多态,首先封装和继承得有一定基础,因为在多态实现的过程中,就有封装和继承的使用。1.为什么要用多态?在面向过程的程序设计中,函数不能重名,否则会产生歧义,从而导致变编程错误。而在面向对象的程序设计中,有时候需要利用“重名”来提高程序的抽象度和简洁性。譬如,“开”门,“开”车,“开”盖子,...原创 2018-12-22 14:01:19 · 96 阅读 · 0 评论 -
初识java
在学习了C语言和一部分C++后,我开始接触JAVA语言,走上学习JAVA的路,作为新手,要戒骄戒躁,潜心修炼,要有足够的耐心去解决问题,方能成大器。首先了解一下JAVA的特点:JAVA具有简单性、面向对象、网络技能、健壮性、安全性、解释型、高性能、平台独立与可移植性、多线程、动态性、体系结构中立等特点 。JAVA的开发平台来说,比较常见的有两种: 和 ,因为idea在现在公司中用的比较广,...原创 2019-11-24 09:59:16 · 149 阅读 · 0 评论