java基础学习
小路不哭
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hashmap与hashtable的区别?
hashmap中的方法是异步操作(非线程安全),并且hashmap中可以存空数据hashtable中的方法是同步方法(线程安全),并且不允许存储空数据,否则会报nullPointerException...原创 2020-03-21 20:44:03 · 146 阅读 · 0 评论 -
hashMap的底层实现原理
学习map的实现子类:hashmap这个为底层的继承关系。hashmap实现了map接口,又实现了抽象map类。这里采用双重实现。实现map接口,并实现抽象map类。基本数据结构的底层都采用双重实现。并且支持克隆,和序列化(Cloneable, Serializable 为功能类接口,不提供实现)。public class HashMap<K,V> extends Abstract...原创 2020-03-21 20:09:47 · 235 阅读 · 0 评论 -
list的三个实现子类
ArrayList 底层由数组组实现LinkedList 底层由链表实现Vector 底层由数组实现ArrayList和LinkedList的区别在于底层实现不同。ArrayList和Vector的主要区别在于Vector是线程不安全的。这里...原创 2020-03-21 15:18:36 · 291 阅读 · 0 评论 -
通过反射自动级联实例化对象
通过反射级联实例化对象级联实例化对象,是指对象包含其他对象实例的情况下实例化。要设置被包含对象的属性就得对其实力化。下面贴上代码。package reflection;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.text.ParseException;import java....原创 2020-03-19 10:40:09 · 257 阅读 · 0 评论 -
反射实现对属性的get,set
反射实现对属性的get,set这里使用了上一个students类。student.getDeclaredField(“name”)获取到field后,通过set(对象,值)这里有很重要的一步field.setAccessible(true),其作用是解除private的封装。然后通过get就可以取得具体的值Class<?> student=Class.forName("...原创 2020-03-16 10:18:24 · 328 阅读 · 0 评论 -
通过反射调用类的普通方法
method方法使用invoke钩子函数,类似student.act()。用invoke的方法可以避免与具体的某个类耦合。Class<?> student=Class.forName("reflection.Student");Object object=student.getDeclaredConstructor().newInstance();String name="小帅...原创 2020-03-16 09:53:52 · 176 阅读 · 0 评论 -
java反射机制与简单工厂模式
利用Java的反射机制可以解决工厂模式的工厂方法爆炸性扩充问题,原理是:工厂不需要管理传入的String标志着哪一个对象,只需要根据String参数反射获取对象即可。interface IMessage{ public void send();}class AMessage implements IMessage{ @Override public void sen...原创 2020-03-15 16:31:19 · 277 阅读 · 0 评论 -
java反射的三种实现形式
获取反射的三种形式,通过对象.getClass()的方式获取。通过类.class的方式获取通过Class的内置方法:Class.forName(String 包的完整路径)代码如下:// //方式一:// Date data=new Date();// Class<?> cls=data.getClass();// ...原创 2020-03-15 15:01:29 · 204 阅读 · 0 评论 -
序列化的demo
今天学习到了序列化操作,序列化操作主要用于对象的存盘操作,此处的存盘操作可以指(文件,远程服务器,SQL数据库)。此处做了一个关于序列化存盘的小demo。class SomeOne implements Serializable{ private String name; private int age; public SomeOne(String name, int ...原创 2020-03-14 17:22:31 · 171 阅读 · 0 评论 -
记录volatile与synchronized的区别
在多线程定义之中,volatile关键字 主要是在属性上定义使用的,表示属性直接操作,而不进行副本拷贝处理。volatile主要在属性上使用,而synchronized是在代码块与方法上使用volatile无法描述同步的处理,它只是一种内存的处理,避免了副本的操作,synchronized是线程同步的...原创 2020-03-13 16:23:38 · 243 阅读 · 0 评论 -
关于多线程wait函数的坑
在我自己跟着视频做的一个demo发现我并不能像他那样出现交替运行。我最开始并未更改时产生的效果如下:通过大佬博客java 线程wait()与notify()的用法当wait线程被唤醒时会继续执行(保存线程状态)。与我想要的效果不太相同,我决定将我的源码的这个部分修改:if (this.flag == false) { super.wait();}Thread.sleep(10...原创 2020-03-13 16:15:15 · 422 阅读 · 0 评论 -
关于Supplier的一些理解
在探寻orElseGet的时候查看底层实现的时候发现:public T orElseGet(Supplier<? extends T> other) { return value != null ? value : other.get();}这个Supplier的是什么类型(从字面意思是提供者),接着查看supplier源码发下其如下结构:/** * Represen...原创 2020-03-13 15:01:49 · 1801 阅读 · 0 评论 -
File.renameTo()的实例
下面引入一个对对文件重命名的demopublic class FileDemo { public static Random random=new Random(10); public static void main(String[] args) { File file=new File("D:"+File.separator+"FF14"); ...原创 2020-03-11 19:19:22 · 217 阅读 · 0 评论 -
实现多线程的三种方式的区别?
实现多线程的三种方式的区别?Thread实现多线程是单继承的。Runnable接口可以解决Thread的单继承问题Callable接口可以解决Runnable的无返回值问题注意:get方法是阻塞的,即:线程无返回结果,get方法会一直等待Callable接口实现方式import java.util.concurrent.Callable;import java.util.conc...原创 2020-02-17 19:01:06 · 650 阅读 · 0 评论 -
String、StringBuffer、StringBuilder的区别
1)String类是字符串的首选类型,其最大的特点是内容不允许修改;2)StringBuffer与StringBuilder类的内容允许修改;3)StringBuffer是在JDK1.0时提供的,属于线程安全的操作,而StringBuilder是JDK1.5之后提供的,属于非线程安全的操作;...原创 2020-02-16 10:43:22 · 134 阅读 · 0 评论
分享