java基础
mowrong
这个作者很懒,什么都没留下…
展开
-
synchronized
1.synchronized不能被继承2.synchronized修饰方法或者普通变量,锁定的是当前对象。当修饰静态内容时,锁定的就是整个类(包含所有对象)3.在定义接口方法时不能使用synchronized关键字。构造方法不能使用synchronized关键字,但可以使用synchronized代码块来进行同步。4.无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类原创 2021-03-02 22:05:07 · 212 阅读 · 0 评论 -
并发和并行的区别
并发与并行都是强调同时执行。而他们两个并行代表的是真正的同时执行,并发只是可以宏观上认为是同时执行,并不是真正的同时执行。为什么呢?并发:多个线程任务通过一个cpu执行,所以这些线程任务只能通过切换执行来实现并发,只不过这些线程切换的速度很快,宏观上看似乎就是同时执行的,其实还是一个一个执行的,只不过可以切换执行。并行:多个线程任务通过多个cpu执行,真正意义上的同时执行。因为有多个cpu,一个cpu执行一个任务就好了。...原创 2021-02-19 17:50:13 · 402 阅读 · 0 评论 -
BIO,NIO,AIO的区别
首先,什么是io模型。模型即是解决一个问题的固定套路,io即是输入与输出,那么io模型就是解决输入与输出问题的一种固定套路。其次为什么要学习io模型,因为在输入与输出的过程通常很久,而在等待输入的过程中,cpu处于闲置状态,就造成了资源浪费,所以学习io模型,就是为了利用cpu在等待过程中做别的事。注意,IO其实有很多类型,例如 socket网络IO,内存到内存的copy,等待键盘输入,对比起来socket网络IO需要等待的时间是最长的,这也是咱们重点关注的地方关于阻塞与非阻塞:io模型分为阻塞io,非原创 2021-02-18 19:58:10 · 85 阅读 · 0 评论 -
抽象类和接口的区别
抽象类虽然不能实例化,但是它有构造方法,而接口没有。抽象类要被继承,接口要被实现。抽象类可以有默认方法,可以没有抽象方法,可以有main方法,可以运行。接口是方法的集合,它的变量只能是常量(public static final),不可运行,他的所有方法只能是抽象方法。...原创 2021-02-16 22:34:22 · 91 阅读 · 0 评论 -
String StringBuffer StringBuilder的区别
他们是Java中仅有的三种字符串操作类。String类是final修饰的Java类。StringBuffer线程安全,StringBuilder线程不安全,一般情况下,StringBuilder速度快于StringBuffer。而String就是一个字符串一个对象,两个相同的字符串会指向一个地址,对String对象的改变会生成新的String对象,再将指针指向该对象。StringBuffer、StringBuilder则不是,对他们两个的操作都是在一个对象上的操作。...原创 2021-02-16 21:30:06 · 55 阅读 · 0 评论 -
Math对象的ceil()、floor()、round()方法
ceil:向上取整,返回值float类型。floor:向下取整,返回值float类型。round:四舍五入,返回值int类型。关于ceil和floor,想象一条y轴,不论负数正数,都向y轴的上或下方向取整。而四舍五入的原理是,把当前数加0.5,再向下取整。如Math.round(-1.5)的值是-1...原创 2021-02-16 21:05:46 · 413 阅读 · 0 评论 -
equals和hashcode的关系
首先要明确,equals的优先级比hashcode高。我们需要确保当两个对象equals相等时,那么他们的hashcode一定相等。如果两个对象equals不相等,那么两个对象的 hashCode 方法不一定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。也就是说,若两个对象equals相等,则hashCode也相同。若equals不相同,则hashCode不需要确保一定不相同。反过来说若两个对象hashCode相同,则equals不一定返回tru原创 2021-02-15 22:13:58 · 5905 阅读 · 0 评论 -
== 和 equals 的区别
== 是一种运算符,速度快,他判断的是两个对象的地址是否相同。equals是超类Object的一个方法,它判断的是两个对象的内容是否相同。我们新建一个类时,它继承的equals方法默认比较的是地址空间是否相同,具体的比较方法需要我们自己实现。继承的equals方法默认比较的是地址空间是否相同,如下public boolean equals(Object obj) { return (this == obj); }...原创 2021-02-15 21:30:48 · 111 阅读 · 0 评论 -
JRE和JDK有什么区别
JRE: Java Runtime EnvironmentJDK:Java Development KitJRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JREJDK包含的基本组件包括:javac – 编译器,将源程序转成字节码jar –.原创 2021-02-15 21:14:11 · 261 阅读 · 0 评论 -
Scanner的next()方法、nextLine()方法、hasNext()方法
其实按照原理hasNext()因该写作nextHas(),就容易理解了(坑爹的英文)。原创 2021-01-28 19:13:42 · 782 阅读 · 0 评论 -
LinkedList的push add offer操作有什么不同
add(不带索引默认添加到链表的最后)与offer一样都是添加操作,唯一的区别就是offer没有带索引参数的方法。上面这两种操作方式是将LinkedList当作链表或队列来使用。而push操作是将LinkedList当作栈来使用。原创 2021-01-28 13:32:33 · 4311 阅读 · 0 评论 -
public protected default private的区别
private default protected public的级别是递增的。原创 2021-01-27 18:05:40 · 347 阅读 · 0 评论