- 博客(8)
- 收藏
- 关注
原创 关于等价性的分类
关于等价性的分类 java中的对象分为immutable的和mutable的对象,课上说不可变对象的等价性分为引用等价性和对象等价性,可变类型分为观察等价性和行为等价性 私以为对于所有对象都分为引用等价性和对象等价性 引用等价性就是 == 对象等价性就是 equals 然后只是对于可变类型的对象的equals实现起来比较复杂,所以在实现equals的思路又分了两种观察等价性和行为等价性 观察等价性:在不改变状态的情况下,两个mutable对象是否看起来一致 但是在集合类有关hashcode的时候可能会出现问
2020-07-09 18:45:50
700
原创 关于软件构造的三维度八视图
关于软件构造的三维度八视图 三维度: Build-time(构造阶段):idea→ requirement→design→ code→installable/executable package Code-level view: source code–how source code are logically organized by basic program blocks such as functions,classes,methods,interfaces, etc,and the depende
2020-07-09 15:55:25
415
原创 关于多线程中的中断和sleep
关于多线程中中断与sleep的理解 课堂上讲只有sleep的时候才能对中断信号做出相应反应,我认为这个说法是老师为了好让我们理解而做的一个解释 为此我专门找了一些资料来探究这个问题。 每个线程中有一个标志位用于表示是否中断 在其他线程中通过 t.interrupt(); 这个函数向t线程发出中断信号,将标志位置为true; 如果线程在sleep之前或者sleep的时候接收到这个信号,就会在sleep的时候抛出异常,之后程序员就可以用catch语句进行相关的处理 但是也不一定非要用sleep 也可以用 t.
2020-07-09 09:47:56
1073
原创 关于java中重载和重写的相关
java中override(重写)和overload(重载)是不同的,具体的不同我想其他博客什么的已经说的很清楚了,这里主要想探讨一下关于方法调用的具体选择上 在软件构造课上学到: 对于Overload而言,选择哪种方法是在编译阶段根据引用(栈中)的类型而确定的。 对于Override而言,选择哪种方法是在运行阶段根据在堆中的具体对象实例的类型决定的。 由于好奇,做了以下试验 public class Super { public void print() { System.
2020-06-29 22:22:23
151
原创 关于java中集合类的不可变包装的一些思考
众所周知,java中的各种集合类,比如List,Set,Map等都是mutable的类,为了安全性,经常会利用到Collection类中的不可变包装的方法将其包装成不可变类型的变量,比如Collections.unmodifiableList()方法。 但是倘若进行如下代码,会发现尽管使用了该方法进行包装但是内部数据还是可以发生变化,于时,针对这个问题我展开了思考。 List<Date> dateList = new ArrayList<>(); Date dat
2020-06-27 19:39:14
241
原创 关于java中变量存储位置
关于java中变量存储位置 class A{ static int a; Date b; void do(){ Calendar c; } } 同学给我了上面的代码,问了我这样一个问题,a、b、c分别都在哪里分配内存?我一时发懵,于时查阅资料并且进行总结 有五个不同的地方可以存储数据: 1)寄存器。这是最快的存储区,因为它位于不同于其他存储区的地方———处理器内部。但是寄存器的数量极其有限,所以寄存器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象(另一
2020-06-16 20:52:42
312
原创 有关多线程的一些问题
课上所学多线程部分出现的问题 下面是一段上课时ppt上的线程 public class Test { public static int x = 1; public static void main(String[] args) { Thread thread1 = new Thread(new Runnable() { @Override public void run() { x *= 2;
2020-05-23 14:13:47
134
原创 Java 流(Stream)、文件(File)和IO
Java 流(Stream)、文件(File)和IO java.io几乎包含了所有的关于输入输出所需要的类 在java中,流的概念可以理解为一个数据的序列 java中任何由Inputstream和Reader派生而来的类都有read()的方法,但是为何就连想要实现一个简单的从控制台输入都要创建多个对象,通过多个对象叠合提供这个功能,比如 BufferedReader br = new Buffe...
2020-03-21 22:05:25
92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅