
Java
不两立
这个作者很懒,什么都没留下…
展开
-
【Java】Integer的highestOneBit方法
源码如下: public static int highestOneBit(int i) { // HD, Figure 3-1 i |= (i >> 1); i |= (i >> 2); i |= (i >> 4); i |= (i >> 8); ...原创 2020-01-06 11:54:56 · 365 阅读 · 0 评论 -
【Java移位】
转自:https://www.cnblogs.com/chuijingjing/p/9405598.html<<表示左移移,不分正负数,低位补0; 注:以下数据类型默认为byte-8位左移时不管正负,低位补0正数:r = 20 << 2 20的二进制补码:0001 0100 向左移动两位后:0101 0000 结果:r = 8...原创 2020-01-06 10:24:37 · 198 阅读 · 0 评论 -
【Hashmap1.7】构造方法
一、认识构造方法1、public HashMap()解释:初始化一个空的hashmap,拥有16的容量和0.75的负载因子。 /** * Constructs an empty <tt>HashMap</tt> with the default initial capacity * (16) and the default load ...原创 2019-12-02 18:06:53 · 294 阅读 · 0 评论 -
11_等待/通知(wait/notify)机制介绍
1.当两个线程主动地读取一个共享变量时,在花费读取时间的基础上,读取到的值是不是想要的,并不能完全确定,“等待/通知”机制就用来满足这样的需求。2.wait()的作用是使当前执行的线程进行等待。调用之前要获取对象级别锁,即只能在同步方法中或者同步块中调用。执行wait()方法后,当前线程释放锁,在从wait()返回前,线程与其他线程竞争重新获得锁。3.notify()也要在原创 2017-12-19 14:06:53 · 361 阅读 · 0 评论 -
09_脏读
脏读:再赋值时进行了同步,但是在读取值的时候有一些意想不到的意外,这种情况就是脏读。发生脏读的情况时发生在读取实例变量时,此值已经被其他线程更改过了。示例:(代码中注释有代码执行过程)DirtyRead.javapackage dirtyRead;public class DirtyRead { public String username="A"; public原创 2017-12-15 14:29:41 · 228 阅读 · 0 评论 -
08_证明:synchronized是对象锁
过程:1.写一个类MyObjcet,里面有两个方法,methodA和methodB。2.synchronized声明methodA类是同步的,B类不声明。3.写两个线程类 ThreadA和TheadB,分别调用methodA和methodB4.写主函数,运行代码,注意:两个线程要访问同一个对象,否则相当于异步执行。5.检查结果,然后把B类也声明,再次运行,检查结果。原创 2017-12-12 15:40:38 · 218 阅读 · 0 评论 -
05_留意i--与System.out.println()在多线程中的异常
先上例子,赋值i=5,然后i--,用5个线程跑MyThread.javapackage sys_out_print_i;public class MyThread extends Thread{ private int i = 5; @Override public void run(){ System.out.println("i="+(i--)+" thread原创 2017-11-16 19:19:51 · 1046 阅读 · 1 评论 -
03_三个窗口卖100个车票
1.Thead方法实现package SellTicket.thread;public class SellTicketThread extends Thread { /* * 1。这里要设置成static,否则就是每个窗口都有100张 * */ private static int ticketNumber = 100; @Override public void run(原创 2017-11-15 18:41:46 · 558 阅读 · 0 评论 -
06_多线程中的This和Thread.currentThread()的区别
在自定义线程类时,如果线程类是继承java.lang.Thread的话,那么线程类就可以使用this关键字去调用继承自父类Thread的方法,this就是当前的对象。另一方面,Thread.currentThread()可以获取当前线程的引用,一般都是在没有线程对象又需要获得线程信息时通过Thread.currentThread()获取当前代码段所在线程的引用。主要看主函数中,看了转载 2017-11-21 18:17:55 · 215 阅读 · 0 评论 -
final、finally和finalize的区别
出自:JAVA程序员面试宝典(第四版)1、final修饰符(关键字)修饰类时:不能派生出新的子类,也不能作为父类被继承。一个类不能既声明abstract又声明成 final。修饰变量时:保证使用中不被改变。初始化的地方有两个:要么直接赋值,要么在构造函数中赋值。修饰的方法,只能使用,不能重写(override)2、finally异常处理时提供finally代码块,该原创 2017-08-07 13:07:28 · 202 阅读 · 0 评论 -
short s = 1;s = s+1;和short s = 1; s+=1;的区别
首先short s = 1;//这句话是没有错的s = s+1;//问题在这,前面的s是short类型的,后面的s因为要和int型的1相加,那么s+1的返回值就是int型的,int赋给short就会出现精度下降的错误提示。其次short s = 1;//这句也是没有问题的s +=1;//因为+=是操作符,s+=1 相当于:s=(s的数据类型)(s+1);即s = (short)原创 2017-08-07 12:54:54 · 678 阅读 · 0 评论 -
java中的数据类型转换
java中的数据类型java中的数据类型:数据类型转换的种类分三种:1、简单/基本数据类型之间的转换八种类型由低级到高级分别为:(byte,short,chart)->int->long->float->double。简单数据类型的转换又可以分成(1)低级到高级的自动类型转换低级类型可以直接转换为高级类型,如果是byte和short如下行代码可以直接原创 2017-08-07 11:45:15 · 232 阅读 · 0 评论 -
java中length,length(),size()区别
1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看! 这个例子来演示这两个方法和一个属性的转载 2017-08-07 11:39:36 · 209 阅读 · 0 评论 -
继承——代码块的继承
package b_extends_a;/** * Created by warning on 2017-08-01. */public class YiJuDaiMa { public static void main(String args[]){ AA a = new BB(); a.adosomething(); }}clas原创 2017-08-07 11:26:10 · 371 阅读 · 0 评论 -
继承——构造函数的继承关系
package b_extends_a;/** * Created by warning on 2017-08-01. * * 继承中的构造方法 1、子类的构造过程中必须调用其基类的构造方法。 2、子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。 2.1、使用this(argument_list)调用本类的另外构造方法。原创 2017-08-07 11:23:53 · 232 阅读 · 1 评论