Java基础
文章平均质量分 95
StreakyPorker
这个作者很懒,什么都没留下…
展开
-
多线程进阶 Java的锁及其实现
Lock接口基本API:队列同步器(AQS)AQS是构建锁或者其他同步组建的基础框架,它使用一个volatile int成员变量表示同步状态,内置一个队列来完成资源获取线程的排队工作。对状态的修改主要使用getState(),setState(int newState),compareAndSetState(int expect,int update),从而保证状态改变安全。 支持共享和独占的同步AQS主要可重写的方法:同时,同步器也提供了模板方法,用于在重写同步状态获取模式后,提供同步器的原创 2021-03-23 18:23:22 · 522 阅读 · 0 评论 -
Java基础(4) 线程(Threads)与并发
课上内容线程的生命周期调用start前不参与调度只有在run结束后,该线程才会结束(不会被强制关闭)yield()有让的意思,指正在运行的程序主动让出CPU。线程操作其中sleep和yield是静态成员函数,这意味着sleep和yield只能对当前正在运行的线程起作用函数的synchronized当函数所有的操作都需要被同步,并且它的key是this时,可以为函数加synchronized关键字。解决死锁的方案是放弃synchronized??...原创 2020-11-11 20:05:19 · 274 阅读 · 2 评论 -
equals与==的区别
首先,“==”的比较方法是比较两个对象的内存地址(因为java只有引用对象),如果二者相同则意味着==返回true.之后,Java源码的Object类的equals函数如下:public boolean equals(Object obj) { return (this == obj);}这表明了对于Object类,以及所有继承树中没有重写过equals方法的类,equals和==的作用是相同的。而String和Integer等的类重写了equals方法,所以它们的equals的作用以重写原创 2020-11-04 19:51:50 · 72 阅读 · 0 评论 -
Java native关键字
含义与用途native关键字修饰的方法(只能用于修饰方法)表明这些方法是本地化的方法,也即不是在源码中实现,而是在更底层的途径(如c/c++编写的dll文件等等)。被native关键字修饰的方法不需要在源码中编写实现,而是由编译器在系统库中寻找对应的实现。显然这样的写法是通过低层次的语言加速一些操作的处理速度,大多用于系统类库,但也可以自行编写并引用自己的native调用。详情可以参考博客自己实现一个Native方法调用。...原创 2020-10-24 00:53:09 · 112 阅读 · 0 评论 -
Java基础(3) 异常与IO
可以探究一下:JVM默认的最大内存占用是多少1. 异常部分try内可能有多个大括号,对于throw和这些大括号的交互:exception的匹配在一系列的catch中,处于上层的异常不能是下面异常的祖先类,否则就会报错故而正确的方法是,上层的异常是继承树中的近叶节点,上下层也可以是无关的或同层次的节点throws的声明可以吹牛但不能瞒报可以在函数前声明抛出很多异常,但在函数内部可以一个不抛出它们但是,所有调用声明抛出一些异常的函数,必须能够处理这些异常,如果无法处理,就只能更.原创 2020-10-19 20:07:38 · 157 阅读 · 0 评论 -
Java基础(2)泛型容器
从数组开始被new出的未被赋值的对象数组中的每个元素值为null,而基本数字类型则是0。通常意义上的数组是不可变大小,并且类型相同的ContainersCollectionListSetMapJava编程中拿到的永远是指针,没有拷贝构造的概念遍历的方法所有的容器都可以用于for each循环for(Stu s:lst){ s.incr(); //1 s = new Stu(); //2}上述代码中,1起作用而2不起作用,这说明for each循环中能改变的是对原创 2020-10-12 21:03:21 · 267 阅读 · 2 评论 -
Java错题汇总
1.这里的member variable指的是非静态成员变量2.?3.应选B,因为Serializable中有writeObject的默认定义原创 2020-09-28 21:52:10 · 83 阅读 · 0 评论 -
java基础(1) 面向对象拾遗
继承与多态只有非final的类才可以被继承,但final类仍然可正常的继承其他类在Java15中,可以用sealed修饰类,进而确定可以继承该类的类的集合public sealed class Shape permits Rect, Circle, Triangle { ...}向上转型是被允许的,而向下转型只在引用指向的对象本身就是要转型的目标类的对象时才成立:Person p1 = new Student(); // upcasting, okPerson p2 = ne原创 2020-09-21 15:48:17 · 113 阅读 · 0 评论