`
yuyiming1986
  • 浏览: 62211 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
文章列表
1.sleep-wait-yield区别 sleep是Thread类中的一个静态方法,其定义如下,   public static void sleep(long millis)throws InterruptedException 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响,如果指定睡眠的时间到达,则从阻塞状态转变成就绪状态,等待运行。   yield只是使当前线程重新回到可执行状态,让其它同一优先级的线程先运行,所以执行yield()的线程有可能进入到可执行状态后马上又被执行。   wait是Object类中定义的方法,与 ...
    Java虚拟机通过装载,连接和初始化一个Java类型,来创建一个新的类型对象,使此类型可以被正在运行中的Java程序所使用。装载就是把二进制形式的Java类型读入Java虚拟机中;而连接就是把这种已经读入虚拟机的二进制形式 ...
    Java虚拟机运行一个程序时,程序相关的所有数据,都存放在运行时数据区中。运行时数据区包括:方法区,堆,Java栈,PC寄存器,本地方法栈。        1.方法区:在Java虚拟机中,被装载类型的信息存储在一个逻辑上被称 ...
Math.round() java.lang.Math类有两个round()方法,定义如下: public static int round(float); public static long round(double); 它们都返回整数,且采用四舍五入进行运算,运算规则如下: (1).如果参数为正数,小数点后采用四四舍五入,如果小数点后面>=0.5则整数部分加1,否则舍弃小数点后面的数据。 (2).如果参数是负数,如果小数点后面的<-0.5,则负数整数部分加上-1.否则舍弃小数点后面的数据。 测试代码: public class Main { public s ...
1.final关键字可以用来修饰类,成员方法,方法的参数,成员变量(静态和非静态的)   (1).final修饰类表示类为终类,不能被继承,String就是这样的一个类.   (2).final修饰一个成员方法时,此方法在子类中不能被覆盖.   (3).final修饰成员变量,如果final修饰的是一个基本类型,就表示这个变量被赋予的值是不可变的,即是个常量;如果final修饰的是一个对象,就表示这个变量被赋予的引用是不可变的,而所引用的对象的成员属性是可以改变的.   (4).由关键字abstract定义的抽象类含有必须由继承自它的子类实现的抽象方法,因此无法同时使用final和abs ...
  1.在JVM中存在着一个字符串池,其中保存着很多的String对象,并且可以被共享,因此能提升性能。由于String类是final的,它的值创建后就不可改变,所以不需要担心共享会导致程序混乱.   2.String var = "king"的执行过程:首先在字符串池中查找是否已经有"king"这样的一个对象,通过String类的equals()来判断;如果有,则不再创建新的对象,直接返回已存在对象的引用;如果不存在,则先创建这样的一个对象,然后将它加入到字符串池中,再将它的引用返回。这也说明了为什么String var1 = "king&q ...
类的初始化顺序 1.对于同一个类中的静态变量,静态初始化块,变量,构造块,构造函数,它们的初始化顺序依次是(静态变量,静态块),(变量,构造块),构造函数。   测试代码: class Test{ private static String staticVar = "静态变量"; private String memberVar = "成员变量"; static{ System.out.println(staticVar); System.out.println("静态块"); } ...
Java代码块 一.在Java中,使用”{}”括起来的代码称为代码块,代码块可以分为以下四种: 1.普通代码块:就是类中方法的方法体   public void xxx(){       //code   } 2.构造块:用{}裹起来的代码片段,构造块在创建对象时会被调用,每次创建对象          时都会被调用,并且优先于类构造函数执行。   {      //code   } 3.静态块:用static{}裹起来的代码片段,只会被执行一次(第一次加载此类时执行,比如说用Class.forName("")加载类时就会执行          static  b ...
Java内存管理 一.Java内存中的堆和栈    1.使用new关键字创建的对象,数组,内存空间都在堆(heap)上分配,而释放则是由Java中的垃圾回收机制决定和执行,GC为了能够正确的释放对象内存空间,需要监控每一个对象的运行状态,包 ...
1.==是比较地址,equals()是比较对象的内容   equals()方法在Object类中的定义:   public boolean equals(Object obj){   return (this == obj);   }   可知也是比较地址,但是其它的类比如说String类,覆盖了equals()方法,使得equals用来比较对象内容 ...
1.关于equals(),所有的类都继承了Object类,继承的hashcode(),toString(),equals()方法   在Object类的源码中: public boolean equals(Object obj){ return (this == obj); } 也就是说如果没有override掉对象的equals()方法,就调用对象的equals()实际上还是比较两个对象引用是否是同一个对象,比较的不是对象的内容。 public boolean equals(Object obj){ if(this == obj) return true; ...
static变量,static函数,static块 1.static变量:Java是纯面向对象的语言,也就是说,所有的方法和属性都是属于类的,不存在全局变量或者全局函数,而static变量却是一类特殊的全局变量,因为在整个应用程序中只有一份,所有类对象共享,并且生命周期是整个应用程序的生命周期。它在main()开始执行以前进行初始化,这里也包括static块. 2.static块:是一个静态变量块,里面可以调用函数或者访问类的属性,但是只能调用或者访问静态的成员函数和成员属性。也是在main()开始执行以前进行初始化.   private static int a = 10;   ...
1.在Java中A a只是定义一个A类型的变量a,没有分配内存a = new A();这才调用构造函数进行内存分配,初始化。(与C++不同的) 在Java中基本类型如(byte, int,short, long, float)都是在栈中分配内存,而对于自定义类型-类,则通过new在堆上分配内存。而通过new在堆上分配的内存却不可以通过GC自动释放内存,不需要像C/C++中那样“谁申请谁释放”. 2.变量复制   在基本类型之间,采用直接赋值来实现的。   而在类对象之间,只是赋值一个引用,即指向同一个内存块,而不会拷贝内存块。   A a = new A();   A aa = a; ...
(1).instanceof     obj instanceof ClassName/Interface     用于判断一个对象否是属于某个类或者接口类型 (2).子类赋值给直接父类或者间接父类类型,会自动进行类型转换;而从父类赋值给直接或者间接子类,需要进行强制类型转换. (3 ...
Global site tag (gtag.js) - Google Analytics